【问题标题】:Spatial data with mongodb or cassandra使用 mongodb 或 cassandra 的空间数据
【发布时间】:2019-06-02 00:36:48
【问题描述】:

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

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

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

卡桑德拉:
- 似乎是相关数据库中最好的 - 似乎具有出色的写入和读取性能 - 本身不支持空间索引,但这可以通过地理散列进行扩展

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

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

【问题讨论】:

  • 一年多后对 NoSQL 空间存储有什么想法吗?
  • 实际上由于某些原因我们没有使用 simplegeo,而是保留了 cassandra。我们最终选择使用纬度、经度作为单独的值来保持简单,并选择正确的键。我们在 8 台服务器上分发它取得了相当大的成功,并且在日常查询中获得了不到第二类性能的结果,我们很高兴。
  • 您好 Muthu,如果可以的话,您能否提供有关您的实施的更多详细信息:) thx。

标签: mongodb cassandra gis geohashing


【解决方案1】:

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

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

【讨论】:

  • 是的。谢谢你。我会检查 ElasticSearch。绝对有用。
【解决方案2】:

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

问候, 古瑟姆库马尔

【讨论】:

  • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
【解决方案3】:

tl;dr
Elassandra Cassandra 和 ElasticSearch 的组合。

未来的一些更新。

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

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

【讨论】:

  • 看起来很有趣的组合。感谢分享!
【解决方案4】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2018-03-04
    • 1970-01-01
    • 2011-07-09
    • 2018-04-08
    • 1970-01-01
    • 2018-03-12
    • 2019-08-11
    • 1970-01-01
    相关资源
    最近更新 更多