SlideShare a Scribd company logo
[object Object],Roc.Yang 2011.04
Contents Overview 1 2 Data Model Storage Model 3 4 System Architecture Read & Write 5 6 Other
Cassandra ,[object Object]
Cassandra From Facebook
Cassandra To
Cassandra – From Dynamo and Bigtable ,[object Object],[object Object],[object Object],[object Object]
Cassandra - Overview ,[object Object],[object Object]
Cassandra - Highlights ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra – Trade Offs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra From Dynamo and BigTable ,[object Object],[object Object]
Dynamo-like Features ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
BigTable-like Features ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Brewer's CAP Theorem ,[object Object],[object Object],[object Object],http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
ACID & BASE ,[object Object],[object Object],ACID:  http://en.wikipedia.org/wiki/ACID   ACID and BASE: MySQL and NoSQL :  http:// www.schoonerinfotech.com/solutions/general/what_is_nosql ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
NoSQL ,[object Object],[object Object],[object Object],[object Object],NoSQL:  http://en.wikipedia.org/wiki/NoSQL   http://nosql-database.org /
Dynamo & Bigtable ,[object Object],[object Object],[object Object],[object Object]
Dynamo & Bigtable ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Dynamo & Bigtable ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra ,[object Object]
Dynamo Architecture & Lookup ,[object Object],[object Object],[object Object]
Dynamo ,[object Object],[object Object],[object Object]
Service-Oriented Architecture
Dynamo Techniques ,[object Object],问题 采取的相关技术 数据均衡分布 改进的一致性哈希算法,数据备份 数据冲突处理 向量时钟( vector clock ) 临时故障处理 Hinted handoff (数据回传机制),参数( W,R,N )可调的弱 quorum 机制 永久故障后的恢复 Merkle 哈希树 成员资格以及错误检测 基于 gossip 的成员资格协议和错误检测
Dynamo Techniques Advantages ,[object Object]
Dynamo  数据均衡分布的问题 ,[object Object],[object Object],[object Object],[object Object]
Dynamo  数据冲突处理 ,[object Object],[object Object],[object Object]
Dynamo 临时故障处理机制 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Dynamo  永久性故障恢复 ,[object Object],[object Object]
Dynamo 成员资格及错误检测 ,[object Object]
Consistent Hashing - Dynamo ,[object Object],[object Object]
Consistent Hashing - Dynamo
Cassandra ,[object Object]
Bigtable
Bigtable ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bigtable: Data Model ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],Bigtable: Tablet location hierarchy
Bigtable:  METADATA ,[object Object],[object Object],[object Object],[object Object],[object Object]
Bigtable: Tablet Representation
Bigtable: SSTable
Cassandra ,[object Object]
Cassandra – Data Model ,[object Object],[object Object],[object Object],[object Object]
Cassandra – Data Model Columns are added and modified dynamically KEY ColumnFamily1  Name  : MailList   Type  : Simple   Sort  : Name   Name : tid1 Value : <Binary> TimeStamp : t1 Name : tid2 Value : <Binary> TimeStamp : t2 Name : tid3 Value : <Binary> TimeStamp : t3 Name : tid4 Value : <Binary> TimeStamp : t4 ColumnFamily2  Name  : WordList   Type  : Super   Sort  : Time   Name : aloha ColumnFamily3  Name  : System   Type  : Super   Sort  : Name   Name : hint1 <Column List> Name : hint2 <Column List> Name : hint3 <Column List> Name : hint4 <Column List> C1  V1 T1 C2 V2 T2 C3 V3 T3 C4 V4 T4 Name : dude C2  V2 T2 C6 V6 T6 Column Families are declared upfront SuperColumns are added and modified dynamically Columns are added and modified dynamically
Cassandra – Data Model ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra – Data Model
Cassandra – Data Model(a example)
Cassandra – Data Model http://www.divconq.com/2010/cassandra-columns-and-supercolumns-and-rows/
Cassandra – Data Model http://www.divconq.com/2010/cassandra-columns-and-supercolumns-and-rows/
Cassandra – Data Model - Cluster Cluster
Cassandra – Data Model - Cluster Cluster >  Keyspace   Partitioners: OrderPreservingPartitioner RandomPartitioner Like an RDBMS schema: Keyspace per application
Cassandra – Data Model Cluster > Keyspace >  Column Family Like an RDBMS table: Separates types in an app
Cassandra – Data Model SortedMap<Name,Value> ... Cluster > Keyspace > Column Family >  Row
Cassandra – Data Model Cluster > Keyspace > Column Family > Row >  “Column” … Name -> Value byte[] -> byte[] +version timestamp Not like an RDBMS column: Attribute of the row: each row can contain millions of different columns
Cassandra – Data Model ,[object Object],[object Object],[object Object],[object Object]
Cassandra ,[object Object]
Storage Model Key (CF1 , CF2 , CF3) Commit Log Binary serialized  Key ( CF1 , CF2 , CF3 ) Memtable ( CF1) Memtable ( CF2) Memtable ( CF2) FLUSH ,[object Object],[object Object],[object Object],Dedicated Disk <Key name><Size of key Data><Index of columns/supercolumns>< Serialized column family>  --- --- --- --- <Key name><Size of key Data><Index of columns/supercolumns>< Serialized column family> BLOCK Index  <Key Name> Offset, <Key Name> Offset K 128   Offset K 256   Offset K 384   Offset Bloom Filter (Index in memory) Data file on disk
Storage Model-Compactions K1 < Serialized data > K2 < Serialized data > K3 < Serialized data > -- -- -- Sorted K2 < Serialized data > K10 < Serialized data > K30 < Serialized data > -- -- -- Sorted K4 < Serialized data > K5 < Serialized data > K10 < Serialized data > -- -- -- Sorted MERGE  SORT K1 < Serialized data > K2 < Serialized data > K3 < Serialized data > K4 < Serialized data > K5 < Serialized data > K10 < Serialized data > K30 < Serialized data > Sorted K1  Offset K5  Offset K30  Offset Bloom Filter Loaded in memory Index File Data File D E L E T E D
Storage Model - Write ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Storage Model - Write ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Storage Model - Read ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra – Storage Cassandra 的存储机制,借鉴了 Bigtable 的设计,采用 Memtable 和 SSTable 的方式。和关系数据库一样, Cassandra 在写数据之前,也需要先记录日志,称之为 commitlog , 然后数据才会写入到 Column Family 对应的 Memtable 中,并且 Memtable 中的内容是按照 key 排序好的。 Memtable 是一种内存结构,满足一定条件后批量刷新到 磁盘上,存储为 SSTable 。这种机制,相当于缓存写回机制 (Write-back Cache) ,优势在于将随机 IO 写变成顺序 IO 写,降低大量的写操作对于存储系统的压力。 SSTable 一旦完成写入,就不可变更,只能读取。下一次  Memtable 需要刷新到一个新的 SSTable 文件中。 所以对于 Cassandra 来说,可以认为只有顺序写,没有随机写操作。   SSTable:  http://wiki.apache.org/cassandra/ArchitectureSSTable
Cassandra – Storage 因为 SSTable 数据不可更新,可能导致同一个 Column Family 的数据存储在多个 SSTable 中,这时查询数据时,需要去合并读取 Column Family 所有的 SSTable 和 Memtable ,这样到一个 Column Family 的数量很大的时候,可能导致查询效率严重下降。因此需要有一种机制能快速定位查询的 Key 落在哪些 SSTable 中,而不需要去读取合并所有 的 SSTable 。 Cassandra 采用的是 Bloom Filter 算法,通过多个 hash 函数将 key 映射到一个位图中,来快速判断这个 key 属于哪个 SSTable 。
Cassandra – Storage ,[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra ,[object Object]
System Architecture Content ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture Tombstones  Hinted handoff  Read repair  Bootstrap  Monitoring  Admin tools  Commit log  Memtable  SSTable  Indexes  Compaction  Messaging service  Gossip Failure detection  Cluster state  Partitioner  Replication  Top Layer  Middle Layer  Core Layer
System Architecture ,[object Object],[object Object],[object Object],[object Object]
System Architecture ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture ,[object Object],[object Object],[object Object],[object Object]
System Architecture Messaging Layer Cluster Membership Failure Detector Storage Layer Partitioner Replicator Cassandra API Tools
Cassandra - Architecture
System Architecture ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture -  Partitioning ,[object Object],[object Object]
System Architecture –  Partitioning (Ring Topology) a j g d RF=3 Conceptual Ring One token per node Multiple ranges per node
Conceptual Ring One token per node Multiple ranges per node System Architecture –  Partitioning (Ring Topology) a j g d RF=2
Token assignment Range adjustment Bootstrap Arrival only affects immediate neighbors System Architecture –  Partitioning (New Node) a j g d RF=3 m
Node dies Available? Hinting Handoff Achtung! Plan for this System Architecture –  Partitioning (Ring Partition) a j g d RF=3
System Architecture –  Partitioning 在 Cassandra 实际的环境,一个必须要考虑的关键问题是 Token 的选择。 Token 决定了每个节点存储的数据的分布范围,每个节点保存的数据的 key 在 ( 前一个节点 Token ,本节点 Token] 的半开半闭区间内,所有的节点形成一个首尾相接的环,所以第一个节点保存的是大于最大 Token 小于等于最小 Token 之间的数据 ; 根据采用的分区策略的不同, Token 的类型和设置原则也有所不同。  Cassandra (0.6 版本 ) 本身支持三种分区策略:   RandomPartitioner   OrderPreservingPartitioner   CollatingOrderPreservingPartitioner
System Architecture –  Partitioning ,[object Object],[object Object],[object Object]
System Architecture –  Partitioning ,[object Object],[object Object]
System Architecture –  Partitioning ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture –  Partitioning - Token ,[object Object],[object Object],[object Object]
System Architecture –  Partitioning ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture –  Snitching ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture -  Replication ,[object Object],[object Object],[object Object],[object Object]
System Architecture –  Placement ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture -  Replication ,[object Object],[object Object],[object Object]
System Architecture -  Replication ,[object Object],[object Object]
System Architecture -  Replication ,[object Object],[object Object]
System Architecture –  Partitioning
System Architecture -  Replication 1) Every node is aware of every other node in the system and hence the range they are responsible for. This is through Gossiping (not the leader). 2) A key is assigned to a node, that node is the key’s coordinator,who is responsible for replicating the item associated with the key on N-1 replicas in addition to itself. 3) Cassandra offers several replication policies and leaves it up to the application to choose one. These polices differ in the location of the selected Replicas. Rack Aware, Rack Unaware, Datacenter Aware are some of these polices. 4) Whenever a new node joins the system it contacts the Leader of the Cassandra, who tells the node what is the range for which it is responsible for replicating the associated keys. 5) Cassandra uses Zookeeper for maintaining the Leader. 6) The nodes that are responsible for the same range are called “Preference List” for that range. This terminology is borrowed from Dynamo.
System Architecture –  Replication
System Architecture -  Replication ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Architecture –  Replication(Leader) ,[object Object],[object Object],[object Object]
System Architecture -  Membership ,[object Object]
System Architecture -  Failure handling ,[object Object],[object Object]
System Architecture -  Bootstrapping ,[object Object],[object Object]
System Architecture -  Scaling ,[object Object]
System Architecture -  Scaling
System Architecture -  Local Persistence ,[object Object]
System Architecture -  Communication ,[object Object],[object Object]
Cassandra ,[object Object]
Cassandra – Read/Write ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra – Read/Write ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra - Read Repair ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra - Reads ,[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra - Read ,[object Object],[object Object],[object Object]
Read Query Closest replica Cassandra Cluster Replica A Result Replica B Replica C Result Client Read repair if digests differ Digest Response Digest Query Digest Response
Cassandra - Write ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra – Write(Properties) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra - Writes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra - Write
Cassandra - Write ,[object Object],[object Object],[object Object],[object Object]
Cassandra - Write
Cassandra – Write(Fast) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Cassandra – Write cont’d
Cassandra – Write(Compactions)
Cassandra – Gossip  Cassandra 是一个有单个节点组成的集群 – 其中没有“主”节点或单点故障 - 因此,每个节点都必须积极地确认集群中其他节点的状态。它们使用一个称为闲话( Gossip )的机制来做此事 . 每个节点每秒中都会将集群中每个节点的状态“以闲话的方式传播”到 1-3 个其他节点 . 系统为闲话数据添加了版本 , 因此一个节点的任何变更都会快速地传播遍整个集群 . 通过这种方式 , 每个节点都能知道任一其他节点的当前状态 : 是在正在自举呢 ,  还是正常运行呢 , 等。
Cassandra – Hinted Handoff  ,[object Object],[object Object]
Cassandra – Anti-entropy ,[object Object]
Cassandra ,[object Object]
Other  - Gossip
Other
Other
Other - DHT ,[object Object],[object Object],[object Object]
Other - DHT
Other  - Cassandra - Domain Models
Other  -
Other  -
Other -  Bloom filter An example of a Bloom filter, representing the set { x ,  y ,  z }. The colored arrows show the positions in the bit array that each set element is mapped to. The element  w  is not in the set {x, y, z}, because it hashes to one bit-array position containing 0. For this figure, m=18 and k=3. http://en.wikipedia.org/wiki/Bloom_filter
Other -  Bloom filter
Other -  Bloom filter Bloom filter used to speed up answers in a key-value storage system. Values are stored on a disk which has slow access times. Bloom filter decisions are much faster. However some unnecessary disk accesses are made when the filter reports a positive (in order to weed out the false positives). Overall answer speed is better with the Bloom filter than without the Bloom filter. Use of a Bloom filter for this purpose, however, does increase memory usage.  。
Other -  Timestamps and Vector Clocks ,[object Object],[object Object],[object Object],[object Object]
Other -  Vector Clocks ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Other -  CommitLog 和关系型数据库系统一样, Cassandra 也是采用的先写日志再写数据的方式,其日志称之为 Commitlog 。和 Memtable/SSTable 不一样的是, Commitlog 是 server 级别的,不是 Column Family 级别的 。 每个 Commitlog 文件的大小是固定的,称之为一个 Commitlog Segment ,目前版本 (0.5.1) 中,这个大小是 128MB ,这是硬编码在代码 (srcavargpacheassandra bommitlog.java) 中的。当一个 Commitlog 文件写满以后,会新建一个的文件。当旧的 Commitlog 文件不再需要时,会自动清除 .
Other -  CommitLog 每个 Commitlog 文件 (Segment) 都有一个固定大小(大小根据 Column Family 的数目而定)的 CommitlogHeader 结构,其中有两个重要的数组,每一个 Column Family 在这两个数组中都存在一个对应的元素。其中一个是位图数组 ( BitSet dirty ) ,如果 Column Family 对应的 Memtable 中有脏数据,则置为 1 ,否则为 0 ,这在恢复的时候可以指出哪些 Column Family 是需要利用 Commitlog 进行恢复的。另外一个是整数数组 ( int[] lastFlushedAt ) , 保存的是 Column Family 在上一次 Flush 时日志的偏移位置,恢复时则可以从这个位置读取 Commitlog 记录。通过这两个数组结构, Cassandra 可以在异 常重启服务的时候根据持久化的 SSTable 和 Commitlog 重构内存中 Memtable 的内容,也就是类似 Oracle 等关系型数据库的实例恢复  .
Other -  CommitLog 当 Memtable flush 到磁盘的 SStable 时,会将所有 Commitlog 文件的 dirty 数组对应的位清零,而在 Commitlog 达到大小限制创建新的文件 时, dirty 数组会从上一个文件中继承过来。如果一个 Commitlog 文件的 dirty 数组全部被清零,则表示这个 Commitlog 在恢复的时候不再需要,可以被清除。因此,在恢复的时候,所有的磁盘上存在的 Commitlog 文件都是需要的  . http://wiki.apache.org/cassandra/ArchitectureCommitLog   http://www.ningoo.net/html/2010/cassandra_commitlog.html
Cassandra ,[object Object]

More Related Content

What's hot

Introduction to Cassandra and datastax DSE
Introduction to Cassandra and datastax DSEIntroduction to Cassandra and datastax DSE
Introduction to Cassandra and datastax DSE
Ulises Fasoli
 
NOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQLNOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQL
Ramakant Soni
 
NOSQL Database: Apache Cassandra
NOSQL Database: Apache CassandraNOSQL Database: Apache Cassandra
NOSQL Database: Apache Cassandra
Folio3 Software
 
Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)
gdusbabek
 
Dynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and ComparisonDynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and Comparison
Grisha Weintraub
 
The No SQL Principles and Basic Application Of Casandra Model
The No SQL Principles and Basic Application Of Casandra ModelThe No SQL Principles and Basic Application Of Casandra Model
The No SQL Principles and Basic Application Of Casandra Model
Rishikese MR
 
HBaseCon 2012 | HBase Schema Design - Ian Varley, Salesforce
HBaseCon 2012 | HBase Schema Design - Ian Varley, SalesforceHBaseCon 2012 | HBase Schema Design - Ian Varley, Salesforce
HBaseCon 2012 | HBase Schema Design - Ian Varley, Salesforce
Cloudera, Inc.
 
Scalable PHP Applications With Cassandra
Scalable PHP Applications With CassandraScalable PHP Applications With Cassandra
Scalable PHP Applications With Cassandra
Andrea De Pirro
 
NoSQL databases - An introduction
NoSQL databases - An introductionNoSQL databases - An introduction
NoSQL databases - An introduction
Pooyan Mehrparvar
 
Introduction to cassandra
Introduction to cassandraIntroduction to cassandra
Introduction to cassandra
Tarun Garg
 
Hspark index conf
Hspark index confHspark index conf
Hspark index conf
Chester Chen
 
Chicago Data Summit: Apache HBase: An Introduction
Chicago Data Summit: Apache HBase: An IntroductionChicago Data Summit: Apache HBase: An Introduction
Chicago Data Summit: Apache HBase: An Introduction
Cloudera, Inc.
 
PHP and Cassandra
PHP and CassandraPHP and Cassandra
PHP and Cassandra
Dave Gardner
 
HBase In Action - Chapter 04: HBase table design
HBase In Action - Chapter 04: HBase table designHBase In Action - Chapter 04: HBase table design
HBase In Action - Chapter 04: HBase table design
phanleson
 
No SQL introduction
No SQL introductionNo SQL introduction
No SQL introduction
surabhi_dwivedi
 
NoSQL-Database-Concepts
NoSQL-Database-ConceptsNoSQL-Database-Concepts
NoSQL-Database-ConceptsBhaskar Gunda
 
7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth
Fabio Fumarola
 
No SQL and MongoDB - Hyderabad Scalability Meetup
No SQL and MongoDB - Hyderabad Scalability MeetupNo SQL and MongoDB - Hyderabad Scalability Meetup
No SQL and MongoDB - Hyderabad Scalability Meetup
Hyderabad Scalability Meetup
 
Introduction to Apache Cassandra
Introduction to Apache Cassandra Introduction to Apache Cassandra
Introduction to Apache Cassandra
Knoldus Inc.
 

What's hot (20)

Introduction to Cassandra and datastax DSE
Introduction to Cassandra and datastax DSEIntroduction to Cassandra and datastax DSE
Introduction to Cassandra and datastax DSE
 
NOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQLNOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQL
 
NOSQL Database: Apache Cassandra
NOSQL Database: Apache CassandraNOSQL Database: Apache Cassandra
NOSQL Database: Apache Cassandra
 
Cassandra
CassandraCassandra
Cassandra
 
Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)
 
Dynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and ComparisonDynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and Comparison
 
The No SQL Principles and Basic Application Of Casandra Model
The No SQL Principles and Basic Application Of Casandra ModelThe No SQL Principles and Basic Application Of Casandra Model
The No SQL Principles and Basic Application Of Casandra Model
 
HBaseCon 2012 | HBase Schema Design - Ian Varley, Salesforce
HBaseCon 2012 | HBase Schema Design - Ian Varley, SalesforceHBaseCon 2012 | HBase Schema Design - Ian Varley, Salesforce
HBaseCon 2012 | HBase Schema Design - Ian Varley, Salesforce
 
Scalable PHP Applications With Cassandra
Scalable PHP Applications With CassandraScalable PHP Applications With Cassandra
Scalable PHP Applications With Cassandra
 
NoSQL databases - An introduction
NoSQL databases - An introductionNoSQL databases - An introduction
NoSQL databases - An introduction
 
Introduction to cassandra
Introduction to cassandraIntroduction to cassandra
Introduction to cassandra
 
Hspark index conf
Hspark index confHspark index conf
Hspark index conf
 
Chicago Data Summit: Apache HBase: An Introduction
Chicago Data Summit: Apache HBase: An IntroductionChicago Data Summit: Apache HBase: An Introduction
Chicago Data Summit: Apache HBase: An Introduction
 
PHP and Cassandra
PHP and CassandraPHP and Cassandra
PHP and Cassandra
 
HBase In Action - Chapter 04: HBase table design
HBase In Action - Chapter 04: HBase table designHBase In Action - Chapter 04: HBase table design
HBase In Action - Chapter 04: HBase table design
 
No SQL introduction
No SQL introductionNo SQL introduction
No SQL introduction
 
NoSQL-Database-Concepts
NoSQL-Database-ConceptsNoSQL-Database-Concepts
NoSQL-Database-Concepts
 
7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth
 
No SQL and MongoDB - Hyderabad Scalability Meetup
No SQL and MongoDB - Hyderabad Scalability MeetupNo SQL and MongoDB - Hyderabad Scalability Meetup
No SQL and MongoDB - Hyderabad Scalability Meetup
 
Introduction to Apache Cassandra
Introduction to Apache Cassandra Introduction to Apache Cassandra
Introduction to Apache Cassandra
 

Viewers also liked

计算机程序的构造和解释
计算机程序的构造和解释计算机程序的构造和解释
计算机程序的构造和解释PL dream
 
Php internal-release 2011-04-01-v0.5.2
Php internal-release 2011-04-01-v0.5.2Php internal-release 2011-04-01-v0.5.2
Php internal-release 2011-04-01-v0.5.2
PL dream
 
余光中诗集
余光中诗集余光中诗集
余光中诗集PL dream
 
Html5 games
Html5 gamesHtml5 games
Html5 games
PL dream
 
Html5 quick-learning-quide
Html5 quick-learning-quideHtml5 quick-learning-quide
Html5 quick-learning-quidePL dream
 
Html5游戏开发实例分享
Html5游戏开发实例分享Html5游戏开发实例分享
Html5游戏开发实例分享PL dream
 
Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02PL dream
 
Html5研究小组《微周刊》第14期
Html5研究小组《微周刊》第14期Html5研究小组《微周刊》第14期
Html5研究小组《微周刊》第14期PL dream
 

Viewers also liked (9)

计算机程序的构造和解释
计算机程序的构造和解释计算机程序的构造和解释
计算机程序的构造和解释
 
Php internal-release 2011-04-01-v0.5.2
Php internal-release 2011-04-01-v0.5.2Php internal-release 2011-04-01-v0.5.2
Php internal-release 2011-04-01-v0.5.2
 
李清照
李清照李清照
李清照
 
余光中诗集
余光中诗集余光中诗集
余光中诗集
 
Html5 games
Html5 gamesHtml5 games
Html5 games
 
Html5 quick-learning-quide
Html5 quick-learning-quideHtml5 quick-learning-quide
Html5 quick-learning-quide
 
Html5游戏开发实例分享
Html5游戏开发实例分享Html5游戏开发实例分享
Html5游戏开发实例分享
 
Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02
 
Html5研究小组《微周刊》第14期
Html5研究小组《微周刊》第14期Html5研究小组《微周刊》第14期
Html5研究小组《微周刊》第14期
 

Similar to Storage cassandra

NoSql Database
NoSql DatabaseNoSql Database
NoSql Database
Suresh Parmar
 
Appache Cassandra
Appache Cassandra  Appache Cassandra
Appache Cassandra
nehabsairam
 
Introduciton to Apache Cassandra for Java Developers (JavaOne)
Introduciton to Apache Cassandra for Java Developers (JavaOne)Introduciton to Apache Cassandra for Java Developers (JavaOne)
Introduciton to Apache Cassandra for Java Developers (JavaOne)
zznate
 
Nyc summit intro_to_cassandra
Nyc summit intro_to_cassandraNyc summit intro_to_cassandra
Nyc summit intro_to_cassandra
zznate
 
Using Cassandra with your Web Application
Using Cassandra with your Web ApplicationUsing Cassandra with your Web Application
Using Cassandra with your Web Applicationsupertom
 
Cassndra (4).pptx
Cassndra (4).pptxCassndra (4).pptx
Cassndra (4).pptx
NikhilAmauriya
 
Cassandra implementation for collecting data and presenting data
Cassandra implementation for collecting data and presenting dataCassandra implementation for collecting data and presenting data
Cassandra implementation for collecting data and presenting data
Chen Robert
 
On Rails with Apache Cassandra
On Rails with Apache CassandraOn Rails with Apache Cassandra
On Rails with Apache Cassandra
Stu Hood
 
Cassandra Talk: Austin JUG
Cassandra Talk: Austin JUGCassandra Talk: Austin JUG
Cassandra Talk: Austin JUG
Stu Hood
 
Cassandra's Sweet Spot - an introduction to Apache Cassandra
Cassandra's Sweet Spot - an introduction to Apache CassandraCassandra's Sweet Spot - an introduction to Apache Cassandra
Cassandra's Sweet Spot - an introduction to Apache Cassandra
Dave Gardner
 
Cassandra - A decentralized storage system
Cassandra - A decentralized storage systemCassandra - A decentralized storage system
Cassandra - A decentralized storage system
Arunit Gupta
 
Why Cassandra?
Why Cassandra?Why Cassandra?
Why Cassandra?
Tayfun Sevimli
 
Apache Cassandra, part 1 – principles, data model
Apache Cassandra, part 1 – principles, data modelApache Cassandra, part 1 – principles, data model
Apache Cassandra, part 1 – principles, data model
Andrey Lomakin
 
Cassandra
CassandraCassandra
Cassandra
Upaang Saxena
 
NoSQL Data Stores in Research and Practice - ICDE 2016 Tutorial - Extended Ve...
NoSQL Data Stores in Research and Practice - ICDE 2016 Tutorial - Extended Ve...NoSQL Data Stores in Research and Practice - ICDE 2016 Tutorial - Extended Ve...
NoSQL Data Stores in Research and Practice - ICDE 2016 Tutorial - Extended Ve...
Felix Gessert
 
Apache cassandra
Apache cassandraApache cassandra
Apache cassandra
SumeraHangi
 
Schemaless Databases
Schemaless DatabasesSchemaless Databases
Schemaless Databases
Dan Gunter
 
Cassandra - A Distributed Database System
Cassandra - A Distributed Database System Cassandra - A Distributed Database System
Cassandra - A Distributed Database System
Md. Shohel Rana
 
Cassandra tutorial
Cassandra tutorialCassandra tutorial
Cassandra tutorial
Ramakrishna kapa
 

Similar to Storage cassandra (20)

NoSql Database
NoSql DatabaseNoSql Database
NoSql Database
 
Appache Cassandra
Appache Cassandra  Appache Cassandra
Appache Cassandra
 
No sql
No sqlNo sql
No sql
 
Introduciton to Apache Cassandra for Java Developers (JavaOne)
Introduciton to Apache Cassandra for Java Developers (JavaOne)Introduciton to Apache Cassandra for Java Developers (JavaOne)
Introduciton to Apache Cassandra for Java Developers (JavaOne)
 
Nyc summit intro_to_cassandra
Nyc summit intro_to_cassandraNyc summit intro_to_cassandra
Nyc summit intro_to_cassandra
 
Using Cassandra with your Web Application
Using Cassandra with your Web ApplicationUsing Cassandra with your Web Application
Using Cassandra with your Web Application
 
Cassndra (4).pptx
Cassndra (4).pptxCassndra (4).pptx
Cassndra (4).pptx
 
Cassandra implementation for collecting data and presenting data
Cassandra implementation for collecting data and presenting dataCassandra implementation for collecting data and presenting data
Cassandra implementation for collecting data and presenting data
 
On Rails with Apache Cassandra
On Rails with Apache CassandraOn Rails with Apache Cassandra
On Rails with Apache Cassandra
 
Cassandra Talk: Austin JUG
Cassandra Talk: Austin JUGCassandra Talk: Austin JUG
Cassandra Talk: Austin JUG
 
Cassandra's Sweet Spot - an introduction to Apache Cassandra
Cassandra's Sweet Spot - an introduction to Apache CassandraCassandra's Sweet Spot - an introduction to Apache Cassandra
Cassandra's Sweet Spot - an introduction to Apache Cassandra
 
Cassandra - A decentralized storage system
Cassandra - A decentralized storage systemCassandra - A decentralized storage system
Cassandra - A decentralized storage system
 
Why Cassandra?
Why Cassandra?Why Cassandra?
Why Cassandra?
 
Apache Cassandra, part 1 – principles, data model
Apache Cassandra, part 1 – principles, data modelApache Cassandra, part 1 – principles, data model
Apache Cassandra, part 1 – principles, data model
 
Cassandra
CassandraCassandra
Cassandra
 
NoSQL Data Stores in Research and Practice - ICDE 2016 Tutorial - Extended Ve...
NoSQL Data Stores in Research and Practice - ICDE 2016 Tutorial - Extended Ve...NoSQL Data Stores in Research and Practice - ICDE 2016 Tutorial - Extended Ve...
NoSQL Data Stores in Research and Practice - ICDE 2016 Tutorial - Extended Ve...
 
Apache cassandra
Apache cassandraApache cassandra
Apache cassandra
 
Schemaless Databases
Schemaless DatabasesSchemaless Databases
Schemaless Databases
 
Cassandra - A Distributed Database System
Cassandra - A Distributed Database System Cassandra - A Distributed Database System
Cassandra - A Distributed Database System
 
Cassandra tutorial
Cassandra tutorialCassandra tutorial
Cassandra tutorial
 

Recently uploaded

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 

Recently uploaded (20)

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 

Storage cassandra

  • 1.
  • 2. Contents Overview 1 2 Data Model Storage Model 3 4 System Architecture Read & Write 5 6 Other
  • 3.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 32.
  • 34.
  • 35.
  • 36.
  • 37.
  • 40.
  • 41.
  • 42. Cassandra – Data Model Columns are added and modified dynamically KEY ColumnFamily1 Name : MailList Type : Simple Sort : Name Name : tid1 Value : <Binary> TimeStamp : t1 Name : tid2 Value : <Binary> TimeStamp : t2 Name : tid3 Value : <Binary> TimeStamp : t3 Name : tid4 Value : <Binary> TimeStamp : t4 ColumnFamily2 Name : WordList Type : Super Sort : Time Name : aloha ColumnFamily3 Name : System Type : Super Sort : Name Name : hint1 <Column List> Name : hint2 <Column List> Name : hint3 <Column List> Name : hint4 <Column List> C1 V1 T1 C2 V2 T2 C3 V3 T3 C4 V4 T4 Name : dude C2 V2 T2 C6 V6 T6 Column Families are declared upfront SuperColumns are added and modified dynamically Columns are added and modified dynamically
  • 43.
  • 45. Cassandra – Data Model(a example)
  • 46. Cassandra – Data Model http://www.divconq.com/2010/cassandra-columns-and-supercolumns-and-rows/
  • 47. Cassandra – Data Model http://www.divconq.com/2010/cassandra-columns-and-supercolumns-and-rows/
  • 48. Cassandra – Data Model - Cluster Cluster
  • 49. Cassandra – Data Model - Cluster Cluster > Keyspace Partitioners: OrderPreservingPartitioner RandomPartitioner Like an RDBMS schema: Keyspace per application
  • 50. Cassandra – Data Model Cluster > Keyspace > Column Family Like an RDBMS table: Separates types in an app
  • 51. Cassandra – Data Model SortedMap<Name,Value> ... Cluster > Keyspace > Column Family > Row
  • 52. Cassandra – Data Model Cluster > Keyspace > Column Family > Row > “Column” … Name -> Value byte[] -> byte[] +version timestamp Not like an RDBMS column: Attribute of the row: each row can contain millions of different columns
  • 53.
  • 54.
  • 55.
  • 56. Storage Model-Compactions K1 < Serialized data > K2 < Serialized data > K3 < Serialized data > -- -- -- Sorted K2 < Serialized data > K10 < Serialized data > K30 < Serialized data > -- -- -- Sorted K4 < Serialized data > K5 < Serialized data > K10 < Serialized data > -- -- -- Sorted MERGE SORT K1 < Serialized data > K2 < Serialized data > K3 < Serialized data > K4 < Serialized data > K5 < Serialized data > K10 < Serialized data > K30 < Serialized data > Sorted K1 Offset K5 Offset K30 Offset Bloom Filter Loaded in memory Index File Data File D E L E T E D
  • 57.
  • 58.
  • 59.
  • 60. Cassandra – Storage Cassandra 的存储机制,借鉴了 Bigtable 的设计,采用 Memtable 和 SSTable 的方式。和关系数据库一样, Cassandra 在写数据之前,也需要先记录日志,称之为 commitlog , 然后数据才会写入到 Column Family 对应的 Memtable 中,并且 Memtable 中的内容是按照 key 排序好的。 Memtable 是一种内存结构,满足一定条件后批量刷新到 磁盘上,存储为 SSTable 。这种机制,相当于缓存写回机制 (Write-back Cache) ,优势在于将随机 IO 写变成顺序 IO 写,降低大量的写操作对于存储系统的压力。 SSTable 一旦完成写入,就不可变更,只能读取。下一次 Memtable 需要刷新到一个新的 SSTable 文件中。 所以对于 Cassandra 来说,可以认为只有顺序写,没有随机写操作。 SSTable: http://wiki.apache.org/cassandra/ArchitectureSSTable
  • 61. Cassandra – Storage 因为 SSTable 数据不可更新,可能导致同一个 Column Family 的数据存储在多个 SSTable 中,这时查询数据时,需要去合并读取 Column Family 所有的 SSTable 和 Memtable ,这样到一个 Column Family 的数量很大的时候,可能导致查询效率严重下降。因此需要有一种机制能快速定位查询的 Key 落在哪些 SSTable 中,而不需要去读取合并所有 的 SSTable 。 Cassandra 采用的是 Bloom Filter 算法,通过多个 hash 函数将 key 映射到一个位图中,来快速判断这个 key 属于哪个 SSTable 。
  • 62.
  • 63.
  • 64.
  • 65. System Architecture Tombstones Hinted handoff Read repair Bootstrap Monitoring Admin tools Commit log Memtable SSTable Indexes Compaction Messaging service Gossip Failure detection Cluster state Partitioner Replication Top Layer Middle Layer Core Layer
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71. System Architecture Messaging Layer Cluster Membership Failure Detector Storage Layer Partitioner Replicator Cassandra API Tools
  • 73.
  • 74.
  • 75.
  • 76. System Architecture – Partitioning (Ring Topology) a j g d RF=3 Conceptual Ring One token per node Multiple ranges per node
  • 77. Conceptual Ring One token per node Multiple ranges per node System Architecture – Partitioning (Ring Topology) a j g d RF=2
  • 78. Token assignment Range adjustment Bootstrap Arrival only affects immediate neighbors System Architecture – Partitioning (New Node) a j g d RF=3 m
  • 79. Node dies Available? Hinting Handoff Achtung! Plan for this System Architecture – Partitioning (Ring Partition) a j g d RF=3
  • 80. System Architecture – Partitioning 在 Cassandra 实际的环境,一个必须要考虑的关键问题是 Token 的选择。 Token 决定了每个节点存储的数据的分布范围,每个节点保存的数据的 key 在 ( 前一个节点 Token ,本节点 Token] 的半开半闭区间内,所有的节点形成一个首尾相接的环,所以第一个节点保存的是大于最大 Token 小于等于最小 Token 之间的数据 ; 根据采用的分区策略的不同, Token 的类型和设置原则也有所不同。 Cassandra (0.6 版本 ) 本身支持三种分区策略: RandomPartitioner OrderPreservingPartitioner CollatingOrderPreservingPartitioner
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92. System Architecture – Partitioning
  • 93. System Architecture - Replication 1) Every node is aware of every other node in the system and hence the range they are responsible for. This is through Gossiping (not the leader). 2) A key is assigned to a node, that node is the key’s coordinator,who is responsible for replicating the item associated with the key on N-1 replicas in addition to itself. 3) Cassandra offers several replication policies and leaves it up to the application to choose one. These polices differ in the location of the selected Replicas. Rack Aware, Rack Unaware, Datacenter Aware are some of these polices. 4) Whenever a new node joins the system it contacts the Leader of the Cassandra, who tells the node what is the range for which it is responsible for replicating the associated keys. 5) Cassandra uses Zookeeper for maintaining the Leader. 6) The nodes that are responsible for the same range are called “Preference List” for that range. This terminology is borrowed from Dynamo.
  • 94. System Architecture – Replication
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110. Read Query Closest replica Cassandra Cluster Replica A Result Replica B Replica C Result Client Read repair if digests differ Digest Response Digest Query Digest Response
  • 111.
  • 112.
  • 113.
  • 115.
  • 117.
  • 118. Cassandra – Write cont’d
  • 120. Cassandra – Gossip Cassandra 是一个有单个节点组成的集群 – 其中没有“主”节点或单点故障 - 因此,每个节点都必须积极地确认集群中其他节点的状态。它们使用一个称为闲话( Gossip )的机制来做此事 . 每个节点每秒中都会将集群中每个节点的状态“以闲话的方式传播”到 1-3 个其他节点 . 系统为闲话数据添加了版本 , 因此一个节点的任何变更都会快速地传播遍整个集群 . 通过这种方式 , 每个节点都能知道任一其他节点的当前状态 : 是在正在自举呢 , 还是正常运行呢 , 等。
  • 121.
  • 122.
  • 123.
  • 124. Other - Gossip
  • 125. Other
  • 126. Other
  • 127.
  • 129. Other - Cassandra - Domain Models
  • 132. Other - Bloom filter An example of a Bloom filter, representing the set { x , y , z }. The colored arrows show the positions in the bit array that each set element is mapped to. The element w is not in the set {x, y, z}, because it hashes to one bit-array position containing 0. For this figure, m=18 and k=3. http://en.wikipedia.org/wiki/Bloom_filter
  • 133. Other - Bloom filter
  • 134. Other - Bloom filter Bloom filter used to speed up answers in a key-value storage system. Values are stored on a disk which has slow access times. Bloom filter decisions are much faster. However some unnecessary disk accesses are made when the filter reports a positive (in order to weed out the false positives). Overall answer speed is better with the Bloom filter than without the Bloom filter. Use of a Bloom filter for this purpose, however, does increase memory usage. 。
  • 135.
  • 136.
  • 137. Other - CommitLog 和关系型数据库系统一样, Cassandra 也是采用的先写日志再写数据的方式,其日志称之为 Commitlog 。和 Memtable/SSTable 不一样的是, Commitlog 是 server 级别的,不是 Column Family 级别的 。 每个 Commitlog 文件的大小是固定的,称之为一个 Commitlog Segment ,目前版本 (0.5.1) 中,这个大小是 128MB ,这是硬编码在代码 (srcavargpacheassandra bommitlog.java) 中的。当一个 Commitlog 文件写满以后,会新建一个的文件。当旧的 Commitlog 文件不再需要时,会自动清除 .
  • 138. Other - CommitLog 每个 Commitlog 文件 (Segment) 都有一个固定大小(大小根据 Column Family 的数目而定)的 CommitlogHeader 结构,其中有两个重要的数组,每一个 Column Family 在这两个数组中都存在一个对应的元素。其中一个是位图数组 ( BitSet dirty ) ,如果 Column Family 对应的 Memtable 中有脏数据,则置为 1 ,否则为 0 ,这在恢复的时候可以指出哪些 Column Family 是需要利用 Commitlog 进行恢复的。另外一个是整数数组 ( int[] lastFlushedAt ) , 保存的是 Column Family 在上一次 Flush 时日志的偏移位置,恢复时则可以从这个位置读取 Commitlog 记录。通过这两个数组结构, Cassandra 可以在异 常重启服务的时候根据持久化的 SSTable 和 Commitlog 重构内存中 Memtable 的内容,也就是类似 Oracle 等关系型数据库的实例恢复 .
  • 139. Other - CommitLog 当 Memtable flush 到磁盘的 SStable 时,会将所有 Commitlog 文件的 dirty 数组对应的位清零,而在 Commitlog 达到大小限制创建新的文件 时, dirty 数组会从上一个文件中继承过来。如果一个 Commitlog 文件的 dirty 数组全部被清零,则表示这个 Commitlog 在恢复的时候不再需要,可以被清除。因此,在恢复的时候,所有的磁盘上存在的 Commitlog 文件都是需要的 . http://wiki.apache.org/cassandra/ArchitectureCommitLog http://www.ningoo.net/html/2010/cassandra_commitlog.html
  • 140.

Editor's Notes

  1. http://www.slideshare.net/egpeters/nosql-cassandra-talk-for-seattle-tech-startups-31010-3399002(slides 3)
  2. Dynamo 中的每个节点就是 Dynamo 的一个成员,亚马逊为了使系统间数据的转发更加迅速(减少数据传送时延,增加响应速度),规定每个成员节点都要保存其他节点的路由信息。由于机器或人为的因素,系统中成员的加入或撤离时常发生。为了保证每个节点保存的都是 Dynamo 中最新的成员信息,所有节点每隔固定时间( 1 秒)就要利用一种类似于 gossip (闲聊)机制 [1] 的方式从其他节点中任意选择一个与之进行通信。连接成功的话双方就交换各自保存的包括存储数据情况、路由信息在内的成员信息
  3. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  4. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  5. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  6. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  7. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod(slide 7)
  8. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod(slide 8)
  9. http://spyced.blogspot.com/2009/05/consistent-hashing-vs-order-preserving.html http://ria101.wordpress.com/2010/02/22/cassandra-randompartitioner-vs-orderpreservingpartitioner/ http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod (slide 6)
  10. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  11. http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo (slide 23/24)
  12. http://wiki.apache.org/cassandra/ReadRepair
  13. http://wiki.apache.org/cassandra/ReadRepair
  14. http://wiki.apache.org/cassandra/ReadRepair
  15. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  16. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  17. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  18. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  19. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  20. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  21. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  22. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  23. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  24. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  25. Cluster is a logical storage ring Node placement divides the ring into ranges that represent start/stop points for keys Automatic or manual token assignment (use another slide for that) Closer together means less responsibility and data
  26. Token
  27. Bootstrapping
  28. Hinting not designed for long failures.
  29. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  30. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  31. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  32. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  33. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  34. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  35. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  36. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  37. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  38. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  39. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  40. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  41. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  42. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  43. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  44. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  45. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  46. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  47. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  48. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  49. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  50. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  51. http://wiki.apache.org/cassandra/ReadRepair
  52. http://wiki.apache.org/cassandra/ReadRepair
  53. http://wiki.apache.org/cassandra/ReadRepair
  54. Sstable proliferation degrades performance.
  55. http://wiki.apache.org/cassandra/ReadRepair
  56. http://wiki.apache.org/cassandra/ReadRepair
  57. http://wiki.apache.org/cassandra/ReadRepair
  58. http://wiki.apache.org/cassandra/ReadRepair
  59. http://wiki.apache.org/cassandra/ReadRepair
  60. http://wiki.apache.org/cassandra/ReadRepair
  61. http://wiki.apache.org/cassandra/ReadRepair
  62. http://wiki.apache.org/cassandra/ReadRepair
  63. http://wiki.apache.org/cassandra/ReadRepair
  64. http://wiki.apache.org/cassandra/ReadRepair
  65. http://wiki.apache.org/cassandra/ReadRepair
  66. http://wiki.apache.org/cassandra/ReadRepair
  67. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  68. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  69. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  70. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  71. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  72. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  73. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  74. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  75. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  76. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  77. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  78. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  79. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  80. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  81. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .
  82. http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod ( slide 9) http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo( slide 22) 或许是 Cassandra 在后期做了调整 , 在上面第一个 ppt 以及原始的 Paper 中 , 都是基于 Key 的原子性 , 但是 ,Jonathan Ellis(Cassandra 的项目负责人 ) 在后面一个 ppt 中改成了基于 ColumnFamily 的原子性 , 本 ppt 采纳后者 .