Prévia do material em texto
BANCOS DE DADOS NÃO RELACIONAIS Unidade 1 Introdução aos bancos de dados não relacionais CEO DAVID LIRA STEPHEN BARROS Diretora Editorial ALESSANDRA FERREIRA Gerente Editorial LAURA KRISTINA FRANCO DOS SANTOS Projeto Gráfico TIAGO DA ROCHA Autoria JÉSSICA LAISA DIAS DA SILVA 4 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 A U TO RI A Jéssica Laisa Dias da Silva Olá, possuo graduação em Sistema da Informação e Mestrado em Sistema e Computação na UFRN. Tenho experiência na área de Informática na educação, com ênfase em Mineração de Dados Educacionais, como também atuo no estímulo dos jovens e crianças no estudo da programação. Realizo trabalhos e pesquisas voltados ao universo dos jogos digitais inseridos no contexto educacional, como incentivo deles no ensino dos jovens e aos professores. Atualmente realizo pesquisas no contexto de disseminação do pensamento computacional, para crianças e jovens. As minhas áreas de interesse são: Educação, Engenharia de software, Mineração de dados, Pensamento computacional, Jogos digitais educativos e Gerenciamento de projeto. Sou apaixonada pelo que faço e adoro transmitir minha experiência de vida àqueles que estão iniciando em suas profissões. Por isso fui convidada pela Editora Telesapiens a integrar seu elenco de autores independentes. Estou muito feliz em poder ajudar você nesta fase de muito estudo e trabalho. Conte comigo! 5BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 ÍC O N ES Esses ícones aparecerão em sua trilha de aprendizagem nos seguintes casos: OBJETIVO No início do desenvolvimento de uma nova competência. DEFINIÇÃO Caso haja a necessidade de apresentar um novo conceito. NOTA Quando são necessárias observações ou complementações. IMPORTANTE Se as observações escritas tiverem que ser priorizadas. EXPLICANDO MELHOR Se algo precisar ser melhor explicado ou detalhado. VOCÊ SABIA? Se existirem curiosidades e indagações lúdicas sobre o tema em estudo. SAIBA MAIS Existência de textos, referências bibliográficas e links para aprofundar seu conhecimento. ACESSE Se for preciso acessar sites para fazer downloads, assistir vídeos, ler textos ou ouvir podcasts. REFLITA Se houver a necessidade de chamar a atenção sobre algo a ser refletido ou discutido. RESUMINDO Quando for preciso fazer um resumo cumulativo das últimas abordagens. ATIVIDADES Quando alguma atividade de autoaprendizagem for aplicada. TESTANDO Quando uma competência é concluída e questões são explicadas. 6 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 SU M Á RI O Visão geral dos bancos de dados NoSQL ................................. 9 O paradigma NoSQL: uma introdução............................................................. 9 Principais características dos bancos de dados NoSQL ............................. 12 Modelos de dados NoSQL ...............................................................................15 Casos de uso e vantagens do NoSQL.............................................. 17 Bancos de dados relacionais versus não relacionais ........... 23 Fundamentos dos bancos de dados relacionais ........................................ 23 Características dos bancos de dados não relacionais ............................... 26 Comparação entre bancos de dados relacionais e não relacionais ........ 30 Transição para o NoSQL: quando e porquê? ................................. 34 Tipos de bancos de dados NoSQL .......................................... 38 Tipos de bancos de dados NoSQL..................................................................38 Propósito e vantagens de cada tipo de banco de dados NoSQL ............. 41 Casos de aplicação para bancos de dados NoSQL ..................................... 45 Estudos de caso e exemplos práticos de bancos de dados NoSQL ...................................................................................................47 Casos de uso e aplicações de NoSQL .................................... 53 Características dos dados e requisitos de desempenho ........................... 53 Análise de casos de uso específicos para NoSQL ....................................... 56 Comparação de soluções NoSQL em diferentes cenários ........................ 59 Desafios e considerações na implementação do NoSQL ............ 62 7BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 A PR ES EN TA ÇÃ O Você sabia que a área de Bancos de dados não relacionais é uma das mais demandadas na indústria tecnológica? Isso mesmo! A área de Bancos de Dados Não Relacionais faz parte da cadeia de inovação e infraestrutura tecnológica de uma empresa. Sua principal responsabilidade é gerenciar e otimizar o armazenamento, recuperação e manipulação de grandes volumes de dados, especialmente em formatos que não se encaixam bem no modelo relacional tradicional. Isso inclui dados não estruturados e semiestruturados, como textos, imagens, vídeos, dados de redes sociais e muito mais, exigindo flexibilidade, escalabilidade e desempenho em ambientes de big data. Os profissionais dessa área devem estar aptos a escolher a solução de banco de dados mais adequada, compreender as nuances entre os diferentes tipos de bancos de dados NoSQL e implementá-los de maneira eficaz para atender às necessidades específicas do negócio. Com a explosão de dados gerados em diversas plataformas e a crescente necessidade de análises em tempo real, os Bancos de Dados Não Relacionais se tornaram essenciais para o sucesso operacional e estratégico das empresas. Entendeu? Ao longo desta unidade letiva, você vai mergulhar nesse universo, descobrindo como os Bancos de Dados Não Relacionais estão revolucionando o campo da tecnologia da informação e abrindo novos caminhos para a inovação empresarial! 8 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 O BJ ET IV O S Olá. Seja muito bem-vindo à Unidade 1. Nosso objetivo é auxiliar você no desenvolvimento das seguintes competências profissionais até o término desta etapa de estudos: • Compreender os fundamentos de NoSQL. • Diferenciar bancos de dados relacionais dos não relacionais. • Identificar diferentes tipos de bancos de dados NoSQL, entendendo o propósito de cada um e seus casos de aplicações. • Reconhecer cenários apropriados para aplicação do NoSQL. 9BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Visão geral dos bancos de dados NoSQL OBJETIVO Ao término deste capítulo, você será capaz de entender como funciona a área de bancos de dados NoSQL. Isso será fundamental para o exercício de sua profissão no campo da Ciência da Computação e Tecnologia da Informação. As pessoas que tentaram ingressar no universo dos bancos de dados NoSQL sem a devida instrução enfrentaram desafios significativos ao lidar com esse cenário tecnológico em constante evolução. E então? Motivado para desenvolver esta competência e dominar os conceitos essenciais dos bancos de dados NoSQL? Vamos lá! O paradigma NoSQL: uma introdução O paradigma NoSQL, que significa “Not Only SQL” ou “Não Apenas SQL”, representa uma abordagem revolucionária na gestão de dados, desafiando o modelo de bancos de dados relacionais tradicionais. Neste capítulo, exploraremos o que é o paradigma NoSQL e como ele se tornou uma peça fundamental na evolução da gestão de dados. Para fundamentar nossa discussão, vamos considerar a história e as motivações por trás do desenvolvimento de bancos de dados NoSQL. O paradigma NoSQL engloba um conjunto diversificado de sistemas de gerenciamento de banco de dados que se afastam das estruturas rígidas e predefinidas dos bancos de dados relacionais. 10 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 A sua importância reside na capacidade de lidar com as demandas crescentes da era da informação, em que dados não estruturados ou semiestruturados estão se tornando sucessivamente mais comuns. Enquanto os bancos de dados relacionaisinstrução tiveram problemas ao enfrentar desafios como a seleção inadequada do tipo de banco de dados, dificuldades de integração e problemas de escalabilidade. E então? Motivado para desenvolver esta competência? Vamos lá! Características dos dados e requisitos de desempenho Compreender as características dos dados e requisitos de desempenho é essencial ao considerar a adoção de bancos de dados NoSQL. Este subtítulo aborda como as peculiaridades dos dados influenciam diretamente a escolha dessas soluções, focando especialmente em aspectos como volume, variedade, velocidade e veracidade, bem como a demanda por escalabilidade, flexibilidade de esquemas e processamento rápido. Começamos com o conceito de “volume”, um dos pilares da Big Data. O volume refere-se à quantidade massiva de dados gerados a cada segundo por dispositivos móveis, sensores, transações on-line, entre outros. Bancos de dados NoSQL são projetados para lidar com tais volumes crescentes de dados de forma mais eficiente que os sistemas relacionais tradicionais. A “variedade” é outro fator crítico. Ela descreve a diversidade dos formatos de dados, desde dados estruturados 54 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 até dados não estruturados, como textos, imagens, vídeos e logs. O NoSQL, com sua natureza não restritiva e esquemas flexíveis, é ideal para manipular essa heterogeneidade, como apontado por Tiwari (2011). A “velocidade” diz respeito à rapidez com que os dados são gerados e precisam ser processados e analisados. O processamento em tempo real é um requisito vital para muitas aplicações modernas, como sistemas de recomendação e monitoramento de mídia social. Nesse contexto, o NoSQL oferece vantagens significativas devido à sua capacidade de rápida escrita e leitura de dados, conforme explicado por Sadalage e Fowler (2012). A “veracidade” relaciona-se com a qualidade e a credibilidade dos dados. Em ambientes em que a precisão é crítica, como no setor financeiro ou em aplicações de saúde, o NoSQL pode oferecer mecanismos robustos para garantir a consistência dos dados, ainda que com abordagens diferentes dos sistemas relacionais. Além desses quatro Vs, a escalabilidade é um aspecto fundamental. Os bancos de dados NoSQL são reconhecidos pela sua capacidade de escalar horizontalmente, o que significa que eles podem expandir sua capacidade de armazenamento e processamento adicionando mais servidores na rede. Essa característica é crucial para lidar com o crescimento exponencial de dados, um ponto-chave discutido. A flexibilidade de esquemas é outra vantagem notável do NoSQL. Diferente dos sistemas relacionais, que exigem um esquema definido antes do armazenamento de dados, muitos bancos de dados NoSQL permitem a alteração do esquema “on- the-fly”. Essa flexibilidade é particularmente útil em ambientes 55BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 ágeis e em projetos de inovação, em que os requisitos podem mudar rapidamente. O processamento rápido é também um atributo inerente ao NoSQL. Esses sistemas são otimizados para consultas rápidas, especialmente em operações de leitura e escrita, o que é vital para aplicações que requerem respostas em tempo real, como jogos on-line e análise de mídia social. Em relação à consistência dos dados, o modelo NoSQL oferece várias abordagens, que vão desde a consistência eventual até modelos mais estritos. Essa flexibilidade permite que os desenvolvedores escolham o nível de consistência que melhor se adapta às necessidades de sua aplicação. A tolerância a falhas é outra característica importante dos bancos de dados NoSQL. Sistemas como Cassandra e Riak são projetados para garantir alta disponibilidade, mesmo na ocorrência de falhas de hardware ou de rede, aspecto fundamental em sistemas críticos. A capacidade de distribuição geográfica dos dados é também uma vantagem significativa. Bancos de dados NoSQL como o MongoDB oferecem suporte para distribuição de dados em múltiplas regiões geográficas, o que é crucial para aplicações globais. 56 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Análise de casos de uso específicos para NoSQL A análise de casos de uso específicos para NoSQL é um tópico fundamental para compreender as aplicações práticas e vantagens dos bancos de dados NoSQL em diversos setores. Este subtítulo explorará exemplos específicos de indústrias e aplicações onde o NoSQL se destaca, oferecendo insights sobre como essas tecnologias estão transformando o gerenciamento de dados. Começamos com o gerenciamento de Big Data, um dos campos mais relevantes para o NoSQL. Em um estudo conduzido por Cattell (2011), é evidenciado como os bancos de dados NoSQL são capazes de processar volumes enormes de dados de forma eficiente, algo crucial para empresas que lidam com terabytes ou petabytes de informação. EXEMPLO: Empresas como Facebook e Twitter utilizam variantes do NoSQL para gerenciar os dados gerados por bilhões de interações de usuários. Nos sistemas de recomendação, o NoSQL oferece a flexibilidade necessária para armazenar e processar dados variados de usuários e produtos, facilitando algoritmos complexos de recomendação. A Amazon, como descrito por Fasel e Meier (2016), usa soluções NoSQL para alimentar seu sofisticado sistema de recomendações, lidando com um vasto conjunto de dados de clientes e produtos. Em redes sociais, o NoSQL é fundamental para armazenar e gerenciar as interações sociais e conteúdo gerado pelos usuários. A capacidade de escalar horizontalmente oferecida pelo NoSQL é vital para suportar o crescimento exponencial do número de usuários e a diversidade de dados gerados. 57BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 No campo da IoT (Internet das Coisas), o NoSQL desempenha um papel crítico ao lidar com a torrente de dados gerados por dispositivos conectados. A necessidade de processar grandes volumes de dados em tempo real, muitas vezes em ambientes com baixa latência, torna as soluções NoSQL ideais. IMPORTANTE O processamento de dados em tempo real é outra área em que o NoSQL brilha. Sistemas que exigem análises rápidas e decisões em tempo real, como monitoramento de transações financeiras ou análise de tráfego em redes, se beneficiam enormemente da alta velocidade de leitura/escrita e da baixa latência oferecidas pelo NoSQL. Além desses casos, o NoSQL também encontra aplicação em sistemas de gestão de conteúdo, em que a flexibilidade de esquema e a capacidade de gerenciar diferentes tipos de conteúdo são essenciais. Empresas de mídia e entretenimento utilizam NoSQL para gerenciar eficientemente conteúdos dinâmicos e interativos. No setor de saúde, o NoSQL é utilizado para armazenar e processar grandes volumes de dados de pacientes, desde registros eletrônicos de saúde até dados genômicos. A capacidade de lidar com dados não estruturados e a escalabilidade são aspectos cruciais nesse setor. Empresas de e-commerce utilizam NoSQL para gerenciar catálogos de produtos e históricos de transações, aproveitando a alta disponibilidade e a escalabilidade para garantir uma experiência de compra suave aos usuários. No setor financeiro, o NoSQL é usado para análise de risco, fraude e monitoramento de transações em tempo real, em que a capacidade de processar grandes volumes de transações rapidamente é essencial. 58 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Na indústria de jogos, NoSQL é utilizado para gerenciar dados de jogadores, sessões de jogos e interações em tempo real, em que a performance e a escalabilidade são fundamentais para suportar um grande número de usuários simultâneos. Imagem 1.5- Na indústria de jogos Fonte: Freepik. No setor de logística, o NoSQL auxilia no rastreamento de cargas e na otimização de rotas, gerenciando eficientemente grandes quantidades de dados geoespaciais e de sensores. Em sistemas educacionais, o NoSQL é empregado para personalizar a aprendizagem e gerenciargrandes conjuntos de dados educacionais, desde informações de alunos até recursos de aprendizagem interativos. Na gestão de recursos naturais, como na indústria de energia, o NoSQL é usado para analisar dados de sensores e otimizar a gestão de recursos. Por fim, no setor de segurança pública, o NoSQL é aplicado em sistemas de vigilância e análise de dados para prevenção de 59BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 crimes, em que a capacidade de processar rapidamente grandes volumes de dados de diferentes fontes é crucial. Em resumo, os casos de uso para NoSQL são tão variados quanto as próprias indústrias que os utilizam. A flexibilidade, escalabilidade e performance oferecidas pelo NoSQL tornam-no uma escolha ideal para uma ampla gama de aplicações, desde o gerenciamento de big data até sistemas em tempo real. Esses exemplos ilustram como o NoSQL está na vanguarda da inovação em gerenciamento de dados, fornecendo soluções eficientes e escaláveis para os desafios modernos de dados. Comparação de soluções NoSQL em diferentes cenários A comparação de soluções NoSQL em diferentes cenários é uma análise essencial para entender como cada tipo de banco de dados NoSQL se adapta a diferentes necessidades e contextos. Existem quatro principais categorias de bancos de dados NoSQL: documentais, chave-valor, colunares e grafos. Cada um possui características únicas que os tornam adequados para cenários específicos, com suas próprias vantagens e limitações. Começando com os bancos de dados documentais, como MongoDB e Couchbase, eles armazenam dados em documentos (geralmente formatos JSON ou BSON), o que os torna ideais para aplicações que lidam com dados semiestruturados. Esses sistemas são notáveis pela sua flexibilidade de esquema, facilitando a evolução do modelo de dados sem exigir alterações em todo o banco. Segundo Banker (2011), essa característica é particularmente vantajosa em ambientes de desenvolvimento ágeis e em situações em que os dados não seguem um padrão rígido. 60 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Os bancos de dados chave-valor, como Redis e DynamoDB, são conhecidos pela simplicidade e alta performance, especialmen- te em operações de leitura e escrita. Eles funcionam armazenando dados como um par de chave e valor, o que os torna extrema- mente eficientes para operações de acesso direto. Carlson (2013) destaca a aplicabilidade desses bancos de dados em cenários nos quais a velocidade de acesso é crítica, como em sistemas de cache e sessões de usuário. VOCÊ SABIA? Os bancos de dados colunares, como Cassandra e HBase, são otimizados para leitura e escrita rápida de grandes volumes de dados. Eles armazenam dados por colunas em vez de linhas, o que os torna ideais para análises de grandes datasets e para aplicações que realizam pesquisas intensivas em um número limitado de colunas. Stonebraker e Cetintemel (2005) ressaltam a eficácia dos bancos de dados colunares em cenários de data warehousing e processamento analítico. Os bancos de dados de grafos, como Neo4j e Titan, são projetados para armazenar e manipular relacionamentos entre dados. Eles são especialmente úteis em aplicações que necessitam de análise intensiva de relacionamentos, como redes sociais, sistemas de recomendação e detecção de fraudes. Robinson et al. (2013) ilustram como esses bancos de dados oferecem vantagens significativas em cenários em que as relações entre os dados são tão importantes quanto os próprios dados. Cada um desses tipos de NoSQL tem suas limitações. Bancos de dados documentais, por exemplo, podem não ser a melhor escolha para aplicações que requerem transações complexas ou joins entre diferentes documentos. Por outro lado, os bancos de dados chave-valor, apesar de sua alta performance, oferecem funcionalidades de consulta limitadas, o que pode ser 61BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 uma desvantagem para aplicações que necessitam de consultas complexas. IMPORTANTE Os bancos de dados colunares, enquanto excelentes para análises analíticas e operações em grandes volumes de dados, podem não ser tão eficientes em cenários que exigem atualizações frequentes de pequenas quantidades de dados. Além disso, sua natureza otimizada para colunas pode torná-los menos adequados para aplicações que requerem uma visão holística dos dados. Por fim, os bancos de dados de grafos, apesar de excelentes na gestão de relacionamentos complexos, podem ser excessivos para aplicações com estruturas de dados simples ou nas que as relações entre os dados não são um foco principal. Além disso, eles podem apresentar desafios em termos de escalabilidade e desempenho quando comparados a outros tipos de NoSQL em determinados cenários. Em resumo, a escolha do tipo de banco de dados NoSQL deve ser baseada nas necessidades específicas de cada aplicação. É importante considerar fatores como a natureza dos dados, os padrões de acesso, as necessidades de consulta e análise, e a escala na qual o sistema operará. Essa análise cuidadosa ajudará a maximizar os benefícios oferecidos pelo NoSQL, garantindo ao mesmo tempo que as limitações sejam minimizadas. 62 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Desafios e considerações na implementação do NoSQL Os desafios e considerações na implementação do NoSQL é crucial para organizações que planejam transitar ou integrar sistemas NoSQL em suas infraestruturas de TI. Apesar das inúmeras vantagens que os bancos de dados NoSQL oferecem, como escalabilidade, flexibilidade de esquema e capacidade de lidar com grandes volumes de dados, sua implementação vem acompanhada de diversos desafios. Esses incluem questões de migração, integração com sistemas existentes, segurança e consistência dos dados. Este subtítulo abordará esses desafios e discutirá estratégias para superá-los. O primeiro grande desafio é a migração de dados. Migrar dados de sistemas tradicionais baseados em SQL para sistemas NoSQL pode ser complexo, especialmente quando os dados estão em formatos altamente estruturados. A migração exige uma cuidadosa análise e mapeamento dos dados, além de uma compreensão profunda dos modelos de dados do NoSQL. Uma abordagem eficaz é a utilização de ferramentas de migração automatizadas que podem facilitar o processo, minimizando o risco de perda de dados. A integração com sistemas existentes é outro desafio significativo. Muitas organizações possuem um vasto conjunto de sistemas legados que precisam trabalhar em conjunto com as novas soluções NoSQL. Essa integração demanda uma abordagem cuidadosa para garantir que os sistemas possam comunicar-se eficientemente sem comprometer o desempenho. 63BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Segundo Sadalage e Fowler (2012), a utilização de APIs e serviços de middleware pode ser uma solução eficaz para integrar sistemas NoSQL com arquiteturas existentes. IMPORTANTE A segurança dos dados é outra consideração cru- cial na adoção do NoSQL. Os bancos de dados NoSQL, em geral, foram desenvolvidos com foco em escalabilidade e flexibilidade, e não necessaria- mente com recursos de segurança robustos. Isso pode representar um risco, especialmente em aplica- ções que lidam com dados sensíveis. Para lidar com essa questão, é importante implementar camadas adicionais de segurança, in- cluindo criptografia, autenticação forte e monitoramento constan- te, como sugerido por Redmond e Wilson (2012). A consistência dos dados é outra preocupação. Diferente- mente dos bancos de dados relacionais, que seguem o modelo ACID (Atomicidade, Consistência, Isolamento, Durabilidade), mui- tos bancos de dados NoSQL utilizam o modelo BASE (Basicamente Disponível, Estado Suave, Eventual Consistência). Isso pode levar a problemas de consistência de dados em aplicações que exigem alta precisão. Uma solução é a utilização de algoritmos de consistência mais fortes, como o modelo de consistência causal,que podem garantir um nível mais alto de precisão dos dados. Além desses desafios, há também a questão da escassez de habilidades. A tecnologia NoSQL ainda é relativamente nova, e pode haver uma falta de profissionais experientes no mercado. Isso exige que as organizações invistam em treinamento e desenvolvimento de suas equipes ou busquem parcerias com especialistas no assunto. 64 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Por fim, a escolha do tipo certo de banco de dados NoSQL para cada aplicação específica é crucial. Como diferentes tipos de NoSQL são otimizados para diferentes tipos de operações e cargas de trabalho, a escolha inadequada pode levar a problemas de desempenho e escalabilidade. VOCÊ SABIA? Na implementação de bancos de dados NoSQL, é crucial entender os requisitos específicos do negócio. Essa compreensão inclui o tipo de dados a serem armazenados, a frequência de acesso e atualização dos dados, além dos requisitos de escalabilidade e desempenho. A equipe responsável deve receber treinamento adequado nas tecnologias NoSQL, considerando suas diferenças significativas em relação aos bancos de dados relacionais em termos de design, operação e manutenção. É também essencial realizar uma análise de custo- benefício cuidadosa. Essa análise deve levar em conta não apenas os custos diretos, como licenciamento e infraestrutura, mas também os custos indiretos relacionados à migração, treinamento e manutenção a longo prazo. A adoção de um banco de dados NoSQL deve ser justificada por um retorno claro sobre o investimento. Além disso, a abordagem de testes e validação deve ser rigorosa. É fundamental garantir que o sistema NoSQL atenda aos requisitos de desempenho e escalabilidade e que os dados sejam migrados corretamente, sem perda de integridade ou informações. Por fim, é indispensável estabelecer estratégias robustas de backup e recuperação. Tais estratégias são fundamentais para proteger contra a perda de dados e assegurar a continuidade dos negócios em caso de falhas ou desastres imprevistos. 65BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Considerando todos esses fatores, as organizações podem efetivamente aproveitar as vantagens oferecidas pelos bancos de dados NoSQL, como sua flexibilidade, escalabilidade e desempenho, para atender às necessidades de dados complexos e em constante evolução no ambiente corporativo atual. Em suma, enquanto a implementação de soluções NoSQL oferece muitos benefícios, ela também apresenta vários desafios. Abordar esses desafios com uma estratégia cuidadosa, que inclui planejamento detalhado, utilização de ferramentas adequadas, e foco na segurança e na consistência dos dados, é fundamental para garantir uma transição bem-sucedida para o NoSQL. RESUMINDO E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que no subtítulo “Características dos dados e requisitos de desempenho” exploramos como as propriedades dos dados - volume, variedade, velocidade e veracidade - e as exigências de desempenho influenciam a escolha por soluções NoSQL. Discutimos a importância da escalabilidade, da flexibilidade de esquemas e da capacidade de processamento rápido que os bancos de dados NoSQL oferecem, destacando como essas características são fundamentais para lidar com as demandas de big data e aplicações modernas. Mergulhamos em diversos cenários práticos nos quais o NoSQL se destaca. Examinamos como diferentes setores, como redes sociais, sistemas de recomendação, Internet das Coisas (IoT) e processamento de dados em tempo real, se beneficiam das peculiaridades do NoSQL. Esses exemplos concretizam a aplicabilidade e a versatilidade do NoSQL em múltiplas áreas, 66 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 demonstrando seu valor em ambientes de dados diversificados e dinâmicos. Fizemos uma análise detalhada dos diferentes tipos de bancos de dados NoSQL - documentais, chave-valor, colunares e grafos - e como cada um se adequa a situações específicas. Discutimos suas vantagens e limitações em contextos distintos, oferecendo uma visão clara de como selecionar o tipo de banco de dados NoSQL mais adequado para cada necessidade específica de aplicação. Por fim, abordamos os obstáculos comuns enfrentados ao adotar soluções NoSQL. Questões como migração de dados, integração com sistemas existentes, segurança e consistência dos dados foram discutidas, junto com estratégias para superar esses desafios. Essa seção fornece um guia prático para a implementação bem-sucedida de bancos de dados NoSQL, considerando tanto os benefícios quanto os potenciais desafios. Esperamos que este capítulo tenha fornecido a você um entendimento abrangente dos bancos de dados NoSQL, suas aplicações, e as considerações importantes para sua implementação. Com esse conhecimento, você está agora melhor equipado para reconhecer cenários apropriados para a aplicação do NoSQL e para enfrentar os desafios que podem surgir ao longo do caminho. Avante na sua jornada de aprendizado e aplicação do NoSQL! 67BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 CATTELL, R. Scalable SQL and NoSQL Data Stores. ACM SIGMOD Record, v 39, n. 4, p. 12-27, 2011. Disponível em: https://dl.acm. org/doi/10.1145/1978915.1978919. Acesso em: 18 jan. 2024. BANKER, K. MongoDB in Action. New York: Manning Publications, 2011. CARLSON, J. L. Redis in Action. New York: Manning Publications, 2013. CHODOROW, K. MongoDB: The Definitive Guide. Sebastopol: O’Reilly Media. 2013. FASEL, D.; MEIER, A. Big Data: Grundlagen, Systeme und Nutzungspotenziale. Wiesbaden: Springer Vieweg, 2016. REDMOND, E.; WILSON, J. R. Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement. [S.l.]: Pragmatic Bookshelf, 2012. ROBINSON, I. et al. Graph Databases. Sebastopol: O’Reilly Media, 2013. SADALAGE, P. J.; FOWLER, M. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. Sebastopol: Addison- Wesley Professional, 2012. STONEBRAKER, M.; CETINTEMEL, U. One Size Fits All: An Idea Whose Time Has Come and Gone. In: 21st International Conference on Data Engineering, 2005, Tokyo. p. 2-11. Disponível em: https:// ieeexplore.ieee.org/document/1410100. Acesso em 18 jan. 2024. RE FE RÊ N CI A S https://dl.acm.org/doi/10.1145/1978915.1978919 https://dl.acm.org/doi/10.1145/1978915.1978919 https://ieeexplore.ieee.org/document/1410100 https://ieeexplore.ieee.org/document/1410100 Visão geral dos bancos de dados nosql O paradigma NoSQL: uma introdução Principais características dos bancos de dados NoSQL Modelos de dados NoSQL Casos de uso e vantagens do NoSQL Bancos de dados relacionais versus não relacionais Fundamentos dos bancos de dados relacionais Características dos bancos de dados não relacionais Comparação entre bancos de dados relacionais e não relacionais Transição para o NoSQL: quando e porquê? Tipos de bancos de dados nosql Tipos de bancos de dados NoSQL Propósito e vantagens de cada tipo de banco de dados NoSQL Casos de aplicação para bancos de dados NoSQL Estudos de caso e exemplos práticos de bancos de dados NoSQL Casos de uso e aplicações de nosql Características dos dados e requisitos de desempenho Análise de casos de uso específicos para NoSQL Comparação de soluções NoSQL em diferentes cenários Desafios e considerações na implementação do NoSQLtradicionais impõem uma estrutura tabular rigorosa, com esquemas fixos, o NoSQL oferece flexibilidade de esquema e escalabilidade horizontal para lidar com uma ampla variedade de tipos de dados e volumes massivos (Chodorow, 2013). A história do NoSQL remonta ao início do século XXI, quando empresas como Google, Amazon, Facebook e outras gigantes da tecnologia enfrentaram desafios significativos em relação ao gerenciamento de dados em grande escala. Com o rápido crescimento da internet e a necessidade de armazenar e processar enormes quantidades de dados de maneira eficiente, os sistemas de gerenciamento de banco de dados relacionais convencionais começaram a mostrar limitações. Imagem 1.1- Google Fonte: Freepik. 11BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 A motivação por trás do desenvolvimento de bancos de dados NoSQL foi a busca por soluções que pudessem lidar com as características únicas desses dados em escala. Os sistemas relacionais tradicionais não conseguiam acompanhar a velocidade, a escalabilidade e a variedade de dados que as empresas enfrentavam. Foi nesse contexto que surgiram os primeiros sistemas NoSQL, como o Google Bigtable e o Amazon DynamoDB. A escalabilidade horizontal, a capacidade de distribuição geográfica, a tolerância a falhas e a flexibilidade de esquema tornaram-se pontos cruciais para essas empresas. Assim, o NoSQL emergiu como uma alternativa viável e eficaz para lidar com essas demandas, impulsionando a evolução da gestão de dados na era digital. VOCÊ SABIA? Uma curiosidade interessante é que o termo “NoSQL” foi inicialmente cunhado durante uma reunião informal de desenvolvedores em 2009, quando Eric Evans, um dos participantes, usou a frase “NoSQL” para descrever sistemas de armazenamento de dados não relacionais. O termo foi criado mais como uma negação do SQL, que era o padrão nos bancos de dados relacionais, do que uma descrição precisa dos sistemas NoSQL. No entanto, essa simples designação pegou e se tornou a base para toda uma categoria de sistemas de gerenciamento de banco de dados. Em resumo, o paradigma NoSQL representa uma mudança fundamental na forma como os dados são gerenciados e manipulados. Sua importância reside na capacidade de fornecer soluções flexíveis e escaláveis para empresas que precisam lidar com dados diversificados e volumes massivos, impulsionando a inovação e a eficiência na gestão de informações. 12 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Principais características dos bancos de dados NoSQL Para compreender plenamente o paradigma NoSQL, é essencial analisar as características fundamentais que distinguem esses bancos de dados dos sistemas relacionais tradicionais. Neste capítulo, vamos explorar em detalhes as principais características dos bancos de dados NoSQL, como escalabilidade, flexibilidade de esquema, consistência e outros aspectos-chave. Uma das características mais distintivas dos bancos de dados NoSQL é a escalabilidade horizontal. Isso significa que esses sistemas são projetados para crescer facilmente, adicionando novos servidores ou clusters conforme a demanda aumenta. Essa capacidade é essencial para empresas que lidam com grandes volumes de dados e precisam de sistemas que possam lidar com o aumento do tráfego sem interrupções. Enquanto os bancos de dados relacionais muitas vezes enfrentam limitações de escalabilidade vertical, os sistemas NoSQL são altamente flexíveis nesse aspecto. Outra característica notável é a flexibilidade de esquema oferecida pelos bancos de dados NoSQL. Diferentemente dos sistemas relacionais, que exigem que os dados sejam organizados em esquemas predefinidos e estritamente estruturados, os bancos de dados NoSQL permitem que os dados sejam armazenados de forma mais flexível. Isso significa que você pode adicionar novos campos aos documentos ou registros sem a necessidade de alterar um esquema global, tornando mais fácil lidar com dados semiestruturados ou em constante evolução, como aqueles provenientes de redes sociais ou sensores. 13BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Modelos de consistência dos bancos de dados NoSQL também oferecem uma variedade de modelos de consistência para atender às necessidades específicas de diferentes aplicativos. Enquanto os sistemas relacionais aderem ao modelo ACID (Atomicidade, Consistência, Isolamento e Durabilidade), os bancos de dados NoSQL adotam modelos como o BASE (Basicamente Disponível, Tolerante a Partições e Estado Extensível). Esses modelos de consistência permitem que os desenvol- vedores escolham entre níveis variados de consistência e disponi- bilidade, dependendo das necessidades de suas aplicações. VOCÊ SABIA? Uma curiosidade fascinante sobre bancos de dados NoSQL está relacionada à sua origem e ao desenvolvimento de tecnologias NoSQL. Muitas das primeiras soluções NoSQL foram criadas por gigantes da tecnologia, como o Google e o Amazon, para atender às suas necessidades exclusivas de gerenciamento de dados em grande escala. O Google, por exemplo, desenvolveu o Google Bigtable, um dos primeiros sistemas NoSQL, para lidar com a indexação massiva da web. Esse sistema permitiu ao Google armazenar e consultar trilhões de páginas da web, tornando possível a pesquisa eficiente na internet. Essa iniciativa do Google foi uma das precursoras do movimento NoSQL e demonstrou a necessidade de soluções alternativas aos bancos de dados relacionais tradicionais para lidar com a explosão de dados na era digital. Os bancos de dados NoSQL suportam uma ampla variedade de tipos de dados e modelos de dados. Isso inclui bancos de dados de documentos, que armazenam dados em formato JSON ou BSON; bancos de dados de colunas, ideais para consultas analíticas; bancos de dados de grafos, que são ideais 14 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 para representar relacionamentos complexos; e bancos de dados de chave-valor, que são altamente eficientes para recuperação de dados por chave. A diversidade de modelos permite escolher a melhor opção para cada cenário de aplicação. As principais características dos bancos de dados NoSQL incluem: • Flexibilidade de esquema: capacidade de adaptar-se a diferentes formatos de dados sem a necessidade de um esquema fixo ou pré-definido. • Escalabilidade horizontal: projetados para expandir facilmente adicionando mais servidores, diferentemente da escalabilidade vertical dos bancos de dados SQL. • Diversidade de modelos de dados: suporta modelos variados como chave-valor, documentos, colunares e grafos, adequados para diferentes tipos de aplicações. • Alta performance: eficiência no processamento de grandes volumes de dados e alta velocidade de transações. • Tolerância a falhas: capacidade de manter a operacionalidade mesmo em caso de falhas em parte do sistema. • Facilidade de uso e flexibilidade de desenvolvimento: permite desenvolvimento ágil e adaptativo, adequado para projetos que evoluem rapidamente. Cada uma dessas características torna o NoSQL ade- quado para cenários específicos de uso, especialmente quando flexibilidade e escalabilidade são essenciais. 15BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Modelos de dados NoSQL Os bancos de dados NoSQL são conhecidos por sua diversidade de modelos de dados, que oferecem flexibilidade para atender às necessidades específicas de diferentes tipos de aplicativos e conjuntos de dados. Neste capítulo, exploraremos os principais modelos de dados NoSQL, que incluem documentos, colunas, grafos e chave-valor. Além disso, forneceremos exemplos de como cada modelo se adapta a diferentes tipos de dados e casos de uso. Um dos modelos de dados mais populares no mundo NoSQL é o modelo de documentos. Nesse modelo, os dados são armazenados em documentos, que geralmente estão no formato JSON ou BSON (Binary JSON). Cada documento contém um conjunto de campos e seus valores associados, permitindouma estrutura flexível e semelhante a objetos. Bancos de dados de documentos, como o MongoDB e o Couchbase, são amplamente usados em cenários nos quais os dados têm uma estrutura variável, como blogs, sistemas de gerenciamento de conteúdo e catálogos de produtos. A flexibilidade desse modelo torna-o ideal para aplicações em constante evolução. O modelo de dados de colunas é projetado para otimizar a recuperação eficiente de grandes volumes de dados, especialmente para consultas analíticas. Nele, os dados são armazenados em colunas em vez de linhas, o que permite a recuperação rápida de informações específicas. 16 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 EXEMPLO: O Apache Cassandra, banco de dados de colunas, é frequentemente utilizado em ambientes nos quais é necessário lidar com conjuntos de dados de alta cardinalidade, como registros de logs ou dados de séries temporais. Ainda temos também o modelo de dados de grafos que é ideal para representar e consultar dados que envolvem relacionamentos complexos. Nesse modelo, os dados são organizados em nós (entidades) e arestas (relacionamentos) entre esses nós. Bancos de dados de grafos, como o Neo4j e o Amazon Neptune, são amplamente empregados em cenários como redes sociais, análise de redes, recomendações personalizadas e sistemas de recomendação. Sua capacidade de modelar relacionamentos complexos torna-os poderosos para consultas que envolvem navegação por conexões. Por conseguinte, os bancos de dados de chave-valor armazenam dados em pares de chave e valor, nos quais a chave é um identificador exclusivo para o valor associado. Esses bancos de dados são altamente eficientes na recuperação de dados por meio da chave, o que os torna ideais para aplicativos que exigem alta velocidade de leitura e gravação. EXEMPLO: O Redis e o Amazon DynamoDB são frequente- mente utilizados em sistemas de cache, armazenamento de sessões de usuário, gerenciamento de configurações e aplicativos que requerem baixa latência. Desse modo, os bancos de dados NoSQL oferecem uma variedade de modelos de dados para atender às necessidades de diferentes tipos de aplicativos e cenários. 17BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 VOCÊ SABIA? Os modelos de dados NoSQL são notavelmente diversos, adaptando-se a diferentes necessidades de armazenamento e processamento de dados. Eles incluem modelos como chave-valor, usado para acesso rápido a dados através de uma chave única; modelos de documentos, que armazenam dados em formatos como JSON, facilitando a manipulação de dados semiestruturados; modelos colunares, otimizados para análises rápidas e eficientes de grandes volumes de dados; e modelos de grafos, ideais para representar e explorar relações complexas entre dados, como nas redes sociais. Cada modelo tem características únicas, tornando o NoSQL uma solução versátil para diversos desafios de dados modernos. Essa diversidade é uma das razões pelas quais os sistemas NoSQL ganharam destaque na gestão de dados moderna, permitindo que os desenvolvedores escolham o modelo mais adequado para seus projetos específicos. Casos de uso e vantagens do NoSQL Os bancos de dados NoSQL têm ganhado destaque e se mostrado uma alternativa eficaz aos bancos de dados relacionais em uma variedade de casos de uso. Neste capítulo, destacaremos exemplos práticos de situações em que os bancos de dados NoSQL são mais adequados do que os relacionais. Além disso, discutiremos as vantagens e desvantagens de escolher NoSQL para projetos específicos. Os casos de uso e vantagens do NoSQL destacam-se em ambientes que requerem grande escalabilidade, flexibilidade e a capacidade de lidar com grandes volumes de dados não estrutu- rados ou semiestruturados. NoSQL é amplamente utilizado em 18 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Big Data, aplicações web e móveis, gerenciamento de conteúdo e Internet das Coisas (IoT), quando a capacidade de rápido proces- samento e armazenamento de dados variados é essencial. As vantagens incluem escalabilidade horizontal, alta performance em manipulação de grandes volumes de dados, flexibilidade para armazenar diferentes tipos de dados e custo- efetividade, especialmente com soluções open-source. Essas características tornam o NoSQL uma escolha preferencial em cenários nos quais os bancos de dados relacionais tradicionais podem não ser suficientes ou eficientes. Destacamos alguns casos de uso do NoSQL: • Aplicações da web escaláveis - quando se trata de aplicações web altamente escaláveis, os bancos de dados NoSQL são frequentemente a escolha preferida. Por exemplo, em redes sociais, lugar em que milhões de usuários fazem postagens, curtem e compartilham conteúdo constantemente, o modelo de documento NoSQL é uma escolha sólida. Plataformas como o Facebook utilizam o Cassandra para manter a escalabilidade horizontal e garantir respostas rápidas a consultas. • Análise de dados em tempo real - em projetos que envolvem análise de dados em tempo real, como sistemas de análise de registros de servidores ou sistemas de monitoramento de sensores, os bancos de dados NoSQL, especialmente os de colunas, são ideais. Eles podem lidar com grandes volumes de dados e suportar consultas analíticas complexas com eficiência. Empresas como a Netflix usam o Apache Cassandra para rastrear o comportamento do usuário e personalizar as recomendações de filmes em tempo real. 19BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 • Armazenamento de dados não estruturados - quando os dados são não estruturados ou semiestruturados, como textos de mídia social, registros de chatbot ou dados de sensores IoT, os bancos de dados NoSQL, como os de documentos, são altamente flexíveis e eficazes. O MongoDB é amplamente utilizado para armazenar e consultar dados não estruturados em aplicativos que variam de sistemas de gerenciamento de conteúdo a análises de sentimentos em redes sociais. Vantagens do NoSQL: • Escalabilidade horizontal - um dos maiores trunfos do NoSQL é a escalabilidade horizontal, permitindo que aplicativos cresçam facilmente à medida que a demanda aumenta, adicionando mais servidores. Isso é especialmente valioso em aplicativos de alto tráfego, como redes sociais e comércio eletrônico. • Flexibilidade de esquema - a flexibilidade de esquema oferecida pelo NoSQL é uma vantagem significativa em cenários em que os dados são variáveis e podem mudar ao longo do tempo. Não é necessário um esquema rígido, permitindo adaptação contínua. • Desempenho para grandes volumes de dados - NoSQL é eficaz para manipular grandes volumes de dados, incluindo dados não estruturados e semiestruturados, como aqueles provenientes de sensores ou redes sociais, proporcionando desempenho eficiente. Desvantagens do NoSQL: • Consistência flexível - embora a flexibilidade de consistência seja uma vantagem em alguns cenários, pode ser uma desvantagem em outros. Bancos de dados 20 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 NoSQL podem optar por priorizar a disponibilidade em detrimento da consistência, o que pode levar a resultados imprecisos em algumas situações. • Curva de aprendizado - para aqueles que estão acostumados com bancos de dados relacionais, a transição para o NoSQL pode exigir uma curva de aprendizado significativa. Os modelos de dados e as consultas são diferentes, o que pode demandar tempo para se adaptar. EXEMPLO: Uma mostra prática do uso de NoSQL é em sistemas de recomendação de produtos em sites de e-commerce. Esses sistemas analisam grandes volumes de dados de comportamento do usuário para fornecer recomendações personalizadas. A flexibilidade do NoSQL permite armazenar e processar diferentes tipos de dados de usuário, como histórico de navegação, compras anteriores e preferências, de forma eficiente. Além disso, sua escalabilidade horizontal facilita o manejo do aumento de tráfego durante períodos de altademanda, como promoções e feriados. Dessa maneira, os bancos de dados NoSQL oferecem um conjunto diversificado de vantagens e são particularmente adequados para casos de uso que exigem escalabilidade, flexibilidade de esquema e desempenho em grandes volumes de dados não estruturados ou semiestruturados. No entanto, a escolha entre NoSQL e bancos de dados relacionais deve ser feita com base nas necessidades específicas de cada projeto, considerando suas vantagens e desvantagens. 21BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 RESUMINDO E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que o subtítulo “Visão geral dos bancos de dados NoSQL” forneceu uma introdução abrangente ao mundo dos bancos de dados NoSQL, destacando como eles se diferenciam dos tradicionais sistemas de banco de dados relacionais. Exploramos a evolução do armazenamento de dados e como os bancos de dados NoSQL surgiram como uma resposta às necessidades de armazenamento e processamento de dados em grande escala, especialmente em aplicações que exigem alta escalabilidade e flexibilidade. Em “O paradigma NoSQL: uma introdução” você se familiarizou com o paradigma NoSQL, entendendo suas origens e a filosofia por trás de seu desenvolvimento. Discutimos como o NoSQL se afasta do modelo relacional clássico e abraça uma variedade de estruturas de dados, oferecendo uma flexibilidade que é crucial em certas aplicações modernas, como Big Data e a web em tempo real. Nesse subtítulo, mergulhamos nas características distintas dos bancos de dados NoSQL. Você aprendeu sobre sua escalabilidade horizontal, flexibilidade de esquema, capacidade de lidar com grandes volumes de dados e tipos variados, e como eles facilitam a rápida iteração no desenvolvimento de aplicativos. Essas características tornam os bancos de dados NoSQL particularmente adequados para cenários em que requisitos rápidos e em constante mudança são a norma. Exploramos os diferentes modelos de dados utilizados nos bancos de dados NoSQL, como chave-valor, documento, colunar e grafos. Cada modelo foi examinado para entender suas peculiaridades, vantagens e desvantagens, e 22 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 os contextos nos quais são mais eficientemente aplicados. Essa seção ajudou a compreender como escolher o modelo de dados mais adequado para diferentes necessidades de armazenamento e recuperação de dados. Por fim, focamos em casos de uso reais e vantagens do NoSQL. Você deve ter aprendido sobre situações específicas em que o NoSQL supera os bancos de dados relacionais, como em aplicações que exigem grande escalabilidade, flexibilidade no esquema de dados, e capacidade de lidar com enormes quantidades de dados semiestruturados ou não estruturados. Também discutimos como o NoSQL pode ser usado para melhorar o desempenho, a eficiência e a eficácia das aplicações modernas de processamento de dados. Ao final deste capítulo, você deve ter uma compreensão sólida dos bancos de dados NoSQL, suas características, modelos de dados, e como eles se encaixam no ecossistema tecnológico atual. Esperamos que esta jornada tenha sido informativa e que agora você esteja mais preparado para navegar pelo mundo dos bancos de dados NoSQL. 23BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Bancos de dados relacionais versus não relacionais OBJETIVO Ao término deste capítulo, você será capaz de entender como funciona a distinção fundamental entre bancos de dados relacionais e não relacionais. As pessoas que tentaram migrar ou escolher entre sistemas relacionais e não relacionais sem a devida instrução tiveram problemas ao lidar com questões de escalabilidade, desempenho e manutenção de dados. Este capítulo é projetado para equipá-lo com a compreensão necessária para tomar decisões informadas e eficazes nesses cenários. E então? Motivado para desenvolver esta competência? Vamos lá! Fundamentos dos bancos de dados relacionais A jornada dos bancos de dados relacionais começa na década de 1970, quando Edgar F. Codd, um cientista da computação da IBM, introduziu o conceito em seu artigo seminal “A Relational Model of Data for Large Shared Data Banks”. Esse modelo foi uma revolução, propondo uma maneira de estruturar dados em tabelas, linhas e colunas, diferentemente dos sistemas hierárquicos e de rede que eram comuns na época. Os bancos de dados relacionais são fundamentados em tabelas. Uma tabela é uma coleção de dados organizados em linhas e colunas. As linhas, também conhecidas como registros ou tuplas, representam um único item de dados, enquanto as colunas representam os diferentes atributos desse item. 24 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 EXEMPLO: Em uma tabela de clientes, uma linha pode representar um cliente específico, enquanto as colunas podem incluir informações como nome, endereço e número de telefone. Uma característica essencial dos bancos de dados relacionais é o uso de chaves. Uma chave primária é um campo único que identifica cada registro em uma tabela. Por exemplo, um número de identificação do cliente pode servir como uma chave primária em uma tabela de clientes. As chaves estrangeiras, por outro lado, são usadas para estabelecer relações entre tabelas diferentes. Elas referenciam a chave primária de outra tabela, formando um vínculo entre os dados. A linguagem SQL (Structured Query Language) é o meio pelo qual interagimos com bancos de dados relacionais. Desenvolvida inicialmente pela IBM na década de 1970, a SQL tornou-se a linguagem padrão para a criação, manipulação e consulta de dados em bancos de dados relacionais. Com a SQL, podemos executar uma variedade de operações, desde a simples recuperação de dados até a realização de transações complexas. A normalização é outro conceito-chave em bancos de dados relacionais. Ela envolve a organização de dados de forma a minimizar a redundância e dependência. Isso é feito por meio da divisão de uma base de dados em várias tabelas e definindo relações entre elas. A normalização ajuda a manter a integridade dos dados e torna o banco de dados mais eficiente. Com o passar do tempo, os bancos de dados relacionais evoluíram para suportar transações, que são conjuntos de operações que são tratadas como uma única unidade. Isso significa 25BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 que todas as operações em uma transação são concluídas com sucesso ou nenhuma é realizada. Esse conceito é fundamental para manter a integridade dos dados, especialmente em sistemas em que múltiplos usuários estão interagindo com o banco de dados simultaneamente. Os Sistemas de Gerenciamento de Banco de Dados Relacional (SGBDR) também incorporam o conceito de ACID (Atomicidade, Consistência, Isolamento, Durabilidade). Esses princípios garantem que as transações sejam processadas de maneira confiável e ajudam a manter a integridade e a consistência dos dados. Outro aspecto importante dos bancos de dados relacionais é a indexação. Indexar uma tabela melhora a velocidade de operações de busca e consulta, permitindo que o sistema localize rapidamente o registro desejado sem ter que percorrer toda a tabela. A integração de bancos de dados relacionais com outras tecnologias também tem sido um foco de evolução. Por exemplo, a integração com ferramentas de análise de dados e inteligência de negócios permite que as empresas utilizem seus dados para tomar decisões informadas. Os bancos de dados relacionais não estão isentos de desafios. Um dos principais é a escalabilidade. Embora sejam eficientes para volumes moderados de dados, eles podem enfrentar dificuldades quando se trata de grandes volumes de dados, ou dados que requerem alta disponibilidade e baixa latência. Além disso, a rigidez dos esquemas de dadosem bancos de dados relacionais pode ser uma limitação. Em aplicações em 26 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 que os dados são altamente dinâmicos ou não estruturados, a necessidade de definir um esquema pode ser um impedimento. A segurança dos dados é outra consideração importante. Os bancos de dados relacionais, como qualquer sistema de armazenamento de dados, são alvo de ataques cibernéticos, o que exige a implementação de robustas medidas de segurança. Características dos bancos de dados não relacionais Os bancos de dados não relacionais, conhecidos como NoSQL, surgiram como uma resposta direta às limitações dos sistemas relacionais, especialmente em contextos de big data e aplicações web em grande escala. O termo NoSQL, originalmente referindo-se a “não SQL”, tem sido também interpretado como “não apenas SQL”, refletindo a natureza diversificada desses bancos de dados. Uma das características mais distintivas dos bancos de dados NoSQL é a sua flexibilidade de esquema. Ao contrário dos bancos de dados relacionais, que exigem um esquema de dados definido rigidamente antes da inserção de dados, muitos sistemas NoSQL permitem que os dados sejam armazenados sem uma definição prévia de sua estrutura. Essa flexibilidade é particularmente vantajosa quando se lida com tipos variados de dados ou com dados que evoluem rapidamente (Sadalage; Fowler, 2012). Outra característica importante do NoSQL é a escalabili- dade. Os sistemas NoSQL são projetados para expandir horizon- talmente, o que significa que eles podem lidar com o crescimento de dados adicionando mais servidores ao sistema. Isso contrasta com o modelo de escalabilidade vertical típico dos bancos de da- 27BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 dos relacionais, que se baseia no aumento da capacidade de um único servidor. Em termos de desempenho, os bancos de dados NoSQL são otimizados para consultas rápidas, mesmo em grandes volumes de dados. Isso é em grande parte devido à sua estrutura de dados simplificada e ao modelo de armazenamento distribuído. Além disso, muitos bancos de dados NoSQL são projetados para operar eficientemente em ambientes de computação em nuvem, o que os torna ideais para aplicações que exigem alta disponibilidade e baixa latência (Redmond; Wilson, 2012). Os bancos de dados NoSQL suportam uma variedade de tipos de dados, desde dados semiestruturados, como JSON e XML, até dados não estruturados, como textos e imagens. Essa capacidade de lidar com diversos tipos de dados é essencial em um mundo em que a natureza dos dados está em constante evolução. Existem vários modelos de dados NoSQL, cada um com suas próprias características e casos de uso ideais. Os modelos mais comuns incluem: • Bancos de dados de chave-valor - esses são os tipos mais simples de bancos de dados NoSQL, em que cada item de dados é armazenado como um par de chave- valor. Eles são altamente eficientes para operações de leitura e gravação e são frequentemente usados em aplicações que exigem armazenamento de sessão e cache. • Bancos de dados de documentos - esses bancos de dados armazenam dados em documentos (geralmente formatados em JSON ou XML), o que os torna adequados para armazenar dados semiestruturados. Eles são 28 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 amplamente utilizados em sistemas de gerenciamento de conteúdo e aplicações e-commerce. • Bancos de dados colunares - ao contrário dos bancos de dados relacionais, que armazenam dados por linhas, os bancos de dados colunares organizam dados por colunas. Isso os torna ideais para análises de grandes volumes de dados, como em data warehousing. • Bancos de dados de grafos - esses bancos de dados são projetados para armazenar e navegar relacionamentos. Eles são especialmente úteis em aplicações que exigem modelagem de dados complexa, como redes sociais e sistemas de recomendação. A escolha entre um banco de dados relacional e um NoSQL depende de vários fatores, incluindo a natureza dos dados, os requisitos de escalabilidade e a complexidade das consultas necessárias. 29BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Imagem 1.2 – Entre os vários modelos de dados NoSQL, o banco de dados de documentos é bastante usado em aplicações e-commerce Fonte: Pexels. Enquanto os bancos de dados relacionais ainda dominam em termos de transações complexas e integridade de dados, os bancos de dados NoSQL estão crescendo em popularidade devido à sua flexibilidade, escalabilidade e desempenho aprimorado em determinadas situações. A evolução do NoSQL também está sendo impulsionada pelo aumento do uso de big data e pela necessidade de processamento em tempo real. À medida que mais empresas se movem em direção a arquiteturas baseadas em nuvem e a dados progressivamente mais diversificados, espera-se que a adoção de bancos de dados NoSQL continue a crescer. 30 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Comparação entre bancos de dados relacionais e não relacionais A compreensão das diferenças entre bancos de dados relacionais e não relacionais é crucial para escolher a tecnologia mais adequada para diferentes necessidades de armazenamento de dados. Esta seção explora as principais diferenças entre esses dois tipos de bancos de dados, abordando aspectos como integridade dos dados, complexidade das consultas, escalabilidade, desempenho e adequação em diversos cenários de uso. • Integridade dos dados: os bancos de dados relacionais são conhecidos por sua forte integridade de dados. Eles utilizam restrições de integridade, como chaves estrangeiras, e transações para garantir a precisão e consistência dos dados ao longo do tempo. Por outro lado, os bancos de dados NoSQL, devido à sua natureza flexível e à falta de esquemas rígidos, podem não oferecer o mesmo nível de integridade de dados. Isso pode ser um desafio em aplicações em que a precisão dos dados é crítica. • Complexidade das consultas: a linguagem SQL, usada em bancos de dados relacionais, é extremamente poderosa para realizar consultas complexas, especialmente quando se trata de relacionamentos entre diferentes tabelas. NoSQL, embora eficiente para consultas simples e rápidas, pode não ser tão eficaz para consultas complexas devido à ausência de uma linguagem de consulta padronizada e à sua estrutura de dados menos rígida. 31BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 • Escalabilidade: quando se trata de escalabilidade, os bancos de dados NoSQL levam vantagem. Eles são projetados para escalabilidade horizontal, o que significa que podem crescer adicionando mais servidores na rede. Isso contrasta com a escalabilidade vertical dos bancos de dados relacionais, que envolve o aumento da capacidade do servidor existente. Portanto, para aplicações que exigem manipulação de grandes volumes de dados ou alta disponibilidade, os bancos de dados NoSQL são geralmente mais adequados. • Desempenho: os bancos de dados NoSQL são otimizados para alto desempenho, especialmente em operações de leitura e gravação. Eles são capazes de lidar com grandes volumes de dados e tráfego intenso com mais eficiência do que os sistemas relacionais. Por outro lado, para operações que envolvem transações complexas ou cálculos intensivos, os bancos de dados relacionais ainda são preferíveis devido à sua robustez e recursos avançados de gerenciamento de transações. • Adequação em diferentes cenários de uso: bancos de dados relacionais são ideais para aplicações que necessitam de transações complexas e integridade de dados, como sistemas de gestão financeira e registros de pacientes em hospitais. Já os bancos de dados NoSQL são mais adequados para aplicações que exigem flexibilidade de esquema, como redes sociais, análise de big data e aplicações que lidam com uma variedade de tipos de dados. Além disso, a escolha entre bancos de dados relacionais e não relacionais também depende doconhecimento e experiência 32 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 da equipe de desenvolvimento. A familiaridade com a linguagem SQL e o modelo relacional pode influenciar a preferência por sistemas relacionais, enquanto a necessidade de lidar com grandes volumes de dados de forma eficiente pode pender a balança para o lado do NoSQL. VOCÊ SABIA? Uma curiosidade interessante sobre o tema dos bancos de dados NoSQL está relacionada à sua origem e evolução, particularmente o papel que gigantes da internet como Google e Amazon desempenharam no seu desenvolvimento. • Google’s Bigtable e Amazon’s Dynamo: antes de os bancos de dados NoSQL se tornarem populares e amplamente utilizados, duas grandes empresas de tecnologia estavam na vanguarda de seu desenvolvimento. O Google desenvolveu o Bigtable, um sistema de armazenamento de dados distribuído que foi essencial para a execução de serviços como o Google Search e o Google Maps. Por sua vez, a Amazon desenvolveu o Dynamo, um sistema de armazenamento de chave-valor altamente disponível, projetado para lidar com falhas de rede e hardware enquanto mantém a performance. Esses sistemas não apenas atenderam às necessidades internas dessas empresas, mas também inspiraram muitas das tecnologias NoSQL que vieram depois. • NoSQL não significa ”Não SQL”: embora o termo “NoSQL” possa sugerir “não SQL” ou “sem SQL”, ele é frequentemente interpretado como “Not Only SQL” (Não Apenas SQL). Isso reflete a ideia de que os bancos de dados NoSQL não substituem completamente os bancos de dados relacionais, mas oferecem alternativas complementares para armazenamento de 33BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 dados, especialmente em situações que demandam grande escalabilidade, flexibilidade de esquema e a capacidade de lidar com grandes volumes de dados não estruturados ou semiestruturados. • Variedade de modelos de dados: outra curiosidade é a diversidade de modelos de dados oferecidos pelos bancos de dados NoSQL, que vão além dos tradicionais modelos relacionais. Desde bancos de dados baseados em documentos, como MongoDB e CouchDB, até bancos de dados de grafos como Neo4j, cada tipo de banco de dados NoSQL é projetado para atender necessidades específicas de armazenamento de dados, oferecendo soluções especializadas que não são possíveis com os modelos relacionais tradicionais. • Uso no espaço e além: interessantemente, a tecnologia NoSQL não se limita apenas a aplicações terrestres. Por exemplo, a NASA tem utilizado bancos de dados NoSQL para gerenciar os dados gerados por suas missões espaciais, incluindo a exploração de Marte. Isso destaca a robustez e flexibilidade dos bancos de dados NoSQL, que são capazes de operar em ambientes extremamente desafiadores. Essas curiosidades ilustram não apenas a evolução técnica dos bancos de dados NoSQL, mas também seu impacto significativo no mundo da tecnologia e além. 34 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Transição para o NoSQL: quando e porquê? A transição para bancos de dados NoSQL representa um ponto de inflexão significativo no gerenciamento de dados, impulsionado pelas necessidades emergentes das modernas paisagens de TI. Essa mudança é motivada por vários fatores, incluindo o crescimento de big data, a necessidade de maior flexibilidade e a demanda por sistemas que podem escalar de forma eficiente. Vamos explorar os cenários nos quais a transição para o NoSQL é apropriada, as tendências atuais em armazenamento de dados e as considerações práticas para empresas e desenvolvedores. • Crescimento de big data: A explosão do big data tem sido um dos principais impulsionadores da mudança para os bancos de dados NoSQL. Com o volume, a velocidade e a variedade dos dados aumentando exponencialmente, muitas organizações descobriram que os bancos de dados relacionais tradicionais são inadequados. Eles muitas vezes não conseguem lidar com a escala e a agilidade necessárias para processar grandes conjuntos de dados não estruturados ou semiestruturados. Bancos de dados NoSQL, com sua capacidade de escalar horizontalmente e manipular uma variedade de estruturas de dados, oferecem uma solução mais viável. • Flexibilidade de esquema: em ambientes em que os requisitos de dados são constantemente alterados, a rigidez dos esquemas em bancos de dados relacionais pode ser um obstáculo. Os bancos de dados NoSQL permitem uma maior flexibilidade, pois não exigem 35BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 um esquema fixo. Isso permite que as organizações se adaptem rapidamente às mudanças nas necessidades de dados sem a necessidade de reestruturação significativa. • Escalabilidade e desempenho: a capacidade de escalar eficientemente é outro fator crítico que impulsiona a adoção do NoSQL. Em contraste com a escalabilidade vertical dos bancos de dados relacionais (aumento da capacidade do servidor), os bancos de dados NoSQL oferecem escalabilidade horizontal (adição de mais servidores), que é mais adequada para aplicações web modernas, especialmente aquelas que operam na nuvem. Além disso, para aplicações que exigem altas taxas de leitura e escrita, os bancos de dados NoSQL podem oferecer um desempenho superior. • Considerações práticas: a decisão de migrar para o NoSQL deve ser cuidadosamente considerada. Por isso, as empresas devem avaliar as seguintes situações: • Necessidades de dados - compreender o tipo, volume e complexidade dos dados é crucial. Se a organização lida com grandes volumes de dados não estruturados ou se as necessidades de dados estão em constante mudança, o NoSQL pode ser a escolha certa. • Expertise técnica - a equipe possui a experiência necessária para trabalhar com NoSQL? Há uma curva de aprendizado associada à migração de sistemas relacionais para NoSQL, e a capacitação da equipe é fundamental. • Integridade e segurança dos dados - avaliar as necessidades de integridade e segurança dos dados é crucial. Embora os bancos de dados NoSQL ofereçam 36 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 flexibilidade e escalabilidade, eles podem não fornecer o mesmo nível de suporte para transações e integridade de dados como os sistemas relacionais. • Custos de transição - migrar para uma tecnologia diferente de banco de dados pode ser um processo caro e demorado. Os custos de implementação, migração de dados existentes, treinamento de equipe e manutenção contínua devem ser considerados. A transição para o NoSQL não é uma solução universal para todos os problemas de gerenciamento de dados. Deve ser uma decisão estratégica baseada nas necessidades específicas da organização. Em alguns casos, uma abordagem híbrida, utilizando tanto bancos de dados relacionais quanto NoSQL, pode ser a solução mais eficaz, alavancando as forças de ambos para atender às necessidades de dados complexos e diversificados. RESUMINDO E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que no subtítulo “Bancos de dados relacionais versus não relacionais” explo- ramos as diferenças fundamentais entre bancos de dados relacionais e não relacionais. Enquanto os sistemas relacionais têm sido o padrão há dé- cadas, os bancos de dados não relacionais estão se tornando mais relevantes devido às mudanças nas necessidades de armazenamento de dados. Em “Fundamentos dos bancos de dados relacio- nais” discutimos os conceitos fundamentais dos bancos de dados relacionais, incluindo sua histó- ria, arquitetura básica com tabelas, linhas e colu- nas, e a importância das chaves primárias e estran- geiras. Além disso, exploramos a linguagem SQL, amplamente usada para consultas e manipulação 37BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 de dados em sistemas relacionais. No tópico “Característicasdos bancos de dados não relacionais” investigamos as características distintivas dos bancos de dados não relacionais (NoSQL), destacando sua flexibilidade de esquema, escalabilidade, desempenho e suporte a uma variedade de tipos de dados, como documentos, chave-valor, colunas e grafos. Já em “Comparação entre bancos de dados relacionais e não relacionais” realizamos uma análise abrangente das diferenças entre bancos de dados relacionais e não relacionais. Abordamos aspectos como integridade dos dados, complexidade das consultas, escalabilidade, desempenho e adequação em diversos cenários de uso. Compreendemos que a escolha entre essas abordagens depende das necessidades específicas de armazenamento de dados de uma organização. Por fim, em “Transição para o NoSQL: quando e porquê?” finalmente, exploramos em qual tempo e motivos para se fazer a transição de um banco de dados relacional para um não relacional é apropriada. Consideramos as tendências atuais em armazenamento de dados, como o crescimento do big data, e como essas tendências influenciam a escolha entre os dois tipos de banco de dados. Além disso, destacamos considerações práticas para empresas e desenvolvedores que estão considerando fazer essa transição. Esperamos que você tenha adquirido um entendimento sólido das diferenças entre bancos de dados relacionais e não relacionais, bem como das situações em que cada um deles se destaca. Essa compreensão é fundamental para tomar decisões informadas ao selecionar a tecnologia de armazenamento de dados mais adequada às necessidades específicas de seu projeto ou organização. 38 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Tipos de bancos de dados NoSQL OBJETIVO Ao término deste capítulo, você será capaz de entender como funcionam os diferentes tipos de bancos de dados NoSQL. Isso será fundamental para o exercício de sua profissão no mundo da gestão e análise de dados. As pessoas que tentaram lidar com bancos de dados NoSQL sem a devida instrução muitas vezes enfrentaram desafios ao encarar a complexidade dessas ferramentas. E então? Motivado para desenvolver esta competência? Vamos lá! Tipos de bancos de dados NoSQL Os bancos de dados NoSQL (Not Only SQL) são uma categoria diversificada de sistemas de gerenciamento de dados que oferecem alternativas aos tradicionais bancos de dados relacionais. Eles são projetados para atender às crescentes demandas de escalabilidade, flexibilidade e desempenho, características essenciais em muitas aplicações modernas. Quatro dos principais tipos de bancos de dados NoSQL são: bancos de dados de documentos, de colunas, de grafos e chave-valor. Os bancos de dados de documentos são conhecidos por sua flexibilidade na manipulação de dados semiestruturados, no qual cada registro é armazenado como um documento, frequentemente em formatos como JSON ou BSON. Eles são ideais para cenários em que os esquemas de dados podem variar ao longo do tempo. Exemplos notáveis incluem o MongoDB e o Couchbase. A principal diferença em relação aos bancos de dados relacionais está na estrutura dos dados. Em um banco de dados 39BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 relacional, as tabelas têm esquemas rígidos, enquanto nos bancos de dados de documentos, cada documento pode ter campos diferentes, permitindo uma adaptação mais fácil às mudanças nos requisitos da aplicação. Os bancos de dados de colunas são altamente eficientes para armazenar grandes volumes de dados distribuídos. Eles organizam os dados em colunas, em vez de linhas, o que facilita a recuperação de informações específicas em consultas complexas. Cassandra e HBase são exemplos notáveis desse tipo de banco de dados. Em contraste com os bancos de dados relacionais, os bancos de dados de colunas podem escalar horizontalmente com facilidade, tornando-os ideais para cenários de big data. Além disso, eles são particularmente eficazes para armazenar séries temporais e dados de sensoriamento. Os bancos de dados de grafos são especializados em modelar e consultar dados com estruturas complexas de relacionamentos. Eles são ideais para aplicações que dependem da representação de conexões entre entidades, como redes sociais, sistemas de recomendação e análise de redes. Neo4j e OrientDB são exemplos proeminentes de bancos de dados de grafos. A principal característica distintiva é a utilização de estruturas de grafo, que consistem em nós e arestas, para representar entidades e seus relacionamentos. Isso torna a recuperação de informações baseada em relacionamentos muito eficiente, superando as limitações dos modelos relacionais para cenários complexos de interconexão de dados. Os bancos de dados chave-valor são simples e rápidos na recuperação de dados estruturados em pares de chave-valor. Eles são ideais para casos de uso que exigem alta escalabilidade 40 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 e baixa latência, como caches em memória, gerenciamento de sessões e contagem de elementos em tempo real. Exemplos notáveis incluem Redis e Amazon DynamoDB. A abordagem chave-valor é direta: você associa um valor a uma chave e pode recuperar esse valor eficientemente usando a chave correspondente. Isso os torna excelentes para aplicações que requerem acesso rápido a dados específicos sem a complexidade de esquemas rígidos. Em resumo, os bancos de dados NoSQL oferecem uma ampla variedade de escolhas, permitindo que os desenvolvedores selecionem o tipo mais adequado para suas necessidades específicas. Cada tipo possui características únicas que podem ser aproveitadas para resolver problemas complexos de maneira eficaz, adaptando-se aos requisitos de escalabilidade, flexibilidade e desempenho de suas aplicações. VOCÊ SABIA? Uma curiosidade divertida é que muitos bancos de dados NoSQL têm nomes criativos e muitas vezes peculiares. Isso é um contraste notável com os bancos de dados relacionais, que geralmente têm nomes mais formais e descritivos. O MongoDB, um dos bancos de dados de documentos mais populares, foi nomeado com base na palavra “humongous” (enorme) e “DB” (banco de dados), enfatizando sua capacidade de escalabilidade para grandes volumes de dados. Outro exemplo é o Apache Cassandra, que foi nomeado em homenagem à profetisa grega Cassandra, conhecida por suas habilidades de previsão. O nome reflete a capacidade do banco de dados Cassandra de lidar com cenários de alta disponibilidade e tolerância a falhas. 41BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Propósito e vantagens de cada tipo de banco de dados NoSQL Cada tipo de banco de dados NoSQL tem um propósito específico e oferece vantagens distintas em relação aos bancos de dados relacionais, permitindo que as empresas escolham a melhor opção com base em suas necessidades. Vamos explorar o propósito e as vantagens de cada tipo. Bancos de dados de documentos são uma categoria de bancos de dados NoSQL que se destacam por sua capacidade de armazenar e recuperar dados no formato de documentos. Em contraste com os bancos de dados relacionais, que possuem esquemas rígidos e tabelas com estruturas predefinidas, os bancos de dados de documentos permitem que os dados sejam armazenados em documentos flexíveis, frequentemente no formato JSON (JavaScript Object Notation) ou formatos similares, como BSON (Binary JSON). A característica distintiva desses bancos de dados é a flexibilidade em relação à estrutura dos dados. Isso significa que não é necessário definir um esquema de banco de dados rígido com antecedência; em vez disso, os documentos podem conter campos variáveis. Essa flexibilidade torna os bancos de dados de documentos ideais para cenários em que a estrutura dos dados pode mudar com frequência, o que é comum em muitos aplicativos modernos. Os documentos são organizados em coleções, que são análogas às tabelas em bancos de dados relacionais. Enquanto os documentos individuais podem ter estruturasdiferentes, documentos dentro de uma coleção geralmente compartilham 42 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 uma estrutura semelhante. Isso oferece uma flexibilidade de esquema que é valiosa em muitos casos de uso. Os bancos de dados de documentos também suportam consultas, permitindo que os desenvolvedores recuperem dados com base em critérios específicos. Além disso, eles geralmente oferecem a capacidade de criar índices para acelerar consultas. Esses bancos de dados têm uma ampla gama de casos de uso, incluindo gerenciamento de conteúdo, catálogos de produtos, perfis de usuário, registros de eventos e sistemas de gerenciamento de dados semiestruturados. Alguns exemplos populares de bancos de dados de documentos incluem o MongoDB, o Couchbase e o Firebase Firestore. As principais vantagens dos bancos de dados de documentos incluem sua flexibilidade para acomodar mudanças nos requisitos da aplicação, desempenho eficiente na recuperação de dados e a capacidade de escalabilidade horizontal para lidar com grandes volumes de dados. Eles são uma escolha poderosa para projetos que requerem o gerenciamento de dados semiestruturados e a capacidade de se adaptar rapidamente a mudanças nas necessidades da aplicação. Bancos de dados de colunas são uma categoria de bancos de dados NoSQL que se diferenciam pela forma como armazenam dados. Em vez de adotar o modelo tradicional de linhas e tabelas dos bancos de dados relacionais, esses sistemas organizam os dados em colunas. Cada coluna contém um conjunto específico de informações relacionadas, tornando-os altamente eficientes para consultas analíticas e agregações de dados. A estrutura de colunas possibilita que esses bancos de dados se destaquem em cenários que envolvem grandes volumes de informações e análises em tempo real. Eles são particularmente 43BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 úteis quando se trata de recuperar e analisar grandes conjuntos de registros simultaneamente. Propósito dos bancos de dados de colunas são projetados para lidar com grandes volumes de dados e são particularmente eficazes para armazenar informações que requerem análise complexa, como registros de eventos, logs e dados de séries temporais. A principal vantagem está na capacidade de escalabilidade horizontal, o que significa que eles podem lidar com grandes volumes de dados distribuídos em múltiplos servidores. Além disso, como os dados são armazenados em colunas em vez de linhas, as consultas são mais eficientes, especialmente ao recuperar um subconjunto específico de informações. Bancos de dados de grafos são uma categoria de bancos de dados NoSQL que se destacam por sua capacidade de armazenar dados como grafos, em que os elementos são nós (vértices) conectados por arestas (relacionamentos). Esses bancos de dados são ideais para representar e navegar em dados altamente interconectados, como redes sociais, mapas de conhecimento, sistemas de recomendação e sistemas de transporte público. Nesse modelo, os dados são representados como entidades (nós) e suas conexões (arestas), proporcionando uma maneira eficiente de representar informações complexas e relacionamentos. Os nós podem conter propriedades, e as arestas podem ter rótulos e direções, tornando esse modelo altamente expressivo na representação de dados interconectados. Os propósitos dos bancos de dados de grafos são ideais para modelar e consultar dados com estruturas complexas de relacionamentos, como redes sociais, sistemas de recomendação e análise de redes. 44 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 A grande vantagem reside na capacidade de representar relacionamentos de maneira eficiente, o que torna as consultas baseadas em conexões rápidas e eficazes. Esses bancos de dados são particularmente valiosos quando se trata de responder a perguntas complexas sobre interconexões de dados, tornando- os ideais para aplicativos que dependem fortemente desses relacionamentos. Bancos de dados chave-valor são uma categoria de bancos de dados NoSQL que se destacam por sua simplicidade e eficiência na manipulação de pares chave-valor. Nesse modelo, os dados são armazenados em pares, em que cada chave única está associada a um valor correspondente. Essa estrutura minimalista é altamente eficiente para a recuperação de dados, tornando-os ideais para armazenar informações que precisam ser acessadas rapidamente, como cache de dados, configurações de aplicativos e sessões de usuário. Uma das principais vantagens desses bancos de dados é sua simplicidade. Eles possuem uma estrutura de dados direta, com operações principais envolvendo a inserção, recuperação, atualização e exclusão de pares chave-valor. E com relação aos propósitos, são excelentes para cenários que exigem alta escalabilidade e baixa latência, como armazenamento de sessões de usuário, caches em memória e contagem de elementos em tempo real. A simplicidade é a principal vantagem desses bancos de dados. Eles são extremamente rápidos na recuperação de dados com base em chaves, o que os torna ideais para aplicações que precisam de acesso rápido a informações específicas. Além disso, sua capacidade de escalabilidade horizontal permite lidar com cargas de trabalho crescentes com facilidade. 45BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Dessa maneira, cada tipo de banco de dados NoSQL atende a propósitos específicos e oferece vantagens distintas em relação aos bancos de dados relacionais. A escolha do tipo apropriado depende das necessidades da aplicação, e compreender as características de cada categoria é fundamental para tomar decisões informadas na escolha do sistema de gerenciamento de dados adequado. Casos de aplicação para bancos de dados NoSQL Os bancos de dados NoSQL têm uma ampla variedade de casos de aplicação em diversos setores da indústria, graças à sua flexibilidade e capacidade de lidar com requisitos específicos. Abaixo, fornecemos exemplos concretos de casos de uso e aplicações para cada tipo de banco de dados NoSQL: Bancos de dados de documentos: • Comércio eletrônico - plataformas de comércio eletrônico usam bancos de dados de documentos para armazenar informações de produtos, detalhes de pedidos e perfis de clientes. A flexibilidade desses bancos de dados permite a rápida adaptação a novos campos de produto ou personalizações no perfil do cliente. • Gerenciamento de conteúdo - sistemas de gerenciamento de conteúdo, como blogs e portais de notícias, usam bancos de dados de documentos para armazenar artigos, imagens e metadados. A capacidade de adicionar novos campos ou tipos de conteúdo sem perturbar o sistema é crucial nesses casos. Bancos de dados de colunas: 46 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 • Análise de dados - bancos de dados de colunas são frequentemente usados em análise de dados, em que é essencial armazenar grandes volumes de informações, como registros de eventos, logs ou dados de sensores. Setores como finanças, saúde e publicidade on-line aproveitam esses bancos de dados para análises complexas e geração de relatórios. • IoT (Internet das Coisas) - dispositivos IoT geram enormes volumes de dados de sensores em tempo real. Bancos de dados de colunas são ideais para armazenar e analisar esses dados para monitoramento e tomada de decisões em tempo real em setores como automação industrial, agricultura e cidades inteligentes. Bancos de dados de grafos: • Redes sociais: redes sociais como o Facebook e o LinkedIn usam bancos de dados de grafos para mapear as conexões entre usuários e recomendar novas conexões com base em interesses mútuos e conexões existentes. • Sistemas de recomendação - plataformas de streaming de música, filmes e comércio eletrônico utilizam bancos de dados de grafos para criar sistemas de recomendação personalizados, sugerindo produtos, músicas ou filmes com base no comportamento e nas preferências dos usuários.Bancos de dados chave-valor: • Cache em memória - bancos de dados chave-valor, como o Redis, são amplamente usados para criar caches em memória, acelerando o acesso a dados frequentemente acessados em aplicações web e de jogos. 47BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 • Contagem de elementos em tempo real - aplicações que precisam contar eventos em tempo real, como visualizações de páginas da web, curtidas em redes sociais ou mensagens enviadas, se beneficiam dos bancos de dados chave-valor para manter contagens precisas e atualizadas instantaneamente. Esses exemplos ilustram como os bancos de dados NoSQL desempenham um papel fundamental em uma variedade de setores e cenários de aplicação, oferecendo soluções eficazes para atender às necessidades específicas de cada caso. A escolha do tipo de banco de dados NoSQL depende da natureza dos dados e dos requisitos de escalabilidade, desempenho e flexibilidade de cada aplicação. Estudos de caso e exemplos práticos de bancos de dados NoSQL Os bancos de dados NoSQL são aplicados na vida real e os benefícios que proporcionam, apresentarei alguns estudos de caso e exemplos práticos de organizações que adotaram essas tecnologias: MongoDB na Adobe Systems - a Adobe Systems, uma das maiores empresas de software do mundo, adotou o MongoDB como parte de sua estratégia de gerenciamento de dados. Eles usam o MongoDB para armazenar e processar uma grande quantidade de dados, incluindo dados de clientes e métricas de uso de seus produtos, como o Adobe Creative Cloud. Isso permitiu que a Adobe dimensionasse sua infraestrutura de dados para suportar o crescimento rápido de usuários e o volume de dados gerados. 48 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 • Netflix e o Neo4j - a Netflix, uma das principais empresas de streaming de conteúdo, utiliza o Neo4j, um banco de dados de grafos, para aprimorar seus sistemas de recomendação. O Neo4j ajuda a Netflix a entender as relações complexas entre os gostos dos usuários e o conteúdo oferecido. Isso resultou em recomendações mais precisas e personalizadas, aumentando a satisfação do cliente e a retenção de assinantes. • Amazon DynamoDB na Samsung - a Samsung Electronics, uma das maiores fabricantes de eletrônicos do mundo, utiliza o Amazon DynamoDB para armazenar e gerenciar dados de seus dispositivos IoT (Internet das Coisas). O DynamoDB oferece escalabilidade e desempenho necessários para lidar com uma ampla variedade de dispositivos conectados, desde televisores inteligentes até eletrodomésticos, permitindo a coleta e análise eficiente de dados em tempo real. Redis na Twitch é uma plataforma de streaming de jogos, que usa o Redis como parte fundamental de seu sistema de chat em tempo real. O Redis, um banco de dados chave-valor em memória, oferece alta velocidade e baixa latência para suportar a enorme quantidade de mensagens enviadas pelos usuários durante transmissões ao vivo. Isso garante uma experiência de chat fluida e interativa para milhões de espectadores simultâneos. • Facebook e o Cassandra: o Facebook, uma das maiores redes sociais do mundo, utiliza o Apache Cassandra, um banco de dados de colunas, para gerenciar grandes volumes de dados gerados por bilhões de usuários. O Cassandra é altamente escalável e oferece alta disponibilidade, garantindo que o Facebook possa armazenar e acessar rapidamente informações de 49BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 perfil, postagens e interações dos usuários em todo o mundo. • LinkedIn e o Neo4j: o LinkedIn, uma das maiores redes profissionais, emprega o Neo4j, um banco de dados de grafos, para criar e manter sua rede de conexões entre usuários. Isso permite que o LinkedIn recomende contatos relevantes com base em relações de negócios e interesses mútuos, melhorando a experiência dos usuários e a eficácia da plataforma para fins de networking. Imagem 1.3 - LinkedIn Fonte: Freepik. O Twitter, uma das principais plataformas de mídia social e microblogging, utiliza o Redis como parte de sua infraestrutura de armazenamento em cache em memória. O Redis permite ao Twitter gerenciar a alta demanda por tweets, retweets e curtidas em tempo 50 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 real, garantindo que os usuários recebam atualizações instantâ- neas e que a plataforma permaneça altamente responsiva. Imagem 1.4 - O Twitter Fonte: Freepik. A Uber, uma das maiores empresas de compartilhamento de carros do mundo, utiliza o MongoDB como parte de seu sistema de gerenciamento de dados geoespaciais. O MongoDB permite à Uber rastrear em tempo real a localização de motoristas e passageiros, facilitando a alocação eficiente de viagens e melhorando a experiência dos usuários. O Airbnb, uma plataforma de hospedagem compartilhada, adotou o Couchbase, um banco de dados de documentos, para melhorar a disponibilidade e a escalabilidade de suas reservas e processos de pagamento. O Couchbase permite ao Airbnb lidar com uma grande quantidade de dados de reservas em tempo real, garantindo que os viajantes tenham uma experiência fluida ao reservar acomodações. 51BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Esses estudos de caso demonstram como empresas líderes em diversos setores estão adotando bancos de dados NoSQL para resolver desafios específicos e obter benefícios reais, como escalabilidade, desempenho e personalização. Esses exemplos destacam a versatilidade e o potencial dos bancos de dados NoSQL na resolução de problemas complexos e na criação de experiências melhores para os usuários. RESUMINDO E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que os bancos de dados NoSQL são uma categoria diversificada e valiosa de sistemas de armazenamento de dados que oferecem soluções para desafios específicos em gerenciamento e análise de dados. No capítulo 3, exploramos os «Tipos de bancos de dados NoSQL” em detalhes, destacando quatro categorias principais: bancos de dados de documentos, bancos de dados de colunas, bancos de dados de grafos e bancos de dados chave-valor. Para cada tipo, discutimos suas características distintas, estruturas de dados, vantagens e casos de uso ideais. Primeiramente, analisamos os bancos de dados de documentos, que se destacam pela flexibilidade na estrutura dos dados e são ideais para cenários com dados semiestruturados. Em seguida, exploramos os bancos de dados de colunas, altamente eficientes para consultas analíticas e agregações de dados em grande escala. Prosseguimos com os bancos de dados de grafos, que são ideais para representar e analisar dados interconectados, especialmente em cenários de redes sociais, sistemas de recomendação e análises de grafos complexos. Por fim, discutimos os bancos de dados chave-valor, que oferecem 52 BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 simplicidade e alta velocidade na recuperação de dados, sendo ideais para cenários que exigem acesso rápido a informações por meio de chaves exclusivas. Esperamos que você tenha apreciado a exploração desses tipos de bancos de dados NoSQL e compreendido como cada um deles se adapta a diferentes necessidades e desafios. Lembre-se de que a escolha do tipo de banco de dados adequado depende dos requisitos específicos do seu projeto e das características dos dados que você está gerenciando. Continue aprofundando seus conhecimentos e explorando essas ferramentas valiosas para a gestão eficaz de dados. 53BANCOS DE DADOS NÃO RELACIONAIS U ni da de 1 Casos de uso e aplicações de NoSQL OBJETIVO Ao término deste capítulo, você será capaz de entender como funciona a identificação e escolha de cenários apropriados para a aplicação de bancos de dados NoSQL. As pessoas que tentaram implementar soluções NoSQL sem a devida