2016-08-24 3 views
2

Я новичок в друиде. Я уже прочитал «Друид VS Elasticsearch», но я до сих пор не знаю, к чему друид хорош.Друид против Elasticsearch

Ниже моя проблема:

  1. У меня есть Solr кластер с 70 узлами.

  2. У меня есть очень большая таблица в solr, которая имеет 1 миллиард строк, и каждая строка содержит 100 полей.

  3. Пользователь будет использовать разные комбинации диапазонов запросов полей (по 20 комбинаций, по крайней мере, в одном запросе), чтобы подсчитать различное количество идентификаторов клиентов, но алгоритм счетного счета solr очень медленный и использует много памяти, поэтому если результат запроса составляет более 200 тысяч, узел запроса solr будет аварийно завершен.

Имеет ли друид лучшую производительность, чем solr в отличном количестве?

+0

Solr 5.2 может использовать HyperLogLog для подсчета мощности: https://lucidworks.com/blog/2015/05/26/hyperloglog-field-value-cardinality-stats/ –

ответ

2

Друид сильно отличается от поисковых баз данных, таких как ES/Solr. Это база данных, предназначенная для аналитики, где вы можете делать свопы, столбчатую фильтрацию, вероятностные вычисления и т. Д.

Друид действительно отличается своим использованием HyperLogLog, который является вероятностной структурой данных. Поэтому, если вы не беспокоитесь о 100% -ной точности, вы можете определенно попробовать Друид, и я видел резкие улучшения в времени отклика в одном из моих проектов. Но, если вам небезразлична точность, тогда Друид может оказаться не лучшим решением (даже при том, что его можно достичь и в друиде, с достижением производительности и дополнительным пространством) - см. Здесь: https://groups.google.com/forum/#!topic/druid-development/AMSOVGx5PhQ

+2

FYI: ES поддерживает агрегацию «мощность», которая основана на HyperLogLog ++ algo. –

+0

о, хорошо! не знал об этом. У вас есть какие-либо показатели того, насколько уменьшен размер индекса, если вы используете агрегацию «мощность»? –

+0

«мощность» - это агрегирование времени запроса. Я не думаю, что это помогает с точки зрения размера индекса. –

2

ES как правило, требует необработанных данных, поскольку он предназначен для поиска. Это означает, что индекс огромен, но вложенные скопления дороги. (Я знаю, что я пропустил много деталей здесь).

Друид предназначен для расчета метрик по тайм-данным. Он имеет четкое различие в размерах и показателях. На основе полей измерений метрические поля предварительно агрегируются во время приема. Этот шаг помогает уменьшить огромное количество данных в зависимости от мощности размерных данных. Другими словами, Друид работает лучше всего, когда измерение является категорическим значением.

Вы упомянули range query. Фильтр диапазона по метрикам отлично работает. Но если вы имеете в виду запрос по числовым измерениям, то это то, что Друид все еще работает.

Что касается отдельного счета, то как ES, так и друид поддерживают HyperLogLog. В друиде вам нужно указать поля во время проглатывания, чтобы применить HyperLogLog во время запроса. Это довольно быстро и эффективно.