Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 卡桑德拉数据完整性_Cassandra - Fatal编程技术网

Cassandra 卡桑德拉数据完整性

Cassandra 卡桑德拉数据完整性,cassandra,Cassandra,在cassandra中维护数据完整性的最佳方法是什么?我使用cassandra作为电子商务应用程序的主要数据存储。反规范化后,数据分散在多个列族中。e、 g.如果我有一个“项目”CF,如下所示: 我可以使用另一个列族来满足查询,以获得“评级为5的所有项目”。查询列族可以包含有关特定项的附加信息 CF: ItemsByRating ---------------------------------------------------------------- | itemId

在cassandra中维护数据完整性的最佳方法是什么?我使用cassandra作为电子商务应用程序的主要数据存储。反规范化后,数据分散在多个列族中。e、 g.如果我有一个“项目”CF,如下所示:

我可以使用另一个列族来满足查询,以获得“评级为5的所有项目”。查询列族可以包含有关特定项的附加信息

CF: ItemsByRating
----------------------------------------------------------------
         |   itemId1     |   itemId2     |   itemId3     |
5 rating |---------------|---------------|---------------| ...
         | item1 details | item2 details | item3 details |
-----------------------------------------------------------------

我有一个守护进程正在运行,它会收到“Items”CF详细信息的更改通知,并对“ItemsByRating”CF中的值字段进行必要的更新。当有很多CFs用于查询项时,这会变得复杂。有什么最好的方法吗?

对于这种特殊情况(查询具有指定评级的项目),最好在
项目
中的
评级
列上使用二级索引。Cassandra将负责索引更新,并且比任何外部守护程序都快得多。在cassandra中实现提供完整性保证的守护进程非常困难,因为它需要实现整个故障转移层

至于一般问题(Cassandra上的电子商务站点),我建议在Cassandra的外部保持一致的数据,例如在SQL数据库中

即使是一个大型的电子商务网站,其目录中的商品也不超过100万件,每天处理的交易也不超过数百万件。具有主/从复制的MySQL可以轻松处理这一数量的数据。设计一个完全基于cassandra的电子商务系统是可能的,该系统能够始终如一地处理交易,但它需要各种技巧,比如分布式行锁或带有Zookeeper或Hazelcast的外部锁。在这种数据量(数百万行)上,SQL数据库将更快、更简单、更稳定。是的,它将有一个单点故障。但宕机的电子商务应用程序比执行随机事务的应用程序要好


为了构建一个真正可扩展的系统,Cassandra可以用来处理不需要强一致性的数据,如页面视图:如果单个页面视图事件丢失,这不是问题,数据仍然可以用于数据挖掘、机器学习等。

Cassandra中有可配置的一致性: docs.datastax.com/en/cassandra/2.0/cassandra/dml/dml\u config\u consistency\u c.html

但它与ACID中提到的稠度不同: mighty-titan.blogspot.com/2012/06/understanding-cassandras-consistency.html

卡桑德拉的主要问题是:没有交易。这特别意味着“无回滚”。Cassandra的理论是:大多数用例不会覆盖相同的数据,当它们覆盖时,大多数情况下您不需要完全回滚:

“当有很多CFs为项目查询服务时,这会变得复杂”请详细说明。
CF: ItemsByRating
----------------------------------------------------------------
         |   itemId1     |   itemId2     |   itemId3     |
5 rating |---------------|---------------|---------------| ...
         | item1 details | item2 details | item3 details |
-----------------------------------------------------------------