Какую технологию (SQL / NoSQL) использовать для агрегирования данных в реальном времени - PullRequest
0 голосов
/ 06 января 2012

Мне нужно спроектировать систему, работающую практически в режиме реального времени, в которой документы (с полями: id, ключевые слова, метка времени) добавляются в систему. Требуется получить ключевые слова top-k из документов, добавленных в систему за последние x минут. Типичная скорость добавления документов составляет около 100 документов в секунду, что может увеличиться в будущем (следовательно, технология должна быть горизонтально масштабируемой).

Я думаю об использовании solr-facets (с sharding) для генерации ключевых слов top-k, где меня немного беспокоит высокая скорость записи / сек для solr. Другой вариант - использовать Cassandra, но не уверен, как он будет масштабироваться для запросов диапазона (для вычисления агрегатов), так как OrderPreservingPartitioner может затруднить распределение нагрузки.

Ответы [ 2 ]

1 голос
/ 06 января 2012

Это звучит как Сложная обработка событий проблема, а не проблема базы данных или поиска.Вы не заботитесь о хранении данных так сильно, как о трендах ключевых слов или о чем-то подобном в реальном времени.Некоторые поставщики / библиотеки, на которые вы хотели бы взглянуть, (со многими упущениями):

Microsoft / .NET:

StreamInsight -Предложение Microsoft CEP

Reactive Extensions для .NET - расширения для .NET для потоковой обработки

Java:

Esper - очень популярная библиотека потоковой обработки OSS

Storm - потоковая обработка в Hadoop с большой вероятностью масштабирования до очень больших объемов данных

Сторонние разработчики/ Собственный (не буду комментировать, не знаю о них достаточно):

StreamBase

Aleri

0 голосов
/ 28 апреля 2013

использовать sql и nosql одновременно.

используйте sql для запросов и nosql для сложных данных.

написать код x2. и решить все проблемы с учетом их потребностей.

...