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
Java 卡桑德拉应该用在写剧本之前的阅读中吗?_Java_Cassandra_Read Write - Fatal编程技术网

Java 卡桑德拉应该用在写剧本之前的阅读中吗?

Java 卡桑德拉应该用在写剧本之前的阅读中吗?,java,cassandra,read-write,Java,Cassandra,Read Write,cassandra规范中的一段告诉我们,先读后写对cassandra的性能有一点影响。但告诉卡桑德拉自己避免先读后写的场景 在我的情况下,我需要读取它上面的行“see”,并根据条件将其写回。所以总的来说,cassandra是否是此类场景的首选解决方案?您的用例没有任何迹象表明cassandra不是一种好的技术,但这取决于您的读/写比率 如果你要有一个高的读/写比率(也就是说,如果你的条件通常是错误的,并且你很少需要写回这行),那么考虑你的压缩策略是很重要的。阅读以获取有关使用哪种压缩策略的建议

cassandra规范中的一段告诉我们,先读后写对cassandra的性能有一点影响。但告诉卡桑德拉自己避免先读后写的场景


在我的情况下,我需要读取它上面的行“see”,并根据条件将其写回。所以总的来说,cassandra是否是此类场景的首选解决方案?

您的用例没有任何迹象表明cassandra不是一种好的技术,但这取决于您的读/写比率

<>如果你要有一个高的读/写比率(也就是说,如果你的条件通常是错误的,并且你很少需要写回这行),那么考虑你的压缩策略是很重要的。阅读以获取有关使用哪种压缩策略的建议

存储引擎链接中的“先读后写”一词指的是Cassandra在完成客户端的“写”查询时必须在磁盘上执行的读取操作。这并不意味着客户机先发送读取请求,然后再发送写入请求

如果您的读/写比率接近1,那么如果您可以更改数据模型以避免在写查询之前执行读查询的模式,那么您将能够从Cassandra中获得更好的性能


如果在考虑了对同一集群的所有其他使用之后,您的读/写比率会很低(写入比读取多得多),那么Cassandra在这方面非常擅长,您可能不需要担心。

由于一致性问题,在Cassandra中,先读后写通常被认为是一种反模式。性能可能也会受到影响,但更重要的是,基于以前的读取修改数据永远都不安全,因为这些值可能同时被另一个进程更改。这一页实际上解释得很好


您可以改为使用CAS操作,即所谓的“”。每次CAS更新都将基于一个条件,例如以前的值。这将确保仅在行的相关部分未更改的情况下应用更新。尽管LWT可以很好地实现这一点,但可伸缩性和性能将比常规更新差得多。

这个答案没有考虑一致性问题。在Cassandra通常用于的高度可扩展系统中,根据您的应用程序,另一个编写器可能执行相同的读取,并应用冲突的写入,并且只有一个将获胜。其他数据库有有效的机制来处理这个问题,比如在数据库内部执行读写操作的SQL语句,或者在NOSQL中,一个CAS操作将在读取时生成一个令牌,并要求重新显示令牌。Cassandra唯一的答案是轻量级事务,相比之下,轻量级事务是重量级的。