Melhor abordagem para um banco de dados de seqüências longas

12

Preciso armazenar perguntas e respostas em um banco de dados. As perguntas serão de uma a duas frases, mas as respostas serão longas, pelo menos um parágrafo, provavelmente mais.

A única maneira que eu sei sobre fazer isso agora é um banco de dados SQL. No entanto, não acho que essa seja uma boa solução, porque, até onde eu vi, esses bancos de dados não são usados ​​para dados desse tipo ou tamanho. É o caminho correto a seguir ou existe uma maneira melhor de armazenar esses dados? Existe uma maneira melhor do que armazenar strings não processadas?

gsingh2011
fonte
Você já olhou para a pesquisa de texto completo? en.wikipedia.org/wiki/Full_text_search
FrustratedWithFormsDesigner
Por favor, defina "longo" 1k, 5M, 1GB ??
James Anderson
por que você não gosta de strings "raw"? Os dados são realmente cadeias de caracteres ou são estruturados? Você planeja fazer algo que não funcione para strings? Não há um motivo claro na sua pergunta para que um banco de dados não seja apropriado. O mesmo com as strings (ou talvez CLOBS, se forem muito grandes e dependendo do banco de dados que você usa).
Psr
Eu estava me referindo a uma maneira inteligente de armazená-los, talvez através de algum tipo de compactação, não de texto simples. Estou preocupado com essencialmente o tamanho do banco de dados aqui.
gsingh2011
11
Qual RDBMS você está usando? O Oracle possui excelente suporte para manipulação e pesquisa de texto.
Matthew Flynn

Respostas:

19

O Mongodb é ótimo, mas você conhece SQL. Não há nada errado em armazenar respostas longas nos campos. Você pode armazenar imagens ou até arquivos no SQL. Eu acho que o tamanho máximo do campo é 2GB.

Estou quase certo de que esta resposta está sendo armazenada em um campo de tabela em algum lugar.

Quanto a haver milhares deles, não há problema. Mesmo milhões não devem ser um problema. Você pode considerar a indexação de texto completo se estiver pesquisando no campo por palavras-chave ou algo assim. Mas tento não otimizar até encontrar um problema. Os computadores são baratos, o armazenamento é basicamente gratuito.

DanielEli
fonte
11
+1 em não otimizar até que você realmente tenha o problema!
GrandmasterB
4
O tamanho máximo do campo não é especificado no ANSI SQL, depende do DBMS (e geralmente de alguns outros fatores, como conjunto de caracteres, tipo de dados da coluna, mecanismo de armazenamento, sistema operacional, etc.).
23612 tdammers #
6

Não há problema em armazenar textos longos em bancos de dados (SQL ou outros). É assim que praticamente todas as entradas de blog (pense em Wordpress), artigo de notícias e postagens em fórum (pense em phpbb) na Internet são armazenadas. Não sei os detalhes específicos da configuração da troca de pilhas, mas tenho certeza de que sua pergunta também está armazenada em um banco de dados. A maioria dos bancos de dados SQL possui um TEXTtipo de campo ou o equivalente apenas para o propósito de armazenar dados textuais de qualquer tamanho. Muitos também possuem sistemas de busca de texto completo.

Tomar decisões técnicas com base no conhecimento e compreensão técnicos, não nos sentimentos.

GrandmasterB
fonte
5

Sim, é o caminho correto a seguir. Armazenar strings em um banco de dados SQL é o que você deseja fazer. Uma das minhas tabelas no banco de dados possui mais de um show de dados em texto sem formatação e funciona bem.

Se você está preocupado com o espaço de armazenamento - lembre-se de que é barato!

Se você está preocupado com o desempenho - então não se preocupe, um bom banco de dados pode ser ampliado (ou ampliado) para a quantidade de dados que você deseja incluir nele.

A última coisa que você deseja fazer é começar a otimizar agora (para comprimir as cadeias antes de colocá-las no banco de dados ou algo louco) antes que isso se torne um problema. Você está apenas se dando mais trabalho.

Rocklan
fonte
2

Não há problema em armazenar grandes strings ou dados binários. Trabalhei com um banco de dados com mais de um terabyte de dados binários e funcionou muito bem (postgres) e a única coisa ruim foi o tempo de backup.

A grande questão é: "Você precisará fazer pesquisas constantes neste texto?"

Se você estiver procurando por seqüências de caracteres no texto, pode pensar em uma solução de índice:

Rodrigo Menezes
fonte