我们有类似的产品:
if Product.filter(wikimart_id=external_id):
p = Product.get(shop_id=shop_id, wikimart_id=external_id)
d['product_id'] = p.product_id # Setting key in dict from which model will be updated
我们会定期(每天一次)从列表中更新产品。
目前我们必须使用像
这样的结构class ProductWikimart(Model):
"""
Wikimart Product Model
"""
shop_id = columns.UUID(primary_key=True, required=True)
wikimart_id = columns.Integer(primary_key=True)
product_id = columns.UUID(index=True)
class ProductYandex(Model):
"""
Yandex Product Model
"""
shop_id = columns.UUID(primary_key=True, required=True)
yandex_id = columns.Integer(primary_key=True)
product_id = columns.UUID(index=True)
Cassandra是否可以,或者我们应该考虑如何创建将external_id作为更新产品主键的模型?
喜欢:
BanksController
哪种方式更可取?
UPD 这个问题是关于NoSQL的通用建模。不仅仅是关于cassandra:)
答案 0 :(得分:1)
也许这article会对你有所帮助。
由于相对频繁的更改,我认为product_id不是群集密钥的理想选择。所以,我认为产品模型的第二个版本(使用ProductWikimart和ProductYandex)会更好。但是,您可以遇到新问题:例如,如何匹配ProductWikimart和ProductYandex产品ID?
谈到Cassandra的数据建模,一般有Model Around Your Queries规则。所以,要告诉哪种表格结构更好,我们应该知道如何请求它。