gpt4 book ai didi

nosql - Cassandra 列键自动递增

转载 作者:行者123 更新时间:2023-12-03 13:28:59 24 4
gpt4 key购买 nike

我正在尝试了解 Cassandra 以及如何构建我的列族 (CF),但这非常困难,因为我习惯了关系数据库。

例如,如果我创建简单的 users CF 和我尝试插入新行,我怎样才能像在 MySQL 中一样创建增量键?

我看到了很多示例,您只需输入用户名而不是唯一 ID,这会有点道理,但是如果我希望用户拥有重复的用户名怎么办?

另外,当我了解 cassandra 不支持 > 时,我该如何进行搜索?运算符,例如 select * from users where something > something2行不通。

也许最重要的问题是分组呢?我是否需要检索所有数据,然后使用我使用的任何语言对其进行过滤?我认为这会大大降低我的系统速度。

所以基本上我需要一些简短的解释如何开始使用 Cassanda。

最佳答案

你的问题很笼统,但让我试一试。首先,您需要根据查询对数据进行建模。使用 RDBMS,您可以以某种规范化形式对数据进行建模,然后针对您的特定查询进行优化。 Cassandra 无法做到这一点。您必须按照您打算读取的方式写入数据。这通常意味着以不止一种方式编写它。一般来说,如果您想有效地使用 Cassandra,它有助于完全摆脱您的 RDBMS 思维。

关于键:

  • 它们在 Cassandra 中用作跨环的分布单位。因此,您的 key 将被散列并在环中分配一个“所有者”。使用 RandomPartitioner 保证均匀分布
  • 假设您使用 RandomPartitioner(您应该),键没有排序。这意味着您不能要求一系列 key 。但是,您可以在单个查询中请求键列表。
  • 键在某些模型中是相关的,而在其他模型中则不相关。如果您的模型需要按键查询,您可以使用您的应用程序知道的任何唯一值(例如 UUID)。有时键是标记值,例如表示一天开始的 Unix 纪元。这使您可以交给 Cassandra 一堆已知键,然后获得按列排序的一系列数据(见下文)。

  • 关于查询谓词:
  • 假设您正确建模以回答您的查询,您可以获得一系列数据。
  • 由于列是按排序顺序写入的,因此您可以使用切片查询(非常快)查询从 A 列到 n 列的范围。您还可以使用复合列来稍微抽象一下这种机制。
  • 您可以在基数较低的列上使用二级索引——这为您提供了按值查询的功能。
  • 您可以创建自己的索引,其中数据按您需要的方式排序。

  • 关于分组:

    我想你指的是创建聚合。如果您需要实时数据,您将需要使用一些外部机制(如 Storm)来跟踪数据并不断将相关聚合更新到 CF 中。如果您在批处理过程中创建聚合,Cassandra 与 Hadoop 具有出色的集成,允许您使用 Pig、Hive 或直接使用您选择的语言编写 map/reduce 作业。

    关于nosql - Cassandra 列键自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12709277/

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