28

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

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

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

Cassandra:
- 似乎是相关数据库中最好的 - 似乎具有出色的写入和读取性能 - 本身不支持空间索引,但这可以通过 geohashing 扩展

我真的很喜欢 mongodb,因为它有良好的文档和对空间数据的直接支持。有没有人在这么大的系统上使用 mongodb 有过不好的经历?我实际上在 mongodb iostat 上看到了很多关于性能的帖子。

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

4

4 回答 4

6

我意识到这是一个较老的问题,并且我知道它不能直接回答您的问题,但是根据您的查询,Cassandra 可能不是最佳选择,并且让您的查询与 MongoDB 中的索引一起使用也可能会出现问题(以我自己的经验)。Mongo 在大量地理数据和查询方面比 Cassandra 稍有优势。

我建议还考虑研究 ElasticSearch,这取决于您的数据形状和您将要进行的查询类型可能是最好的解决方案。当你发布你的问题时,它可能比今天少了一个选项。

于 2014-05-29T23:31:37.453 回答
1

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

问候, Goutham Kumar

于 2015-12-07T12:27:11.560 回答
1

tl; Dr
Elassandra是 Cassandra 和 ElasticSearch 的组合。

未来的一点更新。

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

我读到的第一个是 PostgreSQL + Postgis,但最大的实例被限制为最大 200k 写入/秒。
第二个是地理空间数据库Tile38,它能够扩展查询但不能扩展写入。唯一的方法是手动分片数据。
第三个是 MongoDB,因为在那里你可以找到一个很好的文档来支持我需要的地理空间功能,但是很难决定,如果你能够扩展写入。
所以最后一个数据库是 Cassandra。该数据库以水平写入扩展和故障接管而闻名。与 Cassandra 的权衡是,查询数据的性能不佳,并且不支持开箱即用的地理空间。正如 Tracker1 已经建议的那样,对于大规模查询数据,ElasticSearch 是一个很好的解决方案。今天我发现了一个由 Cassandra 和 ElasticSearch 组成的新数据库,称为Elassandra,它允许大规模写入和近实时大规模读取数据。到目前为止,对我来说是最好的解决方案,只需最少的设置和维护工作。

于 2019-06-01T16:36:48.567 回答
0

我们目前也在使用 Cassandra 并寻找空间索引解决方案。我们使用 Lucene 是为了提供全文和属性搜索,并且随之而来的是对空间索引的支持。也许你也想检查一下。

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

于 2015-05-04T21:28:45.853 回答