Answers:
我刚刚从RocksDB FAQ中发现了一些有趣的信息。(RocksDB是KV商店。)
以下是一些相关摘录。
问:列族有什么用?
答:使用列族的最常见原因:(1)在数据的不同部分使用不同的压缩设置,比较器,压缩类型,合并运算符或压缩过滤器;(2)删除列族以删除其数据;(3)一列族用于存储元数据,另一列族用于存储数据。
问:将数据存储在多个列族和多个rockdb数据库中有什么区别?
答:主要区别将是备份,原子写入和写入性能。使用多个数据库的优点:数据库是备份或检查点的单位。将数据库复制到另一主机比使用列族更容易。使用多个列族的优点:(1)在一个数据库中,跨多个列族的写批处理是原子的。您无法使用多个RocksDB数据库来实现。(2)如果发出对WAL的同步写入,那么太多的数据库可能会损害性能。
问:我有不同的密钥空间。我应该使用前缀将它们分开,还是使用不同的列族?
答:如果每个键空间都足够大,则最好将它们放在不同的列族中。如果它很小,则应考虑将多个键空间打包到一个列族中,以避免维护太多列族的麻烦。
我知道您不是在寻找与SQL并行的方法,但是本文只是简单地解释了计划的目的和列家族的好处。
从RubyScale 的SQL角度理解Cassandra数据模型:
那么,什么是柱族?只是一个表前缀?列族具有许多与之相关的设置,这些设置可以改变其行为。 有键的缓存设置(在此示例中为UUID),在整个行(在此示例中为整个表)的缓存设置,最重要的是排序。在Cassandra中,没有OFFSET,只有LIMIT和BETWEEN的等效项。在此示例中,列名只是字符串,但它们也可以是整数或时间戳记,并且始终按排序顺序存储。一列族可能具有按时间戳排序的数据,在其中您可以按时间片查询事物,而另一列可能是通讯簿数据,在其中您可以按字母顺序查询事物。事实之后,您要做的唯一排序是反转特定切片。