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?
Respostas:
Uma lista muito grande de casos de uso NoSQL
Essa lista é útil de vez em quando e também indica quando uma determinada solução NoSQL é especializada para esse caso de uso específico. O tópico original do HackerNews (linkado na parte inferior dessa página) também é útil para comentários estendidos.
fonte
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.
fonte
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.
fonte