我花了最近几天浏览在线文章,视频甚至堆栈帖子,以了解如何在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中构建该表?然后,如何将数据加载到具有超级列的表中?
答案 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
它将显示输出,显示有多少行以及每行的列数。