繁体   English   中英

有关将关系模式转换为Cassandra的建议

[英]Advice on Converting a Relational Schema to Cassandra

我希望就如何最好的方法将典型的关系模式转换为Cassandra提出一些建议。 关系架构为:

CREATE TABLE IF NOT EXISTS sales (
   sale_id     bigint(20) UNSIGNED NOT NULL
                          AUTO_INCREMENT,
   create_time timestamp  NOT NULL
                          DEFAULT ‘0000-00-00 00:00:00’,
   account     bigint(20) UNSIGNED NOT NULL DEFAULT ‘0’,
   store       char(25)   NOT NULL DEFAULT ‘’,
   product     char(25)   NOT NULL DEFAULT ‘’,
   coupon      char(18)   NOT NULL DEFAULT ‘’,
   amount      decimal(8,2) NOT NULL,
   PRIMARY KEY (sale_id),
   KEY         create_time (create_time) )

我提出的Cassandra模式是:

CREATE TABLE sales (
            sale_id     uuid,
            create_time timestamp,
            account     text,
            store       int,
            coupon      text,
            product     text,
            amount      int,
            PRIMARY KEY ((create_time, store), coupon))

(在我需要查询的非关键列上创建索引)

典型的查询是在一段时间内按产品/优惠券/帐户/商店获取按产品列出的所有销售额。

这有意义吗?

关于如何改善此性能以获得合理的读/写性能的任何建议?

在此先感谢您的任何建议。

不,您想要对Cassandra模式进行建模以回答每个问题,以获得良好的性能。 假设您想按产品查找所有(最近)销售,并希望将主键创建为( productID, created_time

如果您的应用程序通常想要搜索最近出售的产品,那么您想按聚类(desc)的顺序来排序聚类因子(在示例中为created_time )。

同样,您可以在多个列族中复制销售数据。 在分布式环境中建模时,不要害怕重复数据。 您想de-normalize并期待从分区本身获取结果。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM