对cassandra数据建模的困惑

时间:2015-08-05 18:05:07

标签: cassandra

我花了最近几天浏览在线文章,视频甚至堆栈帖子,以了解如何在cassandra中建模数据。我知道需要根据查询模式对数据建模,但我不理解的是cassandra中的列族和列关系,如果这适用于我想查询数据的方式。

我有一个由以下

组成的关系数据库表
CUST_ID | ACCT_ID | CUST_ADDRS | ACCT_ADDRS | CUST_ST | ACCT_ST | CUST_FRAUD_IND | ACCT_DAYS_OPEN | ACCT_TYPE | CUST_CARD_IND | etc...

本质上是一个包含客户ID及其帐户ID的表,因此唯一键是cust_id + acct_id。每个客户可以拥有多个帐户。有基于customerID的属性,如addrs,state,如果客户有卡,等等。还有基于帐户的属性,如地址,州,帐户类型等......

我们运行的一些查询会告诉我特定客户(CUST_ID = xxxx)是否有任何卡账户(ACCT_TYPE ='CARD')。或者,如果客户的账户开户时间超过180天。

我看过这个链接:

http://www.ebaytechblog.com/2012/07/16/cassandra-data-modeling-best-practices-part-1/#.VH-OezHF_6M

我对选项4感到好奇,因为它看起来应该是什么。因此,在我的情况下,我的表将有一个CUST_ID键,然后是一个名为“卡帐户”,“检查帐户”等的超级列,其中包含这些列的所有属性。

现在我的问题是,这是正确的选择,如果是这样,我将如何在cassandra中构建该表?然后,如何将数据加载到具有超级列的表中?

1 个答案:

答案 0 :(得分:0)

当您阅读Cassandra Data时,moldel必须根据查询模式。但你没有遵循这种模式。您必须根据您的查询创建许多表。不要担心数据冗余,Cassandra会处理它。

cassandra的结构如下: -

         Map<Rowkeys, SortedMap<ClusteringKeys ,OtherColumns>> 

就像一张桌子在这里

创建表temp( id1 int, id2文字, id3 int, id4文字, id5 int id6文字, 主键((id1,id2),id3,id4) );

然后Cassandra Rows将根据: -

ID1,ID2

和一个表的列将根据: -

id3,id4。

。根据查询制作数据模型。

如果你想看看cassandra如何存储数据然后打开你的bin / cassandra-cli然后使用任何键空间然后 run命令: - list table_name

它将显示输出,显示有多少行以及每行的列数。