我有一个应用程序需要存储大量的数据(每天约20万txns),每个记录大小约为100 kb到200 kb。数据的格式将是JSON/XML。搜索使用Solr与地图减少文件 - 这是可靠的?
应用程序应该高度可用,因此我们计划将数据存储在S3或AWS DynamoDB上。
我们有用例可能需要根据几个属性(日期范围,状态等)搜索数据。大多数搜索将使用少数常见属性,但对于某些操作用例可能会有一些任意查询。
我研究搜索非关系型数据和方法迄今发现正在使用的大多数技术 1两种方式)建立索引(Solr的/ CloudSearch等) 2)运行一个Map Reduce作业(蜂巢/ Hbase等)
我们的要求是让搜索结果可靠(与S3/DB中的数据一致 - 类似于oracle查询,可以慢一点,但是当我们获取数据时,我们应该有与返回的查询相匹配的所有内容或者至少让我们知道某些结果被跳过)
从一开始,它看起来像基于索引的方法会比MR更快。但我不确定它是否可靠 - 索引可能是陈旧的? (有没有一种方法可以在我们进行搜索时知道索引已过时,以便我们可以纠正它?是否有办法让索引始终与DB/S3中的值一致?与Oracle DB上的索引类似)。 MR作业似乎总是可靠的(因为它从S3获取每个查询的数据),这个假设是否正确?无论如何加快这个查询 - 可能是S3中的分区数据,并根据每个分区运行多个MR作业?
好像s3吞吐量对于map-reduce方法来说是个问题,对吗?每次查询都必须从s3中转出千兆字节? – 2012-04-17 23:11:57
你尝试过Mongo DB吗?如果我理解你的要求,Mongo提供同样的事情。这是存储在文档中的一种Json,您可以按字段查询数据。 – 2012-04-18 12:34:58
谢谢我将进一步评估MongoDB。 – Arvind 2012-04-18 17:36:30