我正在尝试在Cassandra中建模以下数据模型:
商业 - 主键:BusinessId
Has Many Reviews - primary key : ReviewId
- Review 1
- Body
- Rating
- Review 2
- Body
- Rating
and so on
Has an Address
- State
- City
- Zip
Has Business Hours
- Monday Hours
- Tuesday Hours
and so on
Has Offers
- Offer1
- Offer2
and so on
我希望能够使用一个查询提取所有这些信息,即我想将其存储在一个业务行中。我怎样才能做到这一点?基本上,我有许多子实体,我想与父业务实体一起存储。根据我对复合键的理解,您只能有一个复合键(ex)businessId:ReviewId来建模评论),但是如何将所有这些实体存储在一行中以有效地检索一个查询中的所有业务详细信息。
我的第二个问题是关于更新。假设这些实体(评论)中只有一个经常更新。其他实体大部分都是静态的。是否可以将评论与这个巨大的业务行分开,或者我是否可以在不将整个业务行记入内存的情况下更新评论?
答案 0 :(得分:2)
您可以使用传统的无架构基于Thrift的查询模型来完成您尝试执行的操作。您的数据模型可能如下所示:
Key: ReviewID {
Review:1:Body = ""
Review:1:Rating = 1
Review:2:Body = ""
Review:2:Rating = 1
Address:1:City = ""
Address:1:State = ""
Address:1:Zip = ""
Hours:1:Monday = ""
Hours:1:Tuesday = ""
Offer:1:[fieldName] = ""
Offer:2:[fieldName] = ""
}
此模式为Composite(Utf8Type, IntegerType, Utf8Type)
,其中任何键类型与ReviewID匹配,并且任何值类型都与您的值匹配(如果您有不同类型,则可以是字节)。