NoSQL数据存储用于写入占主导地位的30亿行

时间:2014-06-01 22:01:55

标签: sharding throughput document-database nosql

我希望用户可以从任何设备查看和搜索他们在我的网站上访问过的网页的标题 鉴于以下要求,哪些NoSQL会完成这项工作并让用户满意? 数据大小:30亿行(600万用户,保留500个标题/用户的历史记录)。 〜1.5TB。

行/文档结构:[userId(GUID),pageId(GUID),ViewedTime,pageTitle(最多160个字符)]
写入(预期写入率:每秒查看2,000页):
当用户查看页面时,将创建一个新行,除非用户以前查看过该页面,并且我只是更新现有行的ViewedTime。

查询(预期查询率:300 /秒):
 1.通过userId检索100-500个最新标题(使用String.indexOf()扫描关键字。)
 2.通过userId AND pageID检索行。  3.清理 - 通过删除旧版本,每个用户减少500个标题的批处理作业。

注意:

  • 对包含缓存层的商店感到高兴。
  • 我偶尔会有数据丢失。最终的一致性很好。
  • 数据量可能增长x10所以我需要能够扩展(因此水平可扩展性?)
  • 有数百万个不同的页面,所以为了避免连接,我想在每一行都保留标题。

1 个答案:

答案 0 :(得分:2)

我想你可以和Cassandra一起去。它是写入优化的,在执行读取操作时,您可以指定数据的最新状态。如果您使用读取的最低一致性配置,它也会表现得相当好。否则,cassandra的阅读速度很慢。