NoSQL para Mentes Relacionais

Quando os desenvolvedores pensam pela primeira vez em gerenciar dados ou escolher um banco de dados para sua aplicação, a primeira coisa que muitas vezes vem à mente é —

— isso mesmo, uma tabela.

Eles então configuram diferentes tabelas para os diferentes tipos de dados, como ter uma tabela para usuários e outra para produtos, pedidos, e assim por diante. Com os dados espalhados por diferentes tabelas, elas estão obrigatoriamente relacionadas umas às outras. Portanto, as tabelas terão referências aos itens em outras tabelas por meio de uma chave estrangeira. E, finalmente, eles podem acabar escolhendo um banco de dados relacional toda vez para resolver seus problemas. Especialmente ao lidar com relações, a ideia de um banco de dados não relacional pode parecer muito contra-intuitiva.

Mas o problema é — os dados nem sempre são planos. As necessidades de dados podem ser complexas, e quando os desenvolvedores visualizam seus dados sem considerar bancos de dados, muitas vezes não é tabular. Em vez disso, pode aparecer aninhado, hierárquico ou até mesmo como um gráfico.

Graph, nested, and hierarchical data

Você não precisa imaginar uma tabela toda vez que começa a trabalhar com dados. Em aplicações modernas, os dados frequentemente precisam ter um esquema flexível com tipos de dados complexos. Portanto, achatá-los em uma tabela pode não ser sempre a melhor ideia. Além disso, bancos de dados relacionais também têm suas próprias limitações de escalabilidade. À medida que você escala, pode precisar se preocupar com sharding, que frequentemente requer mudanças significativas no nível da aplicação.

Introduza bases de dados não relacionais, ou mais comumente conhecidas como NoSQL. Você pode estar perdendo a oportunidade de extrair todo o potencial do NoSQL se tem evitado usá-las em suas escolhas de design. Neste artigo, definimos rapidamente o que são bases de dados não relacionais e depois fornecemos diferentes escolhas de bases de dados NoSQL para diferentes problemas da vida real.

No final, também abordaremos quais vantagens as bases de dados NoSQL oferecem em relação às relacionais e também mencionaremos cenários em que uma base de dados relacional ainda é uma escolha melhor.

Bases de Dados Não Relacionais, ou NoSQL

De forma simples, essas bases de dados armazenam dados em um formato não tabular. Elas vêm em diferentes tipos, cada uma construída para propósitos específicos e o tipo de dados não estruturados que podem suportar. As mais comuns são:

  1. Bases de dados de documentos: Armazenam dados em documentos semelhantes ao JSON
  2. Bases de dados chave-valor: Armazenam dados com uma estrutura ‘chave-valor’ para chaves únicas.
  3. Bases de dados de grafos: Utilizam nós, arestas e propriedades para representar e armazenar relações entre pontos de dados.

Outros tipos são bases de dados orientadas a colunas, em memória e de séries temporais.

Diferentes fornecedores de bases de dados NoSQL oferecem recursos como criação de índices em determinados campos, SDKs amigáveis para desenvolvedores, alta disponibilidade, operações transacionais e a capacidade de dimensionar facilmente sua base de dados para cima ou para baixo.

Resolvendo Problemas da Vida Real Com NoSQL

Vamos ver alguns exemplos em que resolvemos problemas da vida real com bancos de dados NoSQL.

Construindo um Aplicativo de Blog que Suporta Comentários e Tags

Bancos de dados de documentos são os melhores para sistemas de gerenciamento de conteúdo desse tipo. Cada conteúdo pode ser um documento separado. O esquema é flexível, e cada documento pode conter subcoleções. Você pode aproveitar as capacidades de indexação de campos de array dos provedores de banco de dados de documentos para realizar consultas complexas, por exemplo, buscar todos os blogs com suas tags.

Plataformas de Redes Sociais e Profissionais

Os bancos de dados de grafo ajudam a definir relacionamentos complexos entre pessoas. Encontre facilmente amigos de amigos por meio de pesquisas de grafo.

Dados de Sensores IoT

Use dados de séries temporais para lidar com grandes quantidades de dados com marcação de tempo de um dispositivo sensorial.

Carrinho de Compras

Use um banco de dados de pares chave-valor, que oferece alta concorrência com leituras e gravações rápidas. Você também pode usar bancos de dados de pares chave-valor para armazenar informações de sessão dos usuários, e o carrinho de compras pode ser um campo dentro da sessão (para uma sessão de compras individual).

Engenhos de Recomendação

Use bancos de dados de grafo para mapear relacionamentos entre usuários, produtos e preferências.

Onde o NoSQL Supera os Bancos de Dados Relacionais

Abaixo estão alguns pontos em que os bancos de dados NoSQL oferecem vantagens sobre os bancos de dados relacionais:

  1. Produtividade do desenvolvedor: Os provedores de banco de dados NoSQL oferecem APIs e SDKs personalizados para o desenvolvimento de aplicativos modernos, permitindo prototipagem e desenvolvimento mais rápidos.
  2. Escalabilidade: Os bancos de dados NoSQL escalonam horizontalmente (onde você simplesmente precisa adicionar mais servidores ou nós), o que é mais econômico e mais fácil de gerenciar em comparação com a escalabilidade vertical requerida pelos bancos de dados relacionais.
  3. Flexibilidade: O NoSQL oferece um esquema flexível, que é perfeito para o desenvolvimento ágil e requisitos de aplicativos em evolução.
  4. Manuseio de dados aninhados: Muitas vezes, os dados são aninhados ou hierárquicos, como em formatos JSON ou XML. Os bancos de dados NoSQL podem suportar esses formatos, nos quais uma transformação complexa pode ser necessária ao usar bancos de dados relacionais para isso.

Onde os Bancos de Dados Relacionais Ainda Têm Vantagem

Abaixo estão alguns dos casos de uso em que os bancos de dados relacionais ainda são relevantes e são uma boa ideia.

  1. Análises e relatórios: Os bancos de dados relacionais são otimizados para consultas ad-hoc, agregações e relatórios. Para qualquer caso de uso analítico e de relatórios, os bancos de dados relacionais ainda são uma escolha preferida.
  2. Uso pesado de relações e junções: Embora você ainda possa gerenciar e trabalhar com relações com bancos de dados NoSQL, se o seu aplicativo depende muito de junções entre conjuntos de dados diferentes, os bancos de dados relacionais ainda podem ser uma boa ideia.
  3. Consistência sobre disponibilidade: Em cenários onde a consistência dos dados é mais importante que a disponibilidade (por exemplo, transações financeiras), bancos de dados relacionais podem oferecer mais garantias.

E isso conclui nosso artigo. Exploramos o que são bancos de dados NoSQL e como eles abordam desafios da vida real na gestão de dados. Os bancos de dados NoSQL abrem um mundo de possibilidades para aplicações modernas, desde sua flexibilidade em lidar com estruturas de dados complexas até os recursos poderosos oferecidos pelos provedores. Para aqueles que ainda não tentaram trabalhar com NoSQL, espero que isso os inspire a experimentar em seu próximo projeto — você pode descobrir que é a solução perfeita para suas necessidades.

Source:
https://dzone.com/articles/nosql-for-relational-minds