2016-06-25 2 views
0

Я ищу технологию 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), но может быть и другая технология, которая работает еще лучше.

Есть ли какая-либо технология, которая будет значительно превосходить других на основе этих требований?

ответ

2

Я хочу пакетной обработки нескольких сотен гигабит в TBs данных

Это на самом деле не использовать Cassandra случай. Cassandra в первую очередь оптимизирована для производительности записи. Если у вас действительно огромное количество писем, Cassandra может быть хорошим вариантом для вас. Cassandra не является базой данных для поисковых запросов. Cassandra - это база данных для известных запросов. На уровне чтения Cassandra оптимизирован для чтения секвенций. Cassandra может запрашивать данные только последовательно. Также можно игнорировать это, но это не рекомендуется. Огромный объем данных может быть с неправильной моделью данных проблемой в Кассандре. Возможно, система баз данных, основанная на hadoop, является лучшим вариантом для вашего.

Время запросы, как "дата < = 01.01.2011" или "время> = 11:00 и время < = 14:00"

Cassandra действительно хорошо для данных временных рядов.

«нормальные» запросы для атрибутов, как «поле < = значение»

Если вы знаете, что запросы перед вами моделирования вам базы данных, Cassandra также является хорошим выбором.

Комбинация всех трех типов запросов (что-то вроде «запрашивает все данные, где местоположение находится в пределах bbox и дата 01.01.2011 и время < = 14:00 и field_x < = 100")

Cassandra может быть хорошим решением Почему бы, как я сказал:.? Вы должны знать эти вопросы, прежде чем создавать таблицы Если вы знаете. что вы будете иметь тысячи запросов, где вам нужен интервал времени и местоположение (город, страна, содержание и т.д.), это хорошее решение для вашего.

времени запросов в больших масштабах с достойной производительностью.

Кассандра будет иметь наилучший p в этом случае использования. Данные уже находятся в необходимом порядке. MonoDB - хорошая замена для использования MySQL. Если вам нужен лучший масштаб, но масштабирование mongodb не так просто, как в Cassandra, и гибко, и вы заботитесь о последовательности. Cassandra имеет возможную согласованность, масштабируемость и производительность действительно важны. У MongoDB также есть отношения, а Кассандра нет. В Кассандре все денормализировано, потому что забота о производительности.

+0

Я подумал о семействе столбцов cassandra, который содержит: sensor_id, timestamp, location (не доступно в каждой записи!), Ключ, значение. то у меня есть ключ кластеризации на моем поле «ключ», поэтому я могу иметь несколько ключей/значений для каждой записи логического журнала. При запросе местоположения мне всегда нужно вытащить больше данных, основываясь на отметке времени возвращаемых временных меток геокрии. Например, если моя геокрия возвращает запись с датой «25.06.2016-21: 18: 30», я также хочу прочитать последние -5 и +5 минут. То, где последовательные чтения могут оказаться очень полезными. Theres проблема, которую я вижу. [1/2] – j9dy

+0

Не все записи в журнале содержат это местоположение. Поэтому, когда я запрашиваю местоположение, например, с помощью «внутри bbox» -query, я могу получить одну запись, содержащую местоположение. Это потребовало бы, чтобы я сначала запустил геокурию, дайте ей заполнить и после этого возьмем поле даты/времени каждой возвращенной записи и прочитаем последовательный фрагмент на основе -5 и +5 минут каждой даты, возвращаемой геокьюрией. Тогда у меня были бы данные, которые мне действительно нужны. Также мне нужно отфильтровать поле «ключ», например «где key = speed OR key = whatever». Это проблема? Есть ли способ ускорить это? – j9dy

Смежные вопросы