在选择策略时,我有一个关于Cassandra数据建模的问题。
我需要存储由id、姓名、电子邮件、出生日期、指定等属性组成的员工数据,但这些属性在将来会增加。
分区密钥将是id。
设计表格有两种方法
创建员工表:
CREATE TABLE employee_horizontal (
id text,
name text,
email text,
dob DATE,
designation text,
PRIMARY KEY (id)
) ;
但是这里我有一个限制,我可以使用id查询
创建员工表:
CREATE TABLE employee_kv (
id,
key text, (predefined set of attributes name, email,dob, designation)
value text,
PRIMARY KEY (id,key)
);
上表将提供基于id和键(如果员工有该键)的查找功能。
有人能为上述策略提出一些赞成/反对意见吗?
1条答案
按热度按时间nimxete21#
cassandra建模提倡数据的非规范化。cassandra的建模原理还说,根据查询设计表。所以,先写下你的疑问。例如,如果您的查询可能是:
通过id获取员工。
通过电子邮件id获取员工。
通过指定获得员工。
现在,要为查询创建数据模型,必须创建以下表
对于问题1,
对于问题2,
对于问题3,
这只是一个演示如何为cassandra建模数据的示例。不能有一个表响应所有查询。