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, eles estão obrigados a ter um relacionamento entre si. 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, frequentemente não são tabulares. Em vez disso, podem aparecer de forma aninhada, hierárquica ou até mesmo como um grafo.

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 muitas vezes precisam ter um esquema flexível com tipos de dados complexos. Portanto, achatá-los em uma tabela pode nem sempre ser a melhor ideia. Além disso, os 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, o que muitas vezes requer mudanças significativas no nível da aplicação.

Entre os bancos de dados não relacionais, ou mais comumente conhecidos como NoSQL. Você pode estar perdendo a oportunidade de extrair todo o potencial do NoSQL se estiver evitando-os em suas escolhas de design. Neste artigo, definimos rapidamente o que são bancos de dados não relacionais e, em seguida, fornecemos diferentes opções de bancos de dados NoSQL para diferentes problemas da vida real.

No final, também abordaremos quais vantagens os bancos de dados NoSQL oferecem em relação aos relacionais e também tocaremos em cenários onde um banco de dados relacional ainda é uma escolha melhor.

Bancos de Dados Não Relacionais, ou NoSQL

Em termos simples, esses bancos de dados armazenam dados em um formato não tabular. Eles vêm em diferentes tipos, cada um projetado para propósitos específicos e o tipo de dados não estruturados que podem suportar. Os mais comuns são:

  1. Bancos de dados de documentos: Armazenam dados em documentos semelhantes ao JSON
  2. Bancos de dados de chave-valor: Armazenam dados com estrutura de ‘chave-valor’ para chaves exclusivas.
  3. Bancos de dados de grafos: Usam nós, arestas e propriedades para representar e armazenar relacionamentos entre pontos de dados.

Outros tipos são bancos de dados orientados a coluna, em memória e de séries temporais.

Diferentes provedores de bancos de dados NoSQL oferecem recursos como criação de índices em certos campos, SDKs amigáveis para desenvolvedores, alta disponibilidade, operações transacionais e a capacidade de escalar facilmente seu banco de dados para cima ou para baixo.

Resolvendo Problemas da Vida Real com NoSQL

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

Construindo uma Aplicação de Blog que Suporta Comentários e Tags

Bancos de dados de documentos são os melhores para sistemas de gerenciamento de conteúdo. 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 campo de array dos provedores de banco de dados de documentos para realizar consultas complexas, por exemplo, buscando todos os blogs com suas tags.

Plataformas de Redes Sociais e Profissionais

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

Dados de Sensores IoT

Use dados de séries temporais para lidar com grandes quantidades de dados com timestamp de um dispositivo de sensor.

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 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).

Motores de Recomendação

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

Onde o NoSQL supera os Bancos de Dados Relacionais

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

  1. Produtividade do desenvolvedor: Provedores de bancos de dados NoSQL oferecem APIs e SDKs adaptados para o desenvolvimento moderno de aplicações, permitindo protótipos e desenvolvimento mais rápidos.
  2. Escalabilidade: Bancos de dados NoSQL escalam horizontalmente (onde você simplesmente precisa adicionar mais servidores ou nós), o que é econômico e mais fácil de gerenciar em comparação com a escalabilidade vertical exigida por bancos de dados relacionais.
  3. Flexibilidade: NoSQL oferece um esquema flexível, que é perfeito para desenvolvimento ágil e requisitos de aplicação em evolução.
  4. Manipulação de dados aninhados: Muitas vezes, os dados são aninhados ou hierárquicos, como nos formatos JSON ou XML. Bancos de dados NoSQL podem suportar esses formatos, onde 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 onde os bancos de dados relacionais permanecem relevantes e são uma boa ideia.

  1. Analytics e relatórios: Bancos de dados relacionais são otimizados para consultas ad-hoc, agregações e relatórios. Para quaisquer casos de uso analíticos e de relatórios, os bancos de dados relacionais ainda são uma escolha preferida.
  2. Uso intenso de relações e junções: Embora você ainda possa gerenciar e trabalhar com relações em bancos de dados NoSQL, se sua aplicação depender muito de junções entre diferentes conjuntos de dados, 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 do 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 experimentaram o NoSQL, espero que isso os inspire a tentar 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