卡桑德拉列键自动增量

Lin*_*nas 18 cassandra nosql

我试图了解Cassandra以及如何构建我的列族(CF),但由于习惯了关系数据库,所以很难.

例如,如果我创建简单的usersCF并尝试插入新行,如何在MySQL中创建增量键?

我看到了很多例子,你只需要输入用户名而不是唯一的ID,这会有点意义,但是如果我希望用户拥有重复的用户名呢?

另外我如何根据我的理解进行搜索cassandra不支持>运算符,所以类似的东西select * from users where something > something2不起作用.

可能最重要的问题是关于分组的问题?我是否需要检索所有数据,然后使用我正在使用的任何语言过滤它?我认为这会大大减慢我的系统速度.

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

rs_*_*atl 17

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

关于键:

  • 它们在Cassandra中用作整个环的分布单位.因此,您的密钥将被哈希并在环中分配"所有者".使用RandomPartitioner保证均匀分布

  • 假设你使用RandomPartitioner(你应该),键没有排序.这意味着你不能要求一系列钥匙.但是,您可以在单个查询中询问密钥列表.

  • 键在某些模型中相关,而在其他模型中则不相关.如果您的模型需要按键查询,则可以使用应用程序知道的任何唯一值(例如UUID).有时键是哨兵值,例如表示当天开始的Unix纪元.这允许您将一堆已知密钥交给Cassandra,然后获取按列排序的一系列数据(见下文).

关于查询谓词:

  • 您可以获得数据范围,假设您正确建模以回答您的查询.

  • 由于列是按排序顺序编写的,因此您可以使用切片查询(非常快)查询从列A到列n的范围.您还可以使用复合列来抽象此机制.

  • 您可以在基数较低的列上使用二级索引 - 这为您提供了按值查询功能.

  • 您可以创建自己的索引,其中数据按您需要的方式排序.

关于分组:

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


sdo*_*lgy 7

对于你的第一个问题:

我可以像在mysql中一样制作增量键

不,不是真的 - 不是Cassandra原生的. 如何在Cassandra中创建自动增量ID - 您可以在此处查看更多信息:http: //srinathsview.blogspot.ch/2012/04/generating-distributed-sequence-number.html

您的第二个问题更多地是关于如何存储和建模您的Cassandra数据.

查看stackoverflow的搜索选项.很多有趣的问题!

  1. 从MySQL切换到Cassandra - 优点/缺点?
  2. 卡桑德拉数据模型
  3. Cassandra/NoSQL新手:正确的模特方式?
  4. Apache Cassandra架构设计
  5. Apache Cassandra的知识来源

最重要的是,何时不使用Cassandra?


归档时间:

查看次数:

16057 次

最近记录:

9 年 前