Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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 使用TTL的最佳海量数据持久存储?_Java_Mongodb_Architecture_Cassandra_Persistence - Fatal编程技术网

Java 使用TTL的最佳海量数据持久存储?

Java 使用TTL的最佳海量数据持久存储?,java,mongodb,architecture,cassandra,persistence,Java,Mongodb,Architecture,Cassandra,Persistence,我们正在构建一个系统,它需要在固定的时间(30到60天)内将大量数据放入某种持久性存储中。由于数据并不重要(例如,当虚拟机停机时,我们可能会丢失一些数据),而且我们不想为每一个请求都保留数据而付出代价(延迟对我们来说很关键),因此我们正在考虑对数据进行缓冲和批处理,或者以异步方式发送数据 数据仅为附加数据,我们需要为每个请求保留2-3个项目,系统在多台主机上处理~10k rps,水平扩展 我们在选择Mongo(3.x?)或Cassandra之间犹豫不决,但我们可以选择任何其他解决方案。这里有没有

我们正在构建一个系统,它需要在固定的时间(30到60天)内将大量数据放入某种持久性存储中。由于数据并不重要(例如,当虚拟机停机时,我们可能会丢失一些数据),而且我们不想为每一个请求都保留数据而付出代价(延迟对我们来说很关键),因此我们正在考虑对数据进行缓冲和批处理,或者以异步方式发送数据

数据仅为附加数据,我们需要为每个请求保留2-3个项目,系统在多台主机上处理~10k rps,水平扩展


我们在选择Mongo(3.x?)或Cassandra之间犹豫不决,但我们可以选择任何其他解决方案。这里有没有人有解决这类问题的经验或提示?我们正在运行一些POC,但我们可能无法尽早发现所有问题,pivot的成本可能会很高。

我无法对MongoDB发表评论,但我可以和Cassandra谈谈。Cassandra确实有一个TTL特性,您可以在一段时间后使数据过期。不过,您必须对此进行规划,因为TTL确实会在Cassandra运行名为“压缩”的过程中增加一些开销,请参见:

以及:

只要你能适应这样的工作量,你就可以了。话虽如此,Cassandra在拥有事件驱动的数据时确实表现出色,比如时间序列、产品目录、点击流数据等

如果您不熟悉Patrick McFadin,请见见您的新好友:

当然,这里还有大量的免费教程和培训:


编辑以添加另一个想法,即以最小的开销“安全”地过期数据。这是一个叫Ryan Svihla的精明家伙完成的,谢谢,我们实际上混合了ElastiSearch,因为我们可能需要创建一些使用任意字段的查询,但是您的回答非常有用。