nosql – Cassandra列键自动递增

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

例如,如果我创建简单的用户CF和我尝试插入新行,我如何可以在MysqL增加一个增量键?

我看到很多例子,您只需将用户名替换为唯一的ID即可,但如果我希望用户拥有重复的用户名,该怎么办?

另外我怎么可以从我所理解的cassandra不支持>操作符,所以有些东西像select *来自用户那里的东西> something2不行.

可能最重要的问题是分组呢?我需要检索所有数据,然后使用我使用的任何语言进行过滤吗?我认为这会减慢我的系统.

所以基本上我需要一些简短的说明如何开始Cassanda.

你的问题相当普遍,但是让我刺伤一下.首先,您需要根据查询对数据进行建模.使用RDBMS,您可以以一些规范化的形式对数据建模,然后针对特定查询进行优化.你不能用Cassandra这样做您必须按照您打算读取的方式写入数据.通常这意味着不仅仅是写一种方式.一般来说,如果您想要与Cassandra有效地工作,这有助于彻底摆脱您的RDBMS思维.

关键:

>它们用于Cassandra作为分配环的单位.所以你的钥匙会被弄清楚,并在环中分配一个“所有者”.使用RandomPartitioner来保证均匀分配
>假设你使用RandomPartitioner(你应该),键没有排序.这意味着你不能要求一系列的钥匙.但是,您可以在单个查询中请求一个键列表.
>键在某些型号中是相关的,而不在其他型号中.如果您的模型需要逐个查询,则可以使用应用程序知道的任何唯一值(例如UUID).有时键是前哨值,例如表示一天开始的Unix纪元.这可以让Cassandra把一堆已知的密钥交给一些已知的密钥,然后通过列排列一系列数据(见下文).

关于查询谓词:

>您可以获得正确建模的数据范围,以回答您的查询.
>由于列按排序顺序编写,您可以使用切片查询(这非常快)来查询从列A到列n的范围.您还可以使用复合列抽象此机制.
>您可以在基数较低的列上使用辅助索引 – 这将提供逐个值查询功能.
>您可以创建自己的索引,其中数据按您需要的方式进行排序.

关于分组:

我认为你是指创建聚合.如果您需要实时的数据,您将需要使用一些外部机制(如Storm)来跟踪数据并不断更新相关的聚合成CF.如果您正在创建汇总作为批处理过程的一部分,Cassandra与Hadoop具有出色的集成功能,可以让您在Pig,Hive中直接使用您的语言编写地图/缩减作业.

相关文章

一、引言 学习redis 也有一段时间了,该接触的也差不多了。后来有一天,以前的同事问我,如何向redis中...
一、引言 上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需要安装和编译...
一、介绍 Redis客户端使用RESP(Redis的序列化协议)协议与Redis的服务器端进行通信。 虽然该协议是专门...
一、引言 redis学了一段时间了,基本的东西都没问题了。从今天开始讲写一些redis和lua脚本的相关的东西...
一、介绍 今天继续redis-cli使用的介绍,上一篇文章写了一部分,写到第9个小节,今天就来完成第二部分。...
一、引言 上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入...