首页 » 测绘 » cassandra架构

cassandra架构

***preload_row_cache**-它指定是否要预先填充行缓存。

**如何插入数据**数据的插入可以使用CQLINSERT命令,CQLCOPY命令,CSV文件或sstableloader。

吸引我的特性吸引我选择Cassandra作为NoSQL的原因主要有如下三点:极高的读写性能Cassandra写数据时,首先会将请求写入CommitLog以确保数据不会丢失,然后再写入内存中的Memtable,超过内存容量后再将内存中的数据刷到磁盘的SSTable,并定期异步对SSTable做数据合并(Compaction)以减少数据读取时的查询时间。

可见,该机制有利于减少最终一致的时间窗口。

对Cassandra的一个写操作,会被复制到其它节点上,而对Cassandra的读操作,也会被路由到某个节点上面去读取,因此,扩展一个Cassandra集群来说,可以简单地通过增加集群节点即可,不同于HBase的Master/Slave架构,Cassandra集群不存在单点故障,在高可用性及易扩展性方面,优势明显。

更多信息,参考ApacheCassandra2.2–为LeveledCompaction引导性能提升。

**简单的数据分发**Cassandra中的数据分发非常简单,因为它可以灵活地通过在多个数据中心复制数据来分发所需的数据。

所以对于Cassandra来说,可以认为只有顺序写,没有随机写操作。

整理ppt5Cassandra的数据模型是基于列族(ColumnFamily)的四维或五维模型。

Cassandra不是一个数据库,它是一个混合型的非关系的数据库。

这是一个惊人的效率提升,特别是在大型部署上。

KeysCached。

写前读,尤其是大型的分布式系统中,可能导致读取性能的延迟和其他问题。

数据复制策略有两种,一种是SimpleStrategy,适合一个数据中心的情况,第一份数据放在Partitioner确定的节点,后面的放在顺时针找到的节点上,它不考虑跨数据中心和机架的复制。

Replicationreplicationfactor决定了每次写复制几次,比如如果是3(通常production会选择3个,当然我也见过一共7台机器就把copy定义为7的),就意味着写的结果会存3个copy。

在Emps中,employeeID作为key,employee的name,birthday和city作为column;在Deps中,departmentID作为key,departmentname作为column。

你也可以使用time-to-live(生成时间)来标记一条Cassandra的记录。

安装Eclipse3.53在Eclipse中安装http://subclipse.tigris.org/update_1.6.x在Eclipse的菜单选择:Help–>InstallNewSoftware整合Cassandra与HadoopMapReduce看到这个标题,大家一定会问了。

银行和其他金融机构正在使用C*存储大量金融数据。

,”

AtCassandraSummitopeningtoday,AviKivityandDorLaor(whohadpreviouslywrittenKVMandOSv)announcedScyllaDB—anopen-sourceC++rewriteofCassandra,thepopularNoSQLdatabase.ScyllaDBclaimstoachieveawhopping10timesmorethroughputpernodethantheoriginalJavacode,withsub-millisecond99%ilelatency.Theyevenmeasured1milliontransactionspersecondonasinglenode.TheperformanceofthenewcodeisattributedtowritingitinSeastar—aC++frameworkforwritingcomplexasynchronousapplicationswithoptimalperformanceonmodernhardware.,Cassandraversion:apache-cassandra-2.1.3OS:Ubuntu14.10进入cassandra命令行$./cassandra-cli**查看节点状态**$./nodetoolstatusDatacenter:datacenter1=======================Status=Up/Down|/State=Normal/Leaving/Joining/Moving\\–AddressLoadTokensOwnsHostIDRackUN127.0.0.171.23KB256?61129023-a5c0-4331-98ce-7cb24d6ddb28rack1Note:Non-systemkeyspacesdonthavethesamereplicationsettings,effectiveownershipinformationismeaningless**创建Keyspace:**default@unknowncreatekeyspacemykeyspacewithstrategy_options=andplacement_strategy=org.apache.cassandra.locator.SimpleStrategy;进入刚刚创建的keyspace:default@unknownusemykeyspace;创建一个列簇default@mykeyspacecreatecolumnfamilyUser;查看keyspace的详细信息default@mykeyspacedescribemykeyspace;WARNING:CQL3tablesareintentionallyomittedfromdescribeoutput.Seehttps://issues.apache.org/jira/browse/CASSANDRA-4377fordetails.Keyspace:mykeyspace:ReplicationStrategy:org.apache.cassandra.locator.SimpleStrategyDurableWrites:trueOptions:replication_factor:1ColumnFamilies:ColumnFamily:UserKeyValidationClass:org.apache.cassandra.db.marshal.BytesTypeDefaultcolumnvaluevalidator:org.apache.cassandra.db.marshal.BytesTypeCellssortedby:org.apache.cassandra.db.marshal.BytesTypeGCgraceseconds:864000Compactionmin/maxthresholds:4/32Readrepairchance:0.0DCLocalReadrepairchance:0.1Caching:KEYS_ONLYDefaulttimetolive:0BloomFilterFPchance:defaultIndexinterval:defaultSpeculativeRetry:NONEBuiltindexes:CompactionStrategy:org.apache.cassandra.db.compaction.SizeTieredCompactionStrategyCompressionOptions:sstable_compression:org.apache.cassandra.io.compress.LZ4Compressor插入一行数据default@mykeyspacesetUsermefname=Lynch;org.apache.cassandra.serializers.MarshalException:cannotparsefnameashexbytes报错了,汗.解决:default@mykeyspacesetUserascii(me)ascii(fname)=ascii(Lynch);Valueinserted.Elapsedtime:133msec(s).查询column的行数default@mykeyspacecountUserascii(me);2cells查询某个columnfamily的值default@mykeyspacegetUserascii(me);=>(name=656d61696c,value=lynch@gmail.com,timestamp=1437685470045000)=>(name=666e616d65,value=Lynch,timestamp=1437685481604000)Returned2results.Elapsedtime:31msec(s).删除一行:default@mykeyspacedelUserascii(me)ascii(email);cellremoved.Elapsedtime:32msec(s).default@mykeyspacegetUserascii(me);=>(name=666e616d65,value=Lynch,timestamp=1437685481604000)Returned1results.Elapsedtime:2.78msec(s。

总结Cassandra实际来说是Amazon之Dynamo的开源版本,其设计采用了多项新算法和架构。

NetworkTopologyStrategyNetworkTopologyStrategy:它在OldNetworkTopologyStrategy的基础上,可以更加详细地指定每一个数据中心需要备份的数据份数。

它虽然有多的优点,但国内使用的公司貌似不多,远没有Hbase和MongoDB火,从百度指数上可以明显看到这三个系统在国内的热度对比。

SELECT*FROMusers;什么是Keyspaces?Keyspaces是Cassandra中数据最外层/顶层的容器,类似于关系型数据库的schema的概念。

它是一个网络社交云计算方面理想的数据库。

当达到阀值后,Memtable中的数据和索引会被放到一个队列中,然后flush到磁盘,可以使用memtableflushqueue_size参数来指定队列的长度。

所以cassandra客户端和服务器之间不需要太多的连接,因为发送一个请求是很快的,只要一个线程不断监听响应就可以了。

**数据是如何保持的?**Cassandraprocessesdataatseveralstagesonthewritepath.CompactiontomaintainhealthySSTablesisthelaststepinthewritepathprocess.Cassandra写过程把数据存储到一个叫做SSTables的结构里。

确定要分配给此虚拟节点(vnode)的令牌范围数。

因此需要有一种机制能快速定位查询的Key落在哪些SSTable中,而不需要去读取合并所有的SSTable。

副本因子为2表示每一行有两个副本,每个副本位于不同的节点上。

发表评论