Dados
~ 5 milhões de documentos, adoraria ter ~ 223 milhões, com o texto de ~ 10-1000 palavras cada. Deve ser utf8 e suportar qualquer idioma falado. Todas as palavras em um texto são únicas e também posso ordená-las ou fazer o que for necessário para ter um melhor desempenho. O texto completo é salvo em outro local. Os dados são quase somente leitura. Para desempenho, posso gerar dados, adicionar índices e marcá-los como somente leitura.
Estrutura de dados:
{
id: 1,
reference_id: 1,
text: 'text of unique. 10-1000 words each ',
}
Requisitos
- Os resultados devem ficar abaixo de 0,1s
Exemplos de consultas:
- encontrar texto com palavras: x ou y ou z
- encontrar texto com palavras: x e y e z
- seria ótimo encontrar texto com parte da palavra:
hous
encontrariahouse
,housing
etc.
Perguntas
- É possível fazer isso acontecer com MySQL/PostgreSQL?
- Quais soluções de banco de dados você ofereceria?
- Qual configuração observar?
- Tipo de índice?
- Exemplo de consulta?
- Requisitos do servidor para RAM/HDD/CPU?
- Melhores máquinas mais potentes ou matrizes mais simples?
Basta pensar sobre suas necessidades e o que você está perguntando e se uma resposta pode ser dada aqui. A Wikipedia tem 5,3 milhões de documentos. Você está falando de uma carga nessa escala. E você quer saber se pode ou não consultá-lo em 0,1 segundo? Você terá que fornecer o texto de exemplo. Eu gosto de criar dados de amostra, mas como vou gerar dados de amostra para esta pergunta/
O que você quer é Full-Text Search (FTS) empresarial: o PostgreSQL tem isso. Se vai ou não funcionar tão bem quanto você pretende, não tenho ideia. Eu usei para projetos razoavelmente grandes, funcionou fantasticamente.
Ele também suporta
:*
o que faz o que você deseja. então é só usarhous:*
É indexável usando um índice GIST. Tudo isso está nos documentos.
Então apenas