gpt4 book ai didi

具有多种条件的 Cassandra 数据模型

转载 作者:行者123 更新时间:2023-12-01 19:42:43 24 4
gpt4 key购买 nike

我是 Cassandra 的新手,所以我读了十几篇有关它的文章,因此我了解基础知识。所有教程都展示了通过 1 或 2 列和时间范围进行有效的数据检索。我找不到的是如果您有更多条件,如何正确建模您的数据。

我有一个大型事件标准化数据库,有很多列,例如:

  • 事件类型
  • 时间
  • 电子邮件
  • 用户年龄
  • 用户国家
  • 用户语言
  • 等等。

我需要能够按所有列进行查询。所以在 RDBMS 中我会查询:

从表中选择电子邮件,其中时间 > X AND user_age BETWEEN X AND X AND user_language = 'nl' 等。

我知道我可以为每一列制作一个单独的表格,但我仍然需要合并结果。也许这不是一个坏方法,但我对此表示怀疑,因为没有子查询。

我的问题显然是,如何在 Cassandra 中正确建模此类数据?

非常感谢!

最佳答案

I would need to be able to query by all columns.

让我阻止你。在 Cassandra 中,您可以根据预期的查询模式创建表,并且通常一个表支持单个查询。在您的情况下,您有“相当多”的列,并且您需要将这些数据复制到旨在支持每个可能的查询的表中。这很快就会变得又大又难看。

Could we just add the rest as secondary indexes? there could potentially still be millions of rows in the eventtype table + merchant_id + time selection.

二级索引旨在用于中间基数列。因此,基数极低和极高的列都不利于二级索引。问题是 Cassandra 必须选择一个节点作为协调器,扫描每个节点上的索引(导致大量的网络时间),然后构建并返回结果集。这是性能不佳的处方,与使用分布式数据库的最佳实践背道而驰。

简而言之,对于此类用例,Cassandra 并不是一个好的解决方案。听起来您希望能够执行 OLAP 类型的查询,为此您应该使用更适合该目的的工具。

关于具有多种条件的 Cassandra 数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41393238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com