当前位置: 首页 > 知识库问答 >
问题:

Cassandra分区vs NoSql分区

段干博明
2023-03-14

我理解了与Cassandra分区键、复合键、集群键的区别。但是没有找到足够的信息来理解cassandra中如何处理分区
在cassandra中,分区密钥的范围像分区/碎片一样存储在节点上。我的理解是否正确
每个分区键在数据库中是否有不同的文件(在系统级别)。。?如果是这样的话,读取速度不是会变慢吗
如果每个分区键在数据库中没有不同的文件。怎么处理的。。?

共有1个答案

施俊哲
2023-03-14

数据以称为分区的宽行存储在Cassandra中。每一行都有一个用于标识该分区的分区键。为了在集群中分布数据,Cassandra使用了分区器,它基本上是计算分区键的散列,数据基于这些值分布在集群中。Cassandra中的默认分区器是Murruel3Partitioner。

在操作系统级别,数据存储在sstables文件中。一个分区可以分布在多个SSTABLE上。这就是为什么您还需要压缩,这是整合这些SSTable的过程,这样您的分区就不会分布在很多SSTable上。减少分区分布的SSA表的数量也将提高读取时间。值得注意的是,sstables是不可变的。

我建议大家阅读这篇文章,尤其是《卡桑德拉如何读写数据》。

 类似资料:
  • 假设我有一张桌子,像这样: 这遵循了所需的Cassandra模式,跨分区分布良好(假设默认的Murmur3哈希分区器)。 但是,我也需要(很少)按时间顺序执行范围查询。这在Cassandra中似乎是不可能的。实际上,我确实需要按组访问数据,所以是可以接受的。由于似乎没有办法让辅助索引有多个列,我想正确的做法是将其反规范化,如下所示: 除了< code>group基数很低,比方说< code>('A

  • 我正在使用带有datastax驱动程序的Cassandra数据库。我需要从Cassandra批量读取2000行的内容。我的用例是,我在请求中获取id列表,这些id是我在Cassandra中的分区键。我想知道生成2000个线程并从Cassandra并行获取数据是否是个好主意(在这种情况下,读取数据将有效,因为它只到达一个节点),或者是否有可能找到一种方法来对存在于同一节点中的id进行分组,以便我可以

  • 我正在尝试将以下结构存储在卡桑德拉中。 上面的大多数查询是 这就是为什么将()设置为主键很有用的原因。 根据docu,Cassandra的默认分区键是主键的第一列-在我的例子中是,但我想在Cassandr集群上均匀分布数据,我不能允许一个中的所有数据只存储在一个分区中,因为有些商店有10M条记录,有些只有1k条记录。 我可以设置()作为分区键,然后我可以达到Cassandra集群中记录的统一分布。

  • 作为卡桑德拉数据分区的后续,我得到了vNodes的想法。感谢“西蒙·丰塔纳·奥斯卡森” 当我尝试使用vNodes进行数据分区时,我有几个问题, 我尝试观察2节点中的分区分布() 因此,根据我在两个节点中的观察,随着一个范围的扩展,节点61的值从-9207297847862311651到-9185516104965672922。。。 注意:分区范围从9039572936575206977到90199

  • 我正在学习Cassandra,并有一个关于分区/集群键的问题。 我有一个表,存储数据的股份,如行业的分支,最近6/12个月的业绩,名称等。 该表如下所示: 多谢了,伙计们

  • 有人能详细说明一下使用领域吗。确实需要两者都实现两者。?