2016-02-11 3 views
0

Что является предпочтительным хранилищем данных для быстрого агрегирования данных? У меня есть данные, что я тяну из других систем на регулярной основе, а также хранилище данных должны поддерживать запросы, как:Datastore for aggregations

  • Что такое количество сделок, совершаемых пользователем в диапазоне времени.
  • Какова общая сумма успешных транзакций, выполненных пользователем в диапазоне времени.
  • Запросы должны поддерживать sql-конструкции, такие как group by, count, sum и т. Д. Для большого набора данных.

В настоящее время я использую пользовательскую модель данных в Redis, и данные извлекаются в память, а затем над ней запускаются агрегаты. Проблема с этой моделью заключается в том, что это тесно связано с моими центрами (столбцами) и любым дополнительным стержнем, если добавлено, приведет к тому, что мои данные взорвутся, что приведет к огромному потреблению памяти в моих красных ящиках.

Я исследовал поиск elasticsearch, но запросы elasticsearch с агрегациями занимают больше 200 мс, для данных, которые у меня есть.

Есть ли другие альтернативы, я также смотрю на Aerospike. Может ли кто-нибудь рассказать о том, как аэросейсмические агрегаты работают в этом сценарии?

ответ

1

Aerospike поддерживает агрегации поверх вторичных запросов индекса. Кажется, большинство ваших запросов поворачиваются на пользователя. Вы можете создать дополнительный индекс поверх идентификатора пользователя и запрос для всех данных, соответствующих пользователю. Затем вы можете пощелкать логику агрегации и фильтровать материал на основе желаемого временного диапазона. вам нужно сделать это, потому что Aerospike еще не поддерживает несколько предложений where, где вы запрашиваете пользователя и временной диапазон в одно и то же время.

Ваши запросы 1 & 2 могут быть выполнены путем записи агрегирования UDF на основе вторичного запроса индекса на идентификаторе пользователя, как указано выше.

Я не очень понимаю ваши 3 вопроса. Aerospike не предоставляет группу по, сумме, счету и т. Д. Как собственные запросы. Но вы всегда можете написать агрегацию UDF для ее достижения. http://www.aerospike.com/docs/guide/aggregation.html

+0

В способе клиента аэрокосмического питона [http://www.aerospike.comQuery.apply'] (http://www.aerospike.com/apidocs/python/query.html#aerospike.Query.apply) приведен пример группы GROUP BY ИМЕЕТСЯ как поток UDF. –

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

  • Нет связанных вопросов^_^