Casos de uso NoSQL [fechados]

8

Estou desenvolvendo um aplicativo para o simpósio de pesquisa de estudantes da minha universidade sobre a ideia de persistência poliglota. Eu li o livro de Martin Fowlers e fiz algumas outras pesquisas on-line sobre os vários tipos diferentes de banco de dados NoSQL. Estou curioso para saber quais são os diferentes casos de uso para os diferentes bancos de dados NoSQL?

Atualmente, tenho o que Fowler apontou (outras pesquisas foram feitas principalmente em APIs).

Valor chave:

  • dados da sessão
  • perfil de usuário
  • carrinho de compras
  • basicamente qualquer coisa que tenha uma única chave única que possa ser facilmente gerada e replicada

Documento:

  • registro de eventos
  • CMS / blog
  • Comércio eletrônico (após a conclusão da transação)
  • análise da web

Família de colunas:

  • registro de eventos
  • CMS / blog
  • contadores
  • uso expirado

Gráfico:

  • dados conectados
  • serviços baseados em localização
  • mecanismo de recomendação

Então, que outros casos de uso existem? Mais especificamente, quais são os casos de uso para cada tipo de banco de dados NoSQL que são melhores que um modelo relacional?

harageth
fonte
Essa é uma pergunta do tipo polling que não se encaixa no nosso formato de perguntas e respostas.

Respostas:

2

Eu acho que você cobriu quase tudo. Posso oferecer mais um sobre o banco de dados de gráfico. Vi pessoas ou pesquisadores usarem o banco de dados de gráfico para análise semântica ou armazenar ontologia para processamento de linguagem natural também.

E como tenho usado muito o Graph db, acho que o Graph db oferece muito mais do que o modelo relacional pode oferecer. Por exemplo, se eu tiver um aplicativo da Web e conectar todos os meus amigos do Facebook e Twitter com base na localização ou nos interesses. Eu posso fazer isso em uma consulta. No entanto, você também pode fazer isso no SQL, se realmente quiser, mas o SQL pode ter um tamanho A4 ou mais do que isso, se você quiser fazê-lo corretamente.

brinquedo
fonte
0

Por que não fazer isso mais axiomaticamente? Por exemplo, por que o "CMS / blog" é mais adequado para documentar bancos de dados (ou o que for)? Quais são as propriedades comuns desses aplicativos que fazem você pensar que são mais adequados para uma ou outra tecnologia?

Considere os pontos fortes de cada tecnologia DBMS e, de fato, a teoria em que cada uma se baseia. Que modelo de dados eles implementam? (Cada um de fato tem um modelo de dados?) Quais são as propriedades de cada modelo de dados e como as propriedades do aplicativo são mapeadas para as do modelo de dados? Se você desenvolver esse mapa, poderá caracterizar qualquer aplicativo, mesmo um que você nunca ouviu falar ou que ainda não foi inventado.

Codd definiu um modelo de dados como compreendendo três recursos de intertravamento: estrutura, operações e restrições. O modelo relacional tem todos os três espadas. Se você olhar atentamente para as alternativas, descobrirá que elas estão faltando pelo menos uma e geralmente duas delas. Qualquer tecnologia não baseada no modelo relacional é ipso facto menos funcional. Por esse motivo, é seguro dizer que todos os aplicativos podem ser suportados pelo modelo relacional (se não pelos produtos relacionais existentes). O modelo relacional é ainda mais totalmente desenvolvido, mais poderoso e ainda mais simples do que qualquer outro já criado. Será difícil melhorar porque repousa na lógica de predicados e na teoria dos conjuntos.

Talvez você possa identificar aplicativos para os quais, digamos, operações bem definidas não importam. Mas você quer ter certeza de que primeiro entende por que eles são importantes em geral antes de poder dizer com certeza por que eles não são necessários (ou mesmo úteis) para um aplicativo específico.

Mais cedo ou mais tarde, alguém lhe dirá "relacional não escala" e que a tecnologia X é rápida. Quando o fazem, lembre-se de que desistiram implicitamente de recursos que a tecnologia X não possui em relação ao modelo relacional, recursos que podem muito bem importar. Além disso, um modelo de dados não é rápido ou lento, apenas uma implementação. Sempre que há mais programadores do que máquinas, é mais barato comprar hardware mais rápido do que contratar mais programadores.

James K. Lowden
fonte
Estou um pouco cansado de ouvir que os bancos de dados relacionais são baseados na teoria dos conjuntos, como se isso melhorasse automaticamente seu status. Na verdade, a teoria dos conjuntos finitos é trivial e as primeiras sutilezas da teoria dos conjuntos começam com conjuntos infinitos, que obviamente não são usados ​​em todos os bancos de dados.
Andrea
1
A teoria dos conjuntos não melhora o status dos bancos de dados relacionais. Ele fornece uma base para o modelo relacional. Outras teorias que não são aplicadas não se aplicam, eu tenho que concordar com você lá!
James K. Lowden,