Início
topics
bancos de dados nosql
O NoSQL, também conhecido como "não somente SQL" ou "não SQL", é uma abordagem de projeto de banco de dados que possibilita o armazenamento e a consulta de dados fora das estruturas tradicionais encontradas nos bancos de dados relacionais.
Embora o NoSQL ainda possa armazenar dados encontrados em sistemas de gerenciamento de banco de dados relacional (RDBMS), a forma de armazenamento é diferente do RDBMS. A decisão de utilizar um banco de dados relacional em vez de um banco de dados não relacional é amplamente contextual e varia dependendo do caso de uso.
No lugar da estrutura tabular típica dos bancos de dados relacionais, os bancos de dados NoSQL armazenam dados em estruturas de dados, como um documento JSON. Como esse design de banco de dados não relacional não exige um esquema, oferece rápida escalabilidade para gerenciar conjuntos de dados grandes e normalmente não estruturados.
NoSQL também é um tipo de banco de dados distribuído, o que significa que as informações são copiadas e armazenadas em vários servidores, que podem ser remotos ou locais. Isso garante a disponibilidade e a confiabilidade dos dados. Se alguns dos dados ficarem offline, o restante do banco de dados poderá continuar a ser executado.
Hoje, as empresas precisam gerenciar grandes volumes de dados em alta velocidade, com a possibilidade de ampliação rápida para executar aplicações da web modernas em quase todos os setores. Nesta era de crescimento na nuvem, big data e aplicativos móveis e na web, os bancos de dados NoSQL oferecem essa velocidade e escalabilidade, tornando-os uma escolha popular pelo desempenho e pela facilidade de uso.
A linguagem de consulta estruturada (SQL) é comumente mencionada em relação ao NoSQL. Para entender melhor a diferença entre NoSQL e SQL, talvez ajude conhecer a história do SQL, linguagem de programação utilizada para ler informações específicas de bancos de dados.
Antes dos bancos de dados relacionais, as empresas utilizavam um sistema de banco de dados hierárquico com uma estrutura em árvore para as tabelas de dados. Esses primeiros sistemas de gerenciamento de banco de dados (DBMS) permitiam que os usuários organizassem grandes quantidades de dados. No entanto, eram complexos, muitas vezes proprietários de uma aplicação específica e limitados na capacidade de descoberta dentro dos dados. Essas limitações acabaram levando ao desenvolvimento de sistemas de gerenciamento debancos de dados relacionais, que organizavam os dados em tabelas. O SQL oferecia uma interface para interagir com dados relacionais, possibilitando que os analistas vinculassem tabelas vinculando campos em comum.
Com o passar do tempo, as demandas por uso mais rápido e díspar de grandes conjuntos de dados tornaram-se cada vez mais importantes para tecnologias emergentes, como aplicativos de comércio eletrônico. Os programadores precisavam de algo mais flexível do que bancos de dados SQL (ou seja, bancos de dados relacionais). O NoSQL tornou-se essa alternativa.
Embora o NoSQL tenha apresentado uma alternativa ao SQL, esse avanço não substituiu de forma alguma os bancos de dados SQL. Por exemplo, digamos que você esteja gerenciando pedidos de varejo em uma empresa. Em um modelo relacional, as tabelas individuais gerenciariam os dados do cliente, os dados do pedido e os dados do produto em separado e eles seriam unidos por meio de uma chave comum exclusiva, como a ID do cliente ou a ID do pedido. Embora isso seja ótimo para armazenar e recuperar dados rápido, exige muita memória. Se você quiser adicionar mais memória, os bancos de dados SQL podem ser dimensionados somente no sentido vertical, não horizontal, o que significa que sua capacidade de adicionar mais memória está limitada ao hardware disponível. O resultado é que o dimensionamento vertical acaba limitando o armazenamento e a recuperação de dados da empresa.
Por outro lado, os bancos de dados NoSQL são não relacionais, o que elimina a necessidade de vincular tabelas. Seus recursos integrados de fragmentação e alta disponibilidade facilitam o dimensionamento horizontal. Se um único servidor de banco de dados não for suficiente para armazenar todos os seus dados ou lidar com todas as consultas, a carga de trabalho poderá ser dividida em dois ou mais servidores, permitindo que as empresas expandam seus dados horizontalmente.
Embora cada tipo de banco de dados tenha suas próprias vantagens, as empresas geralmente utilizam bancos de dados NoSQL e relacionais em um único aplicativo. Os provedores de nuvem atuais podem oferecer compatibilidade a bancos de dados SQL ou NoSQL. O banco de dados que você vai escolher depende dos seus objetivos.
Para saber mais sobre as diferenças entre as duas opções, consulte "Bancos de dados SQL vs. NoSQL: Qual é a diferença?"
Aprenda os principais benefícios da IA generativa e como as organizações podem incorporar IA generativa e aprendizado de máquina em seus negócios.
O NoSQL oferece outras opções para organizar dados de várias maneiras. Como oferece diversas estruturas de dados, o NoSQL pode ser aplicado a análise de dados, gerenciamento de big data, redes sociais e desenvolvimento de aplicativos móveis.
Um banco de dados NoSQL gerencia informações por meio qualquer um destes modelos de dados primários:
Normalmente, essa é considerada a forma mais simples de bancos de dados NoSQL. Esse modelo de dados sem esquema é organizado em um dicionário de pares de chave-valor, onde cada item tem uma chave e um valor. A chave poderia ser algo semelhante ao encontrado em um banco de dados SQL, como uma identificação de carrinho de compras, enquanto o valor é um conjunto de dados, como cada item individual do carrinho de compras desse usuário. É comumente utilizado em cache e armazenamento de informações de sessões de usuários, como carrinhos de compras. No entanto, não é a solução ideal para extrair vários registros de uma vez. Redis e Memcached são exemplos de bancos de dados de valor-chave em código aberto.
Conforme sugerido pelo nome, os bancos de dados de documentos armazenam dados como documentos. Eles podem ser úteis no gerenciamento de dados semi-estruturados, e os dados são tipicamente armazenados em formatos JSON, XML ou BSON. Isso mantém os dados reunidos quando utilizados em aplicações, reduzindo a quantidade de conversão necessária para utilizar os dados. Os desenvolvedores também ganham mais flexibilidade, já que os esquemas de dados não precisam ser os mesmos entre os documentos (por exemplo, nome vs. primeiro_nome). No entanto, isso pode ser problemático em transações complexas, levando ao corrompimento de dados. São casos de uso populares de bancos de dados de documentos os sistemas de gerenciamento de conteúdo e os perfis de usuário. Um exemplo de banco de dados baseado em documentos é o MongoDB, componente de banco de dados da stack MEAN.
Quer mais informações sobre o MongoBD? Consulte o tutorial da IBM sobre como começar a usar o IBM Cloud Databases for MongoDB.
Esses bancos de dados armazenam informações em colunas, possibilitando que os usuários acessem somente as colunas específicas de que precisam sem alocar memória adicional para dados irrelevantes. Esse banco de dados tenta resolver as deficiências dos armazenamentos baseados em chave-valor e de documentos, mas como pode ser um sistema mais complexo de gerenciar, não é recomendado para equipes iniciantes e projetos mais novos. Apache HBase e Apache Cassandra são exemplos de bancos de dados de colunas amplas em código aberto. O Apache HBase é desenvolvido sobre o Hadoop Distributed Files System que oferece uma maneira de armazenar conjuntos de dados esparsos, comumente utilizados em muitas aplicações de big data. O Apache Cassandra, por outro lado, foi projetado para gerenciar grandes quantidades de dados em vários servidores e clusters que abrangem diversos data centers. Tem sido utilizado em uma variedade de casos de uso, como sites de redes sociais e análise de dados em tempo real.
Esse tipo de banco de dados normalmente abriga dados de um grafos de conhecimento. Os elementos de dados são armazenados como nós, arestas e propriedades. Qualquer objeto, lugar ou pessoa pode ser um nó. Uma aresta define a relação entre os nós. Por exemplo, um nó pode ser um cliente, como a IBM, e uma agência como a Ogilvy. Uma vantagem seria categorizar o relacionamento como um relacionamento com o cliente entre a IBM e a Ogilvy.
Os bancos de dados em grafos são utilizados para armazenar e gerenciar uma rede de conexões entre elementos dentro do grafo. Neo4j (link fora da IBM), serviço de banco de dados baseado em grafos baseado em Java com uma edição da comunidade em código aberto, onde os usuários podem comprar licenças para backup online e extensões de alta disponibilidade, ou uma versão licenciada pré-embalada com backup e extensões incluídas.
Com esse tipo de banco de dados, como o IBM solidDB, os dados residem na memória principal e não no disco, tornando o acesso aos dados mais rápido do que com bancos de dados convencionais baseados em disco.
Muitas empresas entraram no cenário NoSQL. Além dos mencionados acima, veja a seguir alguns bancos de dados NoSQL populares:
Para saber mais sobre o estado dos bancos de dados, consulte "Uma breve visão geral do cenário dos bancos de dados".
Cada tipo de banco de dados NoSQL tem pontos fortes que o tornam melhor para casos de uso específicos. No entanto, todos eles compartilham as seguintes vantagens para os desenvolvedores e criam a estrutura para oferecer serviços melhores aos clientes:
Em poucas palavras, os bancos de dados NoSQL oferecem alto desempenho, disponibilidade e escalabilidade.
A estrutura e o tipo de banco de dados NoSQL que você escolher dependerá de como sua organização pretende utilizá-lo. Veja a seguir alguns usos específicos de vários tipos de bancos de dados NoSQL.
A necessidade de grandes empresas de prestar serviços sem latência e de expandir mais rapidamente estimulou o crescimento dos microsserviços, o que levou as empresas a examinar qual tipo de banco de dados usar com diversos aplicativos.
As empresas descobriram que utilizar um único banco de dados relacional para cada componente de um aplicativo tem suas limitações, especialmente quando há alternativas melhores para componentes específicos. Os microsserviços são em parte uma opção atraente porque eliminam a necessidade de um único armazenamento de dados compartilhado para todo um aplicativo. Em vez disso, o aplicativo tem muitos serviços levemente acoplados e implantáveis de forma independente, cada um com seu próprio modelo de dados e banco de dados, integrados por meio de gateways de API ou iPaaS.
O padrão da utilização de vários bancos de dados em um único aplicativo, também conhecido como persistência poliglota, ajudou a criar espaço no mercado para os bancos de dados NoSQL prosperarem. Hoje, os desenvolvedores podem utilizar o banco de dados certo para o microsserviço certo sem tentar fazer tudo funcionar no contexto de um único banco de dados relacional.
A camada de dados para aplicações de hiperescala resilientes e globalmente disponíveis, baseados no Apache CouchDB de código aberto
Explore as principais diferenças entre bancos de dados SQL e NoSQL e saiba qual o tipo de banco de dados mais adequado para vários casos de uso.
Saiba como acelerar a mudança para as compras online.
Explore os diversos fatores a serem considerados quando tentar definir as melhores opções de banco de dados ao refatoração para uma abordagem de microsserviços.