/ / Qual tecnologia (SQL / NoSQL) usar para agregação de dados em tempo real - nosql, funções agregadas

Qual tecnologia (SQL / NoSQL) usar para agregação de dados em tempo real - nosql, funções de agregação

Eu preciso projetar um sistema quase em tempo real ondedocumentos (com campos: id, palavras-chave, timestamp) estão sendo adicionados ao sistema. O requisito é obter as k principais palavras-chave dos documentos adicionados ao sistema nos últimos x minutos. A taxa típica de adição de documentos é de cerca de 100 documentos / s, o que pode aumentar no futuro (portanto, a tecnologia deve ser horizontalmente escalável).

Estou pensando em usar solr-facets (comsharding) para gerar as k principais palavras-chave, onde estou um pouco preocupado com as altas gravações / s para solr. Outra opção é usar o Cassandra, mas não tenho certeza de como ele será dimensionado para consultas de intervalo (para calcular agregados), pois OrderPreservingPartitioner pode dificultar a distribuição da carga.

Respostas:

1 para resposta № 1

Isso soa como um Processamento de eventos complexos problema, não um banco de dados ou problema de pesquisa. Você não se preocupa tanto em manter os dados quanto se preocupa em obter tendências de palavras-chave ou algo semelhante em tempo real. Alguns fornecedores / bibliotecas que você gostaria de ver são (com muitas omissões):

Microsoft / .NET:

StreamInsight - Oferta de CEP da Microsoft

Extensões reativas para .NET - extensões para .NET para processamento de stream

Java:

Esper - biblioteca de processamento de fluxo de OSS muito popular

Tempestade - processamento de fluxo no Hadoop, provavelmente escalável para volumes de dados extremamente grandes

Terceiro / proprietário (não vou comentar sobre isso, não sei o suficiente sobre eles):

StreamBase

Aleri


0 para resposta № 2

use sql e nosql ao mesmo tempo.

use sql para consultas e use nosql para dados complexos.

escrever código x2. e resolver todos os problemas com suas necessidades em mente.