timestamp must be consistent across the application otherwise earlier changes may overwrite newer ones.
--------
Column is immutable, which prevents all kinds of confusion in a multithreaded environment.
-----------
compress data in the same column family together). 压缩数据以减少磁盘io时间。
-----------
column family和row对应(可以多对一),根据row的key属性排序
Related columns, those that you'll access together, should be kept within the same column family.
similar to the way you create tables in an RDBMS
------------------------
A row in a regular column family is basically a sorted map of column names to column values;(已排序的)
为何要有row的概念?
-----------
通常一个keyspace存储一个应用的数据。
For each keyspace there are one or more column families.
similar to how you create databases on an RDBMS server
-----------------
Cassandra不像数据库,不能在查询的时候指定排序规则,排序在数据存入时便完成了,并且始终保持在这个已排序的状态。
-------------
因为SSTable数据不可更新,可能导致同一个Column Family的数据存储在多个SSTable中,
这时查询数据时,需要去合并读取Column Family所有的SSTable和Memtable,这样到一个Column Family的数量很大的时候,
可能导致查询效率严重下降。因此需要有一种机制能快速定位查询的Key落在哪些SSTable中,而不需要去读取合并所有的SSTable。
Cassandra采用的是Bloom Filter算法,通过多个hash函数将key映射到一个位图中,来快速判断这个key属于哪个SSTable。
根据SSTableWriter.java看,一个SSTableWriter一个BloomFilter