Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando o índice de pesquisa Solr como um banco de dados - isso está errado?


Sim, você pode usar o SOLR como banco de dados, mas há algumas ressalvas muito sérias:

  1. O padrão de acesso mais comum do SOLR, que é sobre http, não responde particularmente bem a consultas em lote. Além disso, o SOLR NÃO transmite dados --- então você não pode iterar preguiçosamente por milhões de registros de uma vez. Isso significa que você precisa ser muito cuidadoso ao projetar padrões de acesso a dados em grande escala com SOLR.

  2. Embora o desempenho do SOLR seja dimensionado horizontalmente (mais máquinas, mais núcleos etc.) e verticalmente (mais RAM, melhores máquinas etc.), suas capacidades de consulta são severamente limitadas em comparação com as de um RDBMS maduro . Dito isto, existem algumas funções excelentes, como as consultas de estatísticas de campo, que são bastante convenientes.

  3. Os desenvolvedores que estão acostumados a usar bancos de dados relacionais geralmente terão problemas ao usar os mesmos padrões de design DAO em um paradigma SOLR, devido à maneira como o SOLR usa filtros nas consultas. Haverá uma curva de aprendizado para desenvolver a abordagem correta para criar um aplicativo que usa SOLR para parte de suas grandes consultas ou modificações de estado .

  4. As ferramentas "empresariais" que permitem gerenciamento avançado de sessão e entidades statefull que muitos frameworks web avançados (Ruby, Hibernate, ...) oferecem terão que ser descartadas completamente .

  5. Os bancos de dados relacionais são feitos para lidar com dados e relacionamentos complexos - e, portanto, são acompanhados por métricas de última geração e ferramentas de análise automatizadas. Na SOLR, eu me peguei escrevendo essas ferramentas e testando muito manualmente, o que pode ser um desperdício de tempo .

  6. Juntando-se:este é o grande assassino. Bancos de dados relacionais suportam métodos para construir e otimizar visualizações e consultas que unem tuplas com base em predicados simples. Na SOLR, não há métodos robustos para unir dados entre índices.

  7. Resiliência:Para alta disponibilidade, o SolrCloud usa um sistema de arquivos distribuído abaixo (ou seja, HCFS). Esse modelo é bem diferente daquele de um banco de dados relacional, que geralmente faz resiliência usando escravos e mestres, ou RAID, e assim por diante. Portanto, você precisa estar pronto para fornecer a infraestrutura de resiliência que a SOLR exige se quiser que ela seja escalável e resistente à nuvem.

Dito isto - há muitas vantagens óbvias para SOLR para determinadas tarefas:(consulte http://wiki. apache.org/solr/WhyUseSolr ) -- consultas soltas são muito mais fáceis de executar e retornam resultados significativos. A indexação é feita por padrão, portanto, a maioria das consultas arbitrárias é executada de maneira bastante eficaz (ao contrário de um RDBMS, onde geralmente é necessário otimizar e desnormalizar após o fato).

Conclusão: Mesmo que você possa usar o SOLR como um RDBMS, você pode descobrir (como eu) que, em última análise, "não há almoço grátis" - e a economia de custos de pesquisas de texto super legais com lucene e indexação na memória de alto desempenho, são muitas vezes pagas por menos flexibilidade e adoção de novos fluxos de trabalho de acesso a dados.