我在CQL3中有一张这样的桌子

create table product_info
(
 key text,
 value text,
 Primary key (key)
);

这是一张垂直桌子。由于我可以使用(key,value)对插入新行。

样本数据将是:

product_info
  key                |     value
  -------------------------------------------
  product_name       |   sample_product
  quantity           |   2
  manufacture        |   sample_manufacturer
  ....                   ....

但是我需要一个水平表,在这里我可以动态添加列而无需更改表。

product_info
    product_name     |   quantity   |  manufacture           |  ....
   ------------------------------------------------------------------------------
    sample_product   |    2         |  sample_manufacturer   |  ....

我需要像上表这样的结构,需要不断添加列。

CQL3提供了一个动态添加列的选项,但是在此之前,我们需要更改表。

我需要知道是否有其他方法可以做到这一点。

我发现通过使用Thrift API是可能的,但是由于Thrift不再受支持,因此无法使用它。

是否还有其他类似hector的API或其他支持此功能的API?

我确实经历了类似的堆栈溢出文章,但没有得到更好的解决方案。

最佳答案

CREATE TABLE product_info(
    product_name text,
    key text,
    value text,
    PRIMARY KEY (product_name, key)
);

现在,您最多可以插入2B k / v对,因为键现在是聚类列。
INSERT INTO product_info (product_name, key, value)
    VALUES ('iPhone 6', 'quantity', '2');

INSERT INTO product_info (product_name, key, value)
    VALUES ('iPhone 6', 'manufacturer', 'Apple');

INSERT INTO product_info (product_name, key, value)
    VALUES ('iPhone 6', 'quantity', '2');

INSERT INTO product_info (product_name, key, value)
    VALUES ('iPhone 6', 'another column name', 'another column value');

但是,您没有指定查询访问模式,因此对于您的应用程序,此数据模型可能完全错误(或确定)。

07-26 09:16