Lar Finanças Pessoais Características comuns de NoSQL - dummies

Características comuns de NoSQL - dummies

Índice:

Vídeo: Webinar - PostgreSQL e porque você não precisa de NoSQL 2024

Vídeo: Webinar - PostgreSQL e porque você não precisa de NoSQL 2024
Anonim

Os livros e blogs NoSQL oferecem opiniões diferentes sobre o que é um banco de dados NoSQL. Quatro recursos principais do NoSQL, mostrados na lista a seguir, aplicam-se à maioria dos bancos de dados NoSQL. A lista compara NoSQL com o SGBD relacional tradicional:

  • Esquema agnóstico: Um esquema de banco de dados é a descrição de todas as estruturas de dados e dados possíveis em um banco de dados relacional. Com um banco de dados NoSQL, um esquema não é necessário, dando-lhe a liberdade de armazenar informações sem fazer projeto de esquema inicial.

  • Não relacionamentos: As relações em um banco de dados estabelecem conexões entre as tabelas de dados. Por exemplo, uma lista de detalhes da transação pode ser conectada a uma lista separada de detalhes de entrega. Com um banco de dados NoSQL, esta informação é armazenada como um agregado - um único registro com tudo sobre a transação, incluindo o endereço de entrega.

  • Hardware de mercadorias: Alguns bancos de dados são projetados para operar melhor (ou somente) com hardware especializado em armazenamento e processamento. Com um banco de dados NoSQL, podem ser usados ​​servidores baratos em prateleira. Adicionando mais desses servidores baratos, os bancos de dados NoSQL podem escalar para gerenciar mais dados.

  • Altamente distribuível: Os bancos de dados distribuídos podem armazenar e processar um conjunto de informações em mais de um dispositivo. Com um banco de dados NoSQL, um conjunto de servidores pode ser usado para armazenar um único banco de dados grande.

Schema agnostic

Os bancos de dados NoSQL são agnósticos de esquema. Você não precisa fazer muito trabalho de design inicial antes de poder armazenar dados em bancos de dados NoSQL. Você pode começar a codificar e armazenar e recuperar dados sem saber como o banco de dados armazena e trabalha internamente. (Se e quando você precisar de funcionalidade avançada, você pode adicionar manualmente mais índices ou ajustar estruturas de armazenamento de dados.) O agnosticismo de esquema pode ser a diferença mais significativa entre o NoSQL e os bancos de dados relacionais.

O grande benefício para um banco de dados agnóstico de esquema é que o tempo de desenvolvimento é reduzido. Este benefício aumenta conforme você passa por vários lançamentos de desenvolvimento e precisa alterar as estruturas de dados internas no banco de dados.

Por exemplo, em um RDBMS tradicional, você passa por um processo de redesenhar o esquema. O esquema instrui o banco de dados sobre quais dados esperar. Altere os dados armazenados ou estruturas, e você deve reinstruir o banco de dados usando um esquema modificado. Se você fizesse uma mudança, você precisaria dedicar muito tempo a decidir como reconfigurar os dados existentes. Nos bancos de dados NoSQL, você simplesmente armazena uma estrutura de dados diferente. Não há necessidade de informar o banco de dados de antemão.

Talvez seja necessário modificar suas consultas de acordo, talvez adicione o índice específico (como um índice de intervalo inteiro para permitir menos e maior que as consultas específicas de tipo de dados), mas todo o processo é muito menos doloroso do que com um RDBMS.

RDBMS decolou por causa de sua flexibilidade e porque, ao usar o SQL, acelerou a alteração de uma consulta. Os bancos de dados NoSQL fornecem essa flexibilidade para alterar o esquema e a consulta, que é uma das principais razões pelas quais eles serão cada vez mais adotados ao longo do tempo.

Mesmo na consulta, talvez você não precise se preocupar demais com conhecer as mudanças de esquema - considere um índice em um número de conta de campo, onde número de conta pode ser localizado em qualquer lugar em um documento que esteja armazenado em um banco de dados NoSQL. Você pode alterar a estrutura e mudar a localização onde número de conta está armazenado, e se o elemento tiver o mesmo nome em outro lugar no documento, ainda está disponível para consulta sem alterações no mecanismo de consulta.

Observe que nem todos os bancos de dados NoSQL são totalmente agnósticos de esquema. Alguns, como o HBase, exigem que você pare o banco de dados para alterar as definições das colunas. Eles ainda são considerados bancos de dados NoSQL porque nem todos os campos definidos (colunas neste caso) devem ser conhecidos antecipadamente para cada registro - apenas as famílias das colunas.

RDBMS permite que os campos individuais nos registros sejam identificados como valores nulos . O problema com um RDBMS é que o tamanho e o desempenho dos dados armazenados são negativamente afetados quando o armazenamento é reservado para valores nulos, apenas no caso de o registro ter possivel em algum momento ter um valor nessa coluna. Em Cassandra, você simplesmente não fornece os dados dessa coluna, que resolve o problema.

Nonrelacional

Os sistemas de gerenciamento de banco de dados relacionais têm sido a maneira dominante de armazenar dados de aplicativos por mais de 20 anos. Uma grande quantidade de trabalho matemático foi feito para provar a teoria que os sustenta.

Este suporte descreve como as tabelas se relacionam umas com as outras. Uma única linha de Ordem pode estar relacionada a muitas linhas de endereço de entrega, mas cada linha de endereço de entrega também se relaciona com várias linhas de pedidos. Este é um muitos - a - muitas relações .

Os bancos de dados NoSQL não possuem este conceito de relações entre seus registros. Eles desnormalizam os dados em vez disso. Isso significa que em um banco de dados NoSQL teria uma estrutura de Pedido com o endereço de entrega embutido. Isso significa que o endereço de entrega é duplicado em cada linha de Ordem que o usa. Esta abordagem tem a vantagem de não exigir juntas complexas de tempo de consulta em várias estruturas de dados (tabelas).

Os bancos de dados NoSQL não armazenam informações sobre como registros individuais se relacionam com outros registros no banco de dados, o que pode soar como uma limitação. No entanto, os bancos de dados NoSQL são mais flexíveis em termos de estruturas de dados que você pode armazenar.

Considere um pedido de um revendedor online. A ordem pode incluir códigos de produtos, quantidades, preços de itens e descrições de itens, bem como informações sobre o pedido de pessoa, como endereço de entrega e informações de pagamento.

Ao invés de inserir dez linhas em uma variedade de tabelas em um banco de dados relacional, você pode armazenar uma estrutura única para todas essas informações de ordem - digamos, como documento JSON ou XML.

Na teoria do banco de dados relacionais, o objetivo é normalizar seus dados (ou seja, organizar os campos e tabelas para remover dados duplicados). Nos bancos de dados NoSQL - especialmente bancos de dados de documentos ou agregados - você geralmente desregulam dados deliberadamente, armazenando alguns dados várias vezes.

Você pode armazenar, por exemplo, "Endereço de entrega do cliente" várias vezes em muitas ordens que um cliente faz ao longo do tempo, em vez de armazená-lo uma vez e se referir a ele em vários pedidos. Isso requer espaço de armazenamento extra, e um pouco de previsão no gerenciamento em sua aplicação. Então, por que?

Existem duas vantagens para armazenar dados várias vezes:

  • Armazenamento e recuperação fáceis: Apenas salve e obtenha um único registro.

  • Velocidade de consulta: Em bancos de dados relacionais, você junta informações e adiciona restrições em tabelas no horário de consulta. Isso pode exigir que o mecanismo do banco de dados avalie muitas tabelas. Quanto mais restrições de consulta você possui em diferentes tabelas, mais você reduz a velocidade da consulta. (É por isso que um RDBMS tem visualizações précomputadas.) Em um banco de dados NoSQL, todas as informações que você precisa para avaliar sua consulta estão em um único documento. Portanto, você pode determinar rapidamente a lista de documentos correspondentes.

As visualizações relacionais e as desnormalizações do NoSQL são diferentes abordagens para o problema da disseminação de dados entre os registros. No NoSQL, você pode ter que manter várias desmineralizações que representam diferentes visualizações dos mesmos dados. Esta abordagem aumenta o custo do armazenamento, mas oferece muito melhor tempo de consulta.

Dado o custo de armazenamento cada vez maior e o aumento da velocidade de desenvolvimento e consulta, os dados desnormalizados (aka visualizações materializadas ) não são um motivo assassino para descontar as soluções NoSQL. É apenas uma maneira diferente de abordar o mesmo problema, com suas próprias vantagens e desvantagens.

O NoSQL é altamente distribuível e usa hardware de mercadorias

Em muitos bancos de dados NoSQL, uma decisão de design chave é usar vários computadores para armazenar dados para um único banco de dados, em vez de ter todo o banco de dados em um único servidor.

Armazenar dados em várias máquinas e permitir que seja consultado é difícil. Você deve enviar a consulta a todos os servidores e aguarde uma resposta. Esperemos que você configure as máquinas para que elas sejam rápidas o suficiente para conversar entre si para lidar com consultas distribuídas!

A principal vantagem dessa abordagem é o caso de conjuntos de dados muito grandes, pois, para alguns requisitos de armazenamento, mesmo o maior servidor único disponível não pode armazenar nem processar todos os dados que você precisa. Considere todas as mensagens no Twitter e no Facebook. Você precisa de um mecanismo distribuído para gerir eficazmente todos esses dados, mesmo que seja principalmente sobre o que as pessoas tiveram para o café da manhã e vídeos de gato fofos.

Uma vantagem de distribuir seu banco de dados é que você pode usar servidores mais baratos, chamados servidores de commodities .Mesmo para conjuntos de dados menores, pode ser mais barato comprar três servidores de produtos básicos em vez de um único servidor de maior potência.

Outra vantagem importante é que adicionar alta disponibilidade é mais fácil; você já está a meio caminho distribuindo seus dados. Se você replicar seus dados uma ou duas vezes em outros servidores no cluster, seus dados ainda estarão acessíveis, mesmo que um dos servidores falhe, queime e morra.

Nem todos os bancos de dados de código aberto suportam alta disponibilidade, a menos que você compre a versão suportada e paga do banco de dados da empresa que a desenvolve.

Uma exceção à regra altamente distribuível é a de bancos de dados gráficos. Para responder efetivamente certas consultas gráficas em tempo hábil, os dados precisam ser armazenados em um único servidor. Ninguém resolveu este problema específico ainda.

Considere cuidadosamente se você precisa de uma loja tripla ou uma loja gráfica. As lojas triplas geralmente são distribuíveis, enquanto as lojas de gráficos não são. O que você precisa depende das consultas que você deve suportar.

Características comuns de NoSQL - dummies

Escolha dos editores

Origem e Design de Hadoop - dummies

Origem e Design de Hadoop - dummies

Então, o que é exatamente isso com o nome engraçado - Hadoop? No seu núcleo, o Hadoop é uma estrutura para armazenar dados em grandes clusters de hardware de commodities - hardware de computador todos os dias acessível e facilmente disponível - e executando aplicativos contra esses dados. Um cluster é um grupo de computadores interligados (conhecido como ...

A arquitetura do porco em Hadoop - dummies

A arquitetura do porco em Hadoop - dummies

"Simples" geralmente significa "elegante" quando se trata de desenhos arquitetônicos para Essa nova mansão do Vale do Silício que você planejou quando o dinheiro começa a rolar depois de implementar o Hadoop. O mesmo princípio se aplica à arquitetura de software. O porco é composto por dois componentes (count 'em, two): O próprio idioma: como prova de que os programadores ...

MapReduce Application Flow em Hadoop - dummies

MapReduce Application Flow em Hadoop - dummies

No seu núcleo, MapReduce é um modelo de programação para o processamento de conjuntos de dados que são armazenados de forma distribuída nos nós de escravo de um cluster Hadoop. O conceito-chave aqui é dividir e conquistar. Especificamente, você deseja quebrar um grande conjunto de dados em muitas peças menores e processá-las em paralelo com o mesmo algoritmo. ...

Escolha dos editores

Apoiando a sua campanha PPC com análise de palavras-chave - manequins

Apoiando a sua campanha PPC com análise de palavras-chave - manequins

A base de todo o trabalho do mecanismo de pesquisa é uma análise de palavras-chave. Fazer uma análise de palavras-chave realmente não é tão complicado e pode significar a diferença entre sucesso e falha em sua campanha PPC. Comece digitando as palavras-chave óbvias em um editor de texto ou processador de texto - aqueles que você já pensou ou, se você ...

Envie seu site para Yahoo! Search Directory - dummies

Envie seu site para Yahoo! Search Directory - dummies

Envios para o Yahoo! O diretório costumava ser muito difícil. Pesquisas mostraram que as pessoas que conseguiram obter seus sites listados no diretório tiveram que tentar várias vezes em questão de meses. Era grátis, mas era um aborrecimento. A boa notícia: você pode obter seu site listado em Yahoo! Diretório ...

Dicas para criar e otimizar conteúdo para objetos e indústrias difíceis - manequins

Dicas para criar e otimizar conteúdo para objetos e indústrias difíceis - manequins

Em A superfície, a criação de conteúdo não soa tão difícil até você se sentar e tentar escrever. Sua estratégia de SEO depende desse conteúdo. É ainda pior se você estiver escrevendo conteúdo para o que muitas pessoas podem considerar uma indústria chata. A boa notícia é que é possível transformar indivíduos potencialmente chatos em bons ...

Escolha dos editores

Componentes eletrônicos: transistores como um potenciômetro mágico - manequins

Componentes eletrônicos: transistores como um potenciômetro mágico - manequins

Um transistor dentro de um O circuito eletrônico funciona como uma combinação de um diodo e um resistor variável, também chamado de potenciômetro ou pote. Mas isso não é apenas um pote comum; é um pote mágico cujo botão é misteriosamente conectado ao diodo por raios invisíveis, tipo desse tipo: quando a tensão direta é aplicada em ...

Componentes eletrônicos: Resistores - manequins

Componentes eletrônicos: Resistores - manequins

Um resistor é um pequeno componente projetado para fornecer um específico quantidade de resistência em um circuito eletrônico. Como a resistência é um elemento essencial de quase todos os circuitos eletrônicos, você usará resistores em quase todos os circuitos que você constrói. Embora os resistores venham em uma variedade de tamanhos e formas, o tipo mais comum ...