我试图了解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作业.
对于你的第一个问题:
我可以像在mysql中一样制作增量键
不,不是真的 - 不是Cassandra原生的. 如何在Cassandra中创建自动增量ID - 您可以在此处查看更多信息:http: //srinathsview.blogspot.ch/2012/04/generating-distributed-sequence-number.html
您的第二个问题更多地是关于如何存储和建模您的Cassandra数据.
查看stackoverflow的搜索选项.很多有趣的问题!
最重要的是,何时不使用Cassandra?
| 归档时间: |
|
| 查看次数: |
16057 次 |
| 最近记录: |