Características comuns de nosql

livros e blogs NoSQL oferecer opiniões diferentes sobre o que um banco de dados NoSQL é. Quatro principais recursos do NoSQL, mostrados na lista a seguir, aplicam-se a maioria dos bancos de dados NoSQL. A lista compara NoSQL para SGBD relacionais tradicionais:

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

  • nonrelational: Relações em um banco de dados estabelecer conexões entre tabelas de dados. Por exemplo, uma lista de detalhes da transação pode ser conectado a uma lista separada de detalhes da entrega. Com um banco de dados NoSQL, essas informações são armazenadas como um agregado - um único registro com tudo sobre a transação, incluindo o endereço de entrega.

  • hardware Commodity: Alguns bancos de dados são concebidos para funcionar melhor (ou único) com armazenamento especializado e hardware de processamento. Com um banco de dados NoSQL, servidores off-the-shelf baratos podem ser usados. Adicionando mais desses servidores baratos permite que bancos de dados NoSQL para escalar para lidar com mais dados.

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

esquema agnóstico

bancos de dados NoSQL são esquema agnóstico. Você não é obrigado a fazer um monte de up-front o trabalho de projeto antes que você pode armazenar dados em bancos de dados NoSQL. Você pode começar a codificar e armazenar e recuperar dados sem saber como as lojas de banco de dados e trabalha internamente. (Se e quando precisa funcionalidade avançada, pode adicionar manualmente outros índices ou ajustar as estruturas de armazenamento de dados.) Esquema agnosticism pode ser a diferença mais significativa entre noSQL e bases de dados relacionais.

O grande benefício para um banco de dados agnóstico esquema é que o tempo de desenvolvimento é reduzido. Este benefício aumenta à medida que você passar por várias versões de desenvolvimento e necessidade de alterar as estruturas internas de dados no banco de dados.

Por exemplo, em um RDBMS tradicional, você passa por um processo de reformulação do esquema. O esquema instrui o banco de dados em que dados que esperar. Alterar os dados armazenados, ou estruturas, e você deve reinstruct o banco de dados usando um esquema modificado. Se você fosse fazer uma mudança, você tem que gastar muito tempo a decidir como re-arquiteto dos dados existentes. Em bancos de dados NoSQL, você simplesmente armazenar uma estrutura de dados diferente. Não há necessidade de dizer o banco de dados de antemão.

Você pode ter que modificar suas consultas nesse sentido, talvez adicionar o específica ocasional índice (Tal como um índice intervalo inteiro para permitir a menos que e maior do que as consultas específicos do tipo de dados), mas todo o processo é muito menos doloroso do que é com um RDBMS.

RDBMS decolou devido à sua flexibilidade e porque, usando SQL, ele acelerou a mudança de uma consulta. bancos de dados NoSQL proporcionar essa flexibilidade para mudar tanto o esquema e a consulta, que é uma das razões principais que eles serão cada vez mais adotadas ao longo do tempo.

Mesmo em consulta, você pode não precisar se preocupar muito sobre conhecer as alterações de esquema - considerar um índice de mais de um número de conta campo, onde número da conta pode ser localizado em qualquer lugar em um documento que é armazenado em um banco de dados NoSQL. Você pode alterar a estrutura e mudar onde número da conta é armazenado, e se o elemento tem o mesmo nome em outras partes do documento, ele ainda está disponível para consulta sem alterações em seu mecanismo de consulta.

Note-se que nem todos os bancos de dados NoSQL são totalmente esquema agnóstico. Alguns, como o HBase, exigir-lhe para parar o banco de dados para alterar definições de coluna. Eles ainda são considerados bancos de dados NoSQL porque os campos não todos definidas (colunas, neste caso) são obrigados a ser conhecido antecipadamente para cada registro - apenas as famílias de colunas.

RDBMS permite campos individuais em registros a ser identificado como nulo valores. O problema com um RDBMS é que o tamanho dos dados armazenados e desempenho são afetados negativamente quando o armazenamento é reservado para valores nulos apenas no caso do registro pode, em algum momento no futuro ter um valor nessa coluna. Em Cassandra, você simplesmente não fornecer os dados dessa coluna, que resolve o problema.

nonrelational

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

Esta sustentação descreve como as tabelas se relacionam entre si. Uma fila única ordem podem dizer respeito a muitas linhas endereço de entrega, mas cada linha endereço de entrega também se relaciona com várias linhas Ordem. Isto é um muitos-para-muitos relação.

bancos de dados NoSQL não têm esse conceito de relações entre seus registros. Eles vez desnormalizar dados. Isto significa que em um banco de dados NoSQL teria uma estrutura de ordem com o endereço de entrega incorporado. Isto significa que o endereço de entrega é duplicado em cada linha Order que o utiliza. Esta abordagem tem a vantagem de não necessitar de tempo de consulta complexa junta-se em várias estruturas de dados (tabelas) embora.

bancos de dados NoSQL não armazenam informações sobre como indivíduo registros relacionam com outros registros no banco de dados, que pode soar como uma limitação. No entanto, bancos de dados NoSQL são mais flexíveis em termos de estruturas de dados que podem ser armazenados.



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

Em vez de inserir dez linhas em uma variedade de tabelas em um banco de dados relacional, você pode em vez armazenar uma estrutura única para toda esta informação ordem - digamos, como um documento JSON ou XML.

Em teoria banco de dados relacional, o objetivo é normalizar seus dados (ou seja, para organizar os campos e tabelas para remover dados duplicados). Em bancos de dados NoSQL - especialmente de documentos ou bases de dados agregadas - você muitas vezes deliberadamente desnormalizar dados, armazenar alguns dados várias vezes.

Você pode armazenar, por exemplo, “Entrega ao Cliente Endereço” várias vezes em muitas ordens de um cliente faz ao longo do tempo, em vez de armazená-lo uma vez e se referem a ele em várias ordens. Isso requer espaço de armazenamento extra, e um pouco de premeditação na gestão na sua aplicação. Então, por que fazê-lo?

Há duas vantagens para o armazenamento de dados múltiplos tempos:

  • Fácil armazenamento e recuperação: Basta guardar e obter um único registro.

  • velocidade de consulta: Em bancos de dados relacionais, você juntar informações e adicionar restrições entre tabelas no momento da consulta. Isso pode exigir o motor de banco de dados para avaliar muitas mesas. Quanto mais restrições de consulta que você tem em diferentes mesas, mais você reduzir a sua velocidade de consulta. (É por isso que um RDBMS tem vistas pré-computadas.) Em um banco de dados NoSQL, todas as informações que você precisa para avaliar sua consulta está em um único documento. Portanto, você pode determinar rapidamente a lista de documentos correspondentes.

visualizações relacionais e denormalizations NoSQL diferentes abordagens para o problema de dados espalhados por registros. Em NoSQL, você pode ter que manter várias denormalizations que representam diferentes pontos de vista dos mesmos dados. Esta abordagem aumenta o custo de armazenamento, mas dá-lhe muito melhor o tempo de consulta.

Video: Fundamentos de Big data: Banco de Dados NoSQL

Dado o custo cada vez mais reduzindo de armazenamento e o aumento da velocidade de desenvolvimento e consulta, os dados desnormalizada (aka visualizações materializadas) Não é uma razão assassino para descontar soluções NoSQL. É apenas uma maneira diferente de abordar o mesmo problema, com suas próprias vantagens e desvantagens.

NoSQL é altamente distribuível e usa hardware comum

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

Armazenar dados em várias máquinas e permitindo que ele seja consultado é difícil. Você deve enviar o pedido para todos os servidores e esperar por uma resposta. Com sorte, você configurar as máquinas de modo que eles são rápidos o suficiente para falar uns com os outros para lidar com consultas distribuídas!

A principal vantagem dessa abordagem é, no caso de grandes conjuntos de dados, porque para alguns requisitos de armazenamento, mesmo o maior servidor único disponível não poderia armazenar ou 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 os dados, mesmo que seja principalmente sobre o que as pessoas tinham para almoço e vídeos bonito do gato.

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

Outra vantagem importante é que a adição de alta disponibilidade é easier- você já é meio caminho andado através da distribuição de seus dados. Se você replicar seus dados uma vez ou duas vezes através de outros servidores no cluster, seus dados ainda estarão acessíveis, mesmo se um dos acidentes servidores, queimaduras, e morre.

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

Uma exceção à regra altamente distribuível é o de bancos de dados de grafos. Para responder eficazmente determinadas consultas gráfico em tempo hábil, os dados precisam ser armazenados em um único servidor. Ninguém tem resolvido este problema em particular ainda.

Video: Webinar - PostgreSQL e porque você não precisa de NoSQL

considerar cuidadosamente se você precisa de uma loja de triple ou uma loja de gráfico. lojas triplas são geralmente distribuível, enquanto lojas de gráficos não são. Qual deles você precisa depende das perguntas que você deve suportar.


Publicações relacionadas