Я ищу технологию NoSQL, которая отвечает требованиям, позволяющим обрабатывать геопространственные, а также временные запросы в больших масштабах с помощью достойных производительности. Я хочу обрабатывать несколько сотен ГБ для ТБ данных с предлагаемой технологией NoSQL вместе с Spark. Очевидно, это будет выполняться на кластере с несколькими узлами.Какая технология NoSQL для геопространственных и временных запросов?
Типы запросов Я хочу работать:
- «нормальные» запросы для атрибутов, как «поле < = значение»
- Basic геопространственных запросы, как запрашивая все данные, которые полагаются в BBOX.
- Время запросы, как «дата < = 01.01.2011» или «время> = 11:00 и время < = 14:00»
- сочетание всех трех типов запросов (что-то вроде «запроса всех данных, где место находится в пределах BBOX и на дату 01.01.2011 и время < = 14:00 и field_x < = 100")
Я в настоящее время оценивает, какие технологии возможны для моей USECASE, но я поражен седловатости количество доступных технологий. Я думал о популярных технологиях, таких как MongoDB и Cassandra. Оба кажутся применимыми для моего использования (Cassandra только с индексом Stratios Lucene), но может быть и другая технология, которая работает еще лучше.
Есть ли какая-либо технология, которая будет значительно превосходить других на основе этих требований?
Я подумал о семействе столбцов cassandra, который содержит: sensor_id, timestamp, location (не доступно в каждой записи!), Ключ, значение. то у меня есть ключ кластеризации на моем поле «ключ», поэтому я могу иметь несколько ключей/значений для каждой записи логического журнала. При запросе местоположения мне всегда нужно вытащить больше данных, основываясь на отметке времени возвращаемых временных меток геокрии. Например, если моя геокрия возвращает запись с датой «25.06.2016-21: 18: 30», я также хочу прочитать последние -5 и +5 минут. То, где последовательные чтения могут оказаться очень полезными. Theres проблема, которую я вижу. [1/2] – j9dy
Не все записи в журнале содержат это местоположение. Поэтому, когда я запрашиваю местоположение, например, с помощью «внутри bbox» -query, я могу получить одну запись, содержащую местоположение. Это потребовало бы, чтобы я сначала запустил геокурию, дайте ей заполнить и после этого возьмем поле даты/времени каждой возвращенной записи и прочитаем последовательный фрагмент на основе -5 и +5 минут каждой даты, возвращаемой геокьюрией. Тогда у меня были бы данные, которые мне действительно нужны. Также мне нужно отфильтровать поле «ключ», например «где key = speed OR key = whatever». Это проблема? Есть ли способ ускорить это? – j9dy