使用mongodb或cassandra的空间数据

时间:2011-10-26 13:59:10

标签: mongodb cassandra gis geohashing

我正在考虑处理大量数据的概念证明,例如> 10 G,每秒至少需要200次写入,每秒需要大约50次以上的空间相关数据。这也是一个不断发展的系统。目前我正在考虑出于性能原因将这个大容量数据转移到NoSql大表类数据库中。

我已经考虑并仔细研究了MongoDB和cassandra。就我的阅读而言,

的MongoDB:    - 似乎有一个写作锁定问题    - 如果不需要多个服务器,stackoverflow中的一个帖子建议使用此db    - 索引保留在内存中。因此,指数增长越大,表现就会恶化    - Mongodb的优势是直接支持空间数据和索引以及查找附近位置等功能,    - 我看到这篇文章Cassandra Or MongoDB For Our Location Based Application暗示mongodb是最佳选择

卡桑德拉:
   - 似乎是相关dbs中最好的    - 似乎有很好的写入和读取性能    - 本身不支持空间索引,但可以通过geohashing扩展

我的心实际上是因为它的良好文档和对空间数据的直接支持而为mongodb服务。是否有任何机构在使用mongodb进行大型系统方面有不良经验?我实际上在mongodb iostat上看到很多关于性能的帖子。

如果mongodb不适合,有人可以使用cassandra给出一些关于geohashing的指示吗?我看到了用于创建哈希的链接http://code.google.com/p/geospatialweb/。但是如何查询等问题呢?

4 个答案:

答案 0 :(得分:5)

我意识到这是一个较旧的问题,我知道它并没有直接回答你的问题,但根据你的疑问,Cassandra可能不是最好的选择,并且让你的查询在MongoDB中使用索引可以也有问题(根据我自己的经验)。对于重型地理数据和查询,Mongo与Cassandra略有优势。

我建议也考虑一下ElasticSearch,根据您的数据形状和您要提出的查询类型可能是最佳解决方案。当你发布你的问题时,它可能不是今天的选项。

答案 1 :(得分:1)

尝试Cassandra + Solr。 这可能很有用: http://digbigdata.com/geospatial-search-cassandra-datastax-enterprise/

此致 Goutham Kumar

答案 2 :(得分:1)

tl;博士
Elassandra是Cassandra和ElasticSearch的组合。

将来有一些更新。

我目前正在为大数据实时系统创建一个概念,并且还需要存储地理空间数据并进行大规模查询。最近几天,我进行了大量研究,以了解如何正确排列数据并能够支持地理空间索引和诸如边界框之类的查询。

我首先读到的是PostgreSQL + Postgis,但是最大实例限制为最大200k次写入/秒。
第二个是地理空间数据库Tile38,它能够扩展查询,但不能扩展写入。唯一的方法是手动分片数据。
第三个是MongoDB,因为在那里您可以找到支持我所需的地理空间功能的良好文档,但是如果您能够扩展写入量,则很难决定。
因此,最后一个数据库是Cassandra。该数据库因水平写入缩放和故障接管而闻名。与Cassandra的权衡是,查询数据的性能不佳,并且不支持现成的地理空间。如Tracker1所建议的,对于大规模查询数据,ElasticSearch是一个很好的解决方案。今天,我发现了一个由Cassandra和ElasticSearch组成的新数据库,名为Elassandra,该数据库可以进行大规模写入,也可以实时读取大规模数据。到目前为止,对我来说是最好的解决方案,而花费最少的精力进行设置和维护。

答案 3 :(得分:0)

我们目前也使用Cassandra并寻找空间索引解决方案。我们选择Lucene来提供全文和归因搜索,并随之支持spartial索引。也许你也想检查一下。

我们当前的实现类似于基于简单树(基于网格)对信息进行分片,并且每个分片都是Lucene索引,一旦它增长超过一定大小,索引就会被x或y分割。并且由于这样的分片具有二进制表示(网格中的位置由两个位组成,下一个级别接下来是2位,依此类推),由位置发出搜索,并且将由位置/网格分辨率的任何分片帽子前缀应答。到目前为止,简单的系统运行良好,但目前尚未高效使用。