对具有有限行数的列族进行建模的最佳做法是什么?
例如,我有下表:
CREATE TABLE product (
productname text PRIMARY KEY,
productdescription text,
updatedts timestamp,
updateduser text);
此表的生命周期最多可包含100行。如果我将 productname 作为分区键,那么这100行将位于不同的分区中,效率很低。我想让整个数据驻留在一个分区中。
通常设计有限行的表格的最佳做法是什么?
PS:假设将在此表上运行的唯一查询是:
select productname,productdescription,updatedts,updateduser from product;
答案 0 :(得分:1)
基于"我知道这不是最佳做法,但我相信在这种特殊情况下,对小数据进行分区会适得其反。 "让我们走下去:
您可以将常量值添加为主键,例如将tablename alwayse as" product"。
CREATE TABLE product (
tablename text,
productname text,
productdescription text,
updatedts timestamp,
updateduser text,
PRIMARY KEY(tablename, productname));
更多的是,因为cassandra的列数不是问题,因为你可以"按"这样的"小"一个大表中的表(每个表中只需要一个主键,类型必须相同):
想象一下,你有3"小"表:
CREATE TABLE product (
productname text PRIMARY KEY,
productdescription text,
updatedts timestamp,
updateduser text);
CREATE TABLE hellokitty (
kittyname text PRIMARY KEY,
age int,
owner text);
CREATE TABLE pandarianians (
name text PRIMARY KEY,
pandariantime timestamp,
age int);
然后你可以把所有3个放在一个表中,每个表都在一个分区中:
CREATE TABLE lifeislife(
tablename text,
tablekey text,
updatedts timestamp,
updateduser text,
age int,
owner text,
pandariantime timestamp,
PRIMARY KEY (tablename, tablekey)
)
您的选择将是:
select tablekey,productdescription,updatedts,updateduser from lifeislife where tablename="product";