Cassandra 中的高基数和低基数

2023-11-23

我不断遇到这些术语:high cardinality and low cardinality in Cassandra.

我不明白它们到底是什么意思。它们对查询有什么影响以及首选是什么。 请举例说明,因为这样很容易理解。


X 的基数只不过是组成 X 的元素的数量。 在 Cassandra 中,分区键基数对于分区数据非常重要。

由于分区键负责数据在集群中的分布,因此选择低基数键可能会导致数据不分布的情况。

想象一下你有一个集群20存储注释的节点——复制因子(RF)是2。每个评论都有自己的投票,从 1 到 5。现在,由于您希望通过投票轻松检索评论,因此您可能会选择投票作为分区键。

CREATE TABLE comments(vote int, content text, id uuid, PRIMARY KEY(vote, id));

在这种情况下,负责数据分发的唯一键是 vote,它的基数非常低,因为它只能包含 5 个值 (1,2,3,4,5)。这意味着,在best情况 5 个不同的节点将是 5 个不同分区的所有者(即“所有投票为 1 的评论”...“所有投票为 5 的评论”),并且再次处于最佳状态情况,当 RF 为 2 时,10 个不同的节点将保存您的数据。正如您所看到的,您有一个 20 个节点的集群,在最佳情况下使用率不会超过 50%。

数据分布非常重要,这就是为什么分区键基数很重要

哈特哈, 卡洛

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cassandra 中的高基数和低基数 的相关文章

随机推荐

  • 访问多维数组的元素是否越界未定义行为?

    请原谅这个令人困惑的问题标题 但我不确定如何更清楚地表达它 在 C 语言中 越界访问数组被归类为未定义行为 然而 数组元素保证在内存中连续排列 并且数组下标运算符是指针算术的语法糖 例如x 3 x 3 因此 我个人希望下面的代码的行为是明确
  • Hash::make('password') 每次调用返回不同的结果

    所以 标题基本上描述了我的问题 我的 Hash make 疯了 我已经创建了一个带有哈希密码的用户表 但我无法让 Laravel 接受我的凭据 我认为问题出在 Hash make 中 因此 测试这段代码 Route get function
  • 如何复制word文档的内容?

    我想编写一个程序 从 Word 文档复制文本并将其粘贴到另一个文档 我正在尝试使用python docx图书馆 我可以使用以下代码来做到这一点 但它不会复制bold italic 下划线或彩色部分原样 仅包含其文本 from docx im
  • Rails 5 db:重置不起作用

    我想重置 Rails 5 项目的数据库 但是rails db reset命令不起作用 错误信息 Permission denied unlink internal C sites5 dawnrebirth db development sq
  • 在 div 中包围希伯来语和英语文本

    我正在尝试在段落中的希伯来语和英语句子周围添加跨度标签 例如 那么 到底怎么样了 会变成 span so span span span span all whats up span span span 我一直在尝试使用正则表达式 但它只是删
  • 将html模板文件合并到一个JS文件中

    我有 HTML 模板文件 下划线模板语法 这些文件以 HTML 格式保存 因此很容易编辑 IDE 语法突出显示 我不想用ajax获取它们 而是将它们全部组合起来并将它们包含为js file 使用 GULP 作为我的任务运行程序 我希望它能以
  • 如何限制通过 cin 输入的字符数?

    我希望限制用户可以输入的字符数 使用cin 例如 我可能希望将其限制为两个字符 我该怎么做 我的代码如下所示 cin gt gt var 您可以使用setw cin gt gt setw 2 gt gt var http www cplus
  • NSPredicate iPhone 3.2 SDK核心数据“IN子句”NSInvalidArgumentException异常

    我有一个收藏Calendar对象并希望通过它们来查询它们service id财产 我在 iPhone 3 2 SDK 上使用 Core Data 和 sqlite calendars是一个 NSArray 结果NSFetchRequest
  • 谁最终决定什么是通用类型?

    我有这个功能 public static T2 MyFunc
  • 在 Plone 构建设置中查找需求规格

    我有一个 Plone 网站 大约 4 2 4 从version txt在根目录中 我想更新到最新版本 我发现这个操作方法 截至目前 4 3 4 我继承了过多的固定版本 这些版本没有记录并且可能已经过时 当评论我的versions cfg u
  • 如何设置 JSplitPane-Divider 折叠/展开状态?

    我有一个带有 JSplitPane 的 JFrame 它是 OneTouchExpandable 我想记住 JFrame 上 JSplitPane 的最后一个分隔符位置 并在重新打开 JFrame 时恢复位置 它工作得很好 但如果用户通过
  • 使用存储库的工作单元模式中的依赖项注入

    我想创建一个工作单元类 以类似的方式包装存储库this 我遇到的问题是尝试通过用 IRepository 接口替换示例中的通用存储库来实现依赖项注入 在链接文章的 uow 中 他们使用 getter 来检查存储库是否已实例化 如果没有则实例
  • npm install puppeteer 显示权限被拒绝错误

    我无法安装puppeteer作为项目依赖项 我尝试重新安装节点 有人知道如何解决这个问题吗 运行 Ubuntu 17 10 x64 sudo apt get purge nodejs curl sL https deb nodesource
  • 新手势 - 从左向右滑动 - 作为旧应用程序中 UINavigationController 中“后退”按钮的快捷方式

    iOS 7 采用了一种新手势 即在屏幕上从左向右滑动作为 UINavigationController 中 后退 按钮的快捷方式 我的应用程序似乎没有免费获取此行为 我需要做什么才能让我的 iOS 应用程序 在 Xcode 4 6 3 中为
  • Android Camera2 API 显示处理后的预览图像

    新的 Camera 2 API 与旧的有很大不同 向管道的用户部分显示操纵的相机帧让我感到困惑 我知道有很好的解释使用 Android L 和 Camera2 API 处理相机预览图像数据但显示帧仍然不清楚 我的问题是 在经过一些处理后 在
  • 用传单绘制特定国家的地图

    我想使用该包leaflet用R绘制特定国家的地图 如意大利 西班牙等 我用函数检查了基本示例setView 我尝试为纬度和经度的 arg 给出两个值的向量 m lt leaflet gt addTiles gt Add default Op
  • NUMA 获取当前节点/核心

    我在 Linux 上使用 libnuma 我的线程应该知道它们正在运行的节点 核心 是否有可能以某种方式获取当前线程的节点 核心 我已经浏览了文档 但没有找到这样的功能 我找到了这个解决方案 include
  • 限制完成时的 IntelliJ IDEA 导入建议

    当我输入需要导入的类的名称时 IntelliJ 会亲切地弹出一个建议列表 然而 大多数时候 这些建议是我永远不想导入的东西 尤其是偶然的 比如java awt 有没有办法防止我永远不会导入的包出现在完成列表中 我已经搜索了这些选项 但没有找
  • 使用 MPI_Bcast 进行 MPI 通信

    我正在尝试使用 MPI Bcast 将消息从根节点广播到所有其他节点 然而 每当我运行这个程序时 它总是在开始时挂起 有人知道这是怎么回事吗 include
  • Cassandra 中的高基数和低基数

    我不断遇到这些术语 high cardinality and low cardinality in Cassandra 我不明白它们到底是什么意思 它们对查询有什么影响以及首选是什么 请举例说明 因为这样很容易理解 X 的基数只不过是组成