cassandra表格设计策略(kv v/s水平表格)

hiz5n14c  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(246)

在选择策略时,我有一个关于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和键(如果员工有该键)的查找功能。
有人能为上述策略提出一些赞成/反对意见吗?

nimxete2

nimxete21#

cassandra建模提倡数据的非规范化。cassandra的建模原理还说,根据查询设计表。所以,先写下你的疑问。例如,如果您的查询可能是:
通过id获取员工。
通过电子邮件id获取员工。
通过指定获得员工。
现在,要为查询创建数据模型,必须创建以下表
对于问题1,

CREATE TABLE employee_by_id (
    id text,
    name text,
    email text,
    dob DATE,
    designation text,
    PRIMARY KEY (id)) ;

对于问题2,

CREATE TABLE employee_by_email (
    id text,
    name text,
    email text,
    dob DATE,
    designation text,
    PRIMARY KEY (email)) ;

对于问题3,

CREATE TABLE employee_by_designation (
    id text,
    name text,
    email text,
    dob DATE,
    designation text,
    PRIMARY KEY ((designation), name)) ;

这只是一个演示如何为cassandra建模数据的示例。不能有一个表响应所有查询。

相关问题