作为关系模式的ER图,如果有图形解释为Cassandra创建的模式?
答案 0 :(得分:3)
有很多方法可以解决这个问题,我建议您查看DataStax的Data Modeling training以获得系统深入的了解。
实际构建普通的ERD和预期查询列表可能是确保数据模型正确的一个很好的步骤。
一旦你有了这个,你想把它转换成一个Cassandra特定的图表,你代表主键,群集键和even secondary indexes(但仅适用于低基数字段)。请记住,ERD中的多个实体可能会转换为一个C *表,并且您最终可能会复制某些写入,以提高读取性能并允许不同类型的查询。一个简单的示例可能如下所示:
Reviews_by_Day
userid text P
day int C
productid text
reviewid uuid
profilename text
helpfulness text
score text
summary text
review text
time timestamp
您还可以在群集列中指定asc / desc。上图将代表下表:
CREATE TABLE reviews_by_day
(
userid text,
day int,
productid text,
reviewid uuid,
profilename text,
helpfulness text,
score text,
summary text,
review text,
time timestamp,
PRIMARY KEY (userid, day)
)
将此与您将在c *上执行的预期查询列表相结合,并考虑将用于每个查询的表。您可以通过添加查询(标记为Q1,Q2等)并使用箭头来演示应用程序流来扩充图表。
另一个可能有用的工具是data modeling application,它允许您输入表定义并查看它如何存储在引擎盖下的Cassandra存储引擎中(目前它不支持集合)。它还允许您计算表的估计分区大小,并生成一个样本.yaml文件,用于Cassandra的新cassandra-stress来自C * 2.1(向后兼容2.0)。
注意:此工具正在开发中,可能会发生变化。
答案 1 :(得分:2)
我编写了一个工具cql2plantuml,它从CQL架构中提取plantuml .puml文件。
你仍然需要对模式中的关系进行一些.puml文件的编辑,因为Cassandra Keyspace不包含任何表之间关系的表示。