哪些NoSQL技术适用于地理空间和时间查询?

时间:2016-06-25 16:19:11

标签: mongodb cassandra geospatial spatial nosql

我正在寻找一种NoSQL技术,该技术能够满足体面性能大规模处理地理空间和时间查询的要求。我想用提议的NoSQL技术和Spark批量处理几百GB到TB的数据。这显然将在具有多个节点的群集上运行。

我想要运行的查询类型:

  • "正常"查询"字段< = value"
  • 等属性
  • 基本地理空间查询,例如查询依赖于bbox的所有数据。
  • 时间查询,例如" date< = 01.01.2011"或"时间> = 11:00和时间< = 14:00"
  • 所有三种查询类型的组合(类似于"查询位置在bbox内和日期01.01.2011以及时间< = 14:00和field_x< = 100&#34的所有数据;)

我目前正在评估哪些技术可用于我的用例,但我已经被可用的大量技术所淹没。我曾考虑过像MongoDB和Cassandra这样的流行技术。两者似乎都适用于我的用例(Cassandra仅适用于Stratios Lucene索引),但可能有一种不同的技术可以更好地工作。

是否有任何技术会根据这些要求严重超越其他技术?

1 个答案:

答案 0 :(得分:2)

  

我想将数百GB批量处理为TB数据

那不是真正的cassandra用例。 Cassandra首先针对写入性能进行了优化。如果你有大量的写作,Cassandra可能是你的好选择。 Cassandra不是探索性查询的数据库。 Cassandra是已知查询的数据库。在读取级别上,Cassandra针对sequentiell读取进行了优化。 Cassandra只能按顺序查询数据。它也可以忽略这一点,但不建议这样做。使用错误的数据模型,大量数据可能是Cassandra中的一个问题。也许基于hadoop的数据库系统对你来说是更好的选择。

  

时间查询,例如" date< = 01.01.2011"或"时间> = 11:00,时间< = 14:00"

Cassandra非常适合时间序列数据。

  

"正常"查询"字段< = value"

等属性

如果您在为数据库建模之前就知道了这些查询,那么Cassandra也是一个不错的选择。

  

所有三种查询类型的组合(例如"查询所有数据,其中位置在bbox内,日期为01.01.2011,时间< = 14:00,field_x< = 100&#34 ;)

Cassandra可能是一个很好的解决方案。为什么?正如我所说:在创建表之前,您必须知道这些查询。如果您知道在需要时间范围和位置(城市,国家,内容等)的情况下,您将有数以千计的查询,这对您来说是一个很好的解决方案。

  

大规模的时间查询,具有良好的性能。

Cassandra将在此用例中获得最佳性能。数据已按要求的顺序排列。 MonoDB是MySQL用例的一个很好的替代品。如果你需要更好的比例,但缩放mongodb并不像Cassandra那么简单,并且灵活而且你关心一致性。 Cassandra最终的一致性是可扩展的,性能非常重要。 MongoDB也有关系,Cassandra没有。在Cassandra中,一切都是非规范化的,因为性能关注。