O Banco de Dados
Por: eduardamaia17 • 10/9/2018 • 3.561 Palavras (15 Páginas) • 286 Visualizações
...
- NoSQL O QUE SIGNIFICA
O que significa NoSQL e como você classifica esses bancos de dados? NoSQL significa não somente SQL, o que implica que ao projetar uma solução de software ou produto, há mais de um mecanismo de armazenamento que poderia ser usado com base nas necessidades. NoSQL foi uma hashtag (#nosql) escolhida para uma meetup para discutir esses novos bancos de dados. O resultado mais importante da ascensão do NoSQL é Polyglot Persistence. NoSQL não tem uma definição prescritiva, mas podemos fazer um conjunto de observações comuns, tais como:
- Não usar o modelo relacional
- Correndo bem em clusters
- Principalmente open-source
- Construído para as propriedades da correia fotorreceptora do século XXI
- Sem esquema
- PORQUE NoSQL DATABASES
[pic 1]
Os desenvolvedores de aplicativos foram frustrados com a incompatibilidade de impedância entre as estruturas de dados relacionais e as estruturas de dados em memória da aplicação. O uso de bancos de dados NoSQL permite que desenvolvedores desenvolvam sem ter que converter estruturas em memória para estruturas relacionais.
[pic 2]
Há também um movimento de distância de usar bancos de dados como pontos de integração em favor de encapsular bancos de dados com aplicativos e integrar usando serviços.
A ascensão da web como uma plataforma também criou uma mudança de fator fundamental no armazenamento de dados como a necessidade de suportar grandes volumes de dados executando em clusters.
Os bancos de dados relacionais não foram projetados para funcionar eficientemente em clusters.
As necessidades de armazenamento de dados de um aplicativo ERP são muito mais diferentes do que as necessidades de armazenamento de dados de um Facebook ou um Etsy, por exemplo.
- Modelos de dados agregados:
Modelagem de banco de dados relacional é muito diferente do que os tipos de estruturas de dados que os desenvolvedores de aplicativos usam. Usando as estruturas de dados como modelado pelos desenvolvedores para resolver diferentes domínios problemáticos deu origem a um movimento de distância da modelagem relacional e em direção a modelos agregados, a maior parte disso é impulsionada pelo Domain Driven Design , um livro de Eric Evans. Um agregado é uma coleção de dados com os quais interagimos como uma unidade. Essas unidades de dados ou agregados formam os limites para as operações do ACID com os bancos de dados do banco de dados, do Valor-chave, do Documento e da Coluna-Família, todos podem ser vistos como formas de banco de dados agregado.
Agregados tornam mais fácil para o banco de dados gerenciar o armazenamento de dados sobre clusters, uma vez que a unidade de dados agora poderia residir em qualquer máquina e quando recuperado do banco de dados recebe todos os dados relacionados junto com ele. Os bancos de dados orientados a agregados funcionam melhor quando a maior parte da interação de dados é feita com o mesmo agregado, por exemplo, quando há necessidade de obter uma ordem e todos os detalhes, é melhor armazenar a ordem como um objeto agregado, mas lidar com esses agregados para obter detalhes do item em todas as ordens não é elegante.
As bases de dados agregadas tornam as relações entre agregados mais difíceis de manipular do que as relações intra-agregadas. Os bancos de dados agregados-ignorantes são melhores quando as interações usam dados organizados em muitas formações diferentes. As bases de dados agregadas geralmente calculam visões materializadas para fornecer dados organizados de forma diferente de seus agregados primários. Isso geralmente é feito com cálculos de redução de mapa, como um trabalho de redução de mapa para obter itens vendidos por dia.
- Modelos de Distribuição:
Os bancos de dados orientados a agregados facilitam a distribuição de dados, uma vez que o mecanismo de distribuição tem que mover o agregado e não ter que se preocupar com dados relacionados, pois todos os dados relacionados estão contidos no agregado. Existem dois estilos de distribuição de dados:
Sharding: Sharding distribui dados diferentes em vários servidores, de modo que cada servidor atue como a única fonte para um subconjunto de dados.
Replicação: a replicação copia dados em vários servidores, de modo que cada bit de dados pode ser encontrado em vários locais. A replicação vem em duas formas,
A replicação mestre-escravo faz com que um nó seja a cópia autoritária que manipula as gravações enquanto os escravos se sincronizam com o mestre e podem lidar com as leituras.
A replicação peer-to-peer permite escrever em qualquer nó. Os nós coordenam para sincronizar suas cópias dos dados.
A replicação Master-Slave reduz a chance de conflitos de atualização, mas a replicação peer-to-peer evita carregar todas as gravações em um único servidor criando um único ponto de falha. Um sistema pode usar uma ou ambas as técnicas. Como o banco de dados Riak fragmenta os dados e também os replica com base no fator de replicação.
- Teorema CAP:
Em um sistema distribuído, o gerenciamento de consistência (C), disponibilidade (A) e tolerância de partição (P) é importante, Eric Brewer apresentou o teorema CAP que afirma que em qualquer sistema distribuído podemos escolher apenas dois de consistência, disponibilidade ou tolerância partição . Muitos bancos de dados NoSQL tentam fornecer opções onde o desenvolvedor tem opções onde eles podem ajustar o banco de dados de acordo com suas necessidades. Por exemplo, se você considerar Riak um banco de dados de valor-chave distribuído. Existem essencialmente três variáveis r, w, n onde
R = número de nós que devem responder a uma solicitação de leitura antes que ela seja considerada bem-sucedida.
W = número de nós que devem responder a uma solicitação de gravação antes que ela seja considerada bem-sucedida.
N = número de nós onde os dados são replicados também conhecido como fator de replicação.
Em um
...