• Nenhum resultado encontrado

Fundamentos de Banco de Dados: Banco de Dados NoSQL

N/A
N/A
Protected

Academic year: 2022

Share "Fundamentos de Banco de Dados: Banco de Dados NoSQL"

Copied!
20
0
0

Texto

(1)

Fundamentos de Banco de Dados: Banco de Dados NoSQL

Resumo

• FEITOSA, M. P. MongoDB - o banco de dados NoSQL mais utilizado da atualidade: Uma introdução com instalação, comandos e aplicações em Java. Editor independente; 1ª edição, 2021;

• HOWS, D. Introdução ao MongoDB. Novatec – 2015;

• DATE, C. J. Introdução a sistemas de banco de dados. Rio de Janeiro. Ed. Campus, 1991;

• CHEN, Peter. Modelagem de dados: a abordagem entidade-relacionamento para projeto lógico. São Paulo: Makron Books, 1990;

• MEDEIROS, L. F., Banco de dados, princípios e práticas, 1ª. ed., Ed. Intersaberes, 2013;

• PUGA, S., França E., GOYA M., Banco de dados: Implementação em SQL, PL/SQL e Oracle 11g, Ed.

Pearson, 2013;

• ELMASRI R., NAVATHE, S., Sistemas de Banco de Dados, 4ªed., Ed. Pearson, 2005.

Introdução

Considere o seguinte cenário: o DBA desenvolveu um aplicativo de banco de dados para sua empresa. À medida que a aplicação se tornou amplamente utilizada, a quantidade de dados gerados pela aplicação aumentou rapidamente. O DBA e sua equipe decidiram expandir seu armazenamento de banco de dados.

Novos requisitos para capturar detalhes dos perfis dos usuários do aplicativo foram passados para o DBA.

Ele trabalhou duro para rever o esquema de banco de dados existente, para acomodar os novos requisitos.

Agora que a aplicação se tornou mais popular, a gerência do DBA pediu-lhe para capturar detalhes adicionais sobre usuários, tais como suas pegadas móveis, Facebook e Twitter na Internet. O DBA concorda que esses novos requisitos tornarão o aplicativo mais útil para o negócio. No entanto, o volume de dados a serem capturados e a velocidade em que os dados precisam ser armazenados são estimados como muito altos.

Além disso, os dados a serem armazenados não são de alto valor, a menos que sejam agregados e avaliados como um todo.

Tentar cumprir todos estes requisitos com o banco de dados relacional será muito caro, e com tantos novos requisitos, o DBA agora está sobrecarregado, com a quantidade de trabalho que é necessário para alterar os esquemas de banco de dados existentes. A administração deseja que o aplicativo atualizado seja lançado o mais rápido possível.

(2)

Exemplo de Cenário:

Limitações dos bancos de dados relacionais

Nos dias de hoje, o volume de dados de certas organizações, como podemos citar o caso do Facebook, que atingiu o nível de petabytes (em 2011, este volume de dados ultrapassou 30 petabytes (30 mil terabytes), sendo que menos de um ano antes o volume era de 20 petabytes). Este é um exemplo real de como esse crescimento de dados tem expandido rapidamente. No caso destes tipos de organizações, a utilização dos SGBDs relacionais tem se mostrado muito problemática e não tão eficiente. Os principais problemas encontrados com a utilização do Modelo Relacional estão principalmente na dificuldade de conciliar o tipo de modelo com a demanda da escalabilidade que está cada vez mais frequente.

Podemos tomando o Facebook como exemplo, digamos que se o sistema está rodando sobre um SGBD relacional e houver um crescimento do número de usuários, consequentemente haverá uma queda de performance. E para superar este problema seria necessário fazer um upgrade no servidor ou aumentar o número de servidores.

Se o número de usuários continuasse a crescer intensamente, tais soluções apresentadas não se mostrariam suficientes, pois o problema passa a se concentrar no acesso à base de dados. Neste caso, o que poderia ser feito para resolver este problema de escalabilidade seria aumentar o poder do servidor, aumentando sua memória, processador e armazenamento. Este tipo de solução é chamado de Escalabilidade Vertical. Por outro lado, poderíamos aumentar o número de máquinas no servidor web. Chamamos esta alternativa de Escalabilidade Horizontal.

(3)

Vamos citar novamente o Facebook, onde suas aplicações continuam sempre a crescer, chega um momento em que o banco de dados não consegue atender todas as requisições em um tempo hábil. Neste momento poderíamos apelar para a Escalabilidade Vertical e fazer o upgrade na máquina em que o banco de dados está rodando. No entanto, chega um momento em que a capacidade da máquina atinge o limite do orçamento, para conseguir uma máquina realmente eficiente. Dessa forma, o próximo passo seria utilizar a Escalabilidade Horizontal, ou seja, colocar mais máquinas rodando o banco de dados.

Tal tarefa pode parecer simples, porém, no momento em que escalonamos o banco em diversas máquinas é necessário realizar na grande maioria das vezes uma série de configurações e alterações nas aplicações para que tudo funcione como esperado na nova arquitetura distribuída.

Como esse intenso volume de dados vem aumentando e pela sua natureza estrutural, os desenvolvedores perceberam a dificuldade ao se organizar dados no Modelo Relacional. É neste ponto que o foco das soluções não-relacionadas está direcionado.

Definição de BIG DATA

Que dados podem ser definidos como "grandes dados"? Como o próprio termo sugere, os conjuntos de dados que são muito grandes em tamanho geralmente são chamados de grandes dados. As principais características dos grandes dados (referidos como "os quatro Vs"):

Volume;

Velocidade;

Variedade;

Valor.

As duas primeiras características significam que os dados crescem tremendamente em volume com velocidade rápida. As duas últimas características são únicas para grandes dados.

Variedade significa que os grandes conjuntos de dados podem ser de fontes diferentes. Isso torna difícil que esses conjuntos de dados sejam armazenados em bancos de dados relacionais tradicionais. Como dados grandes não têm uma estrutura definida, ele precisa ser tratado de maneira diferente. Valor significa que, de todos os grandes dados que são gerados a partir dessas várias fontes, apenas um pouco de dados é de valor para impulsionar as decisões de negócios. Ou seja, um pedaço de informação em grandes dados não é valioso por si só, mas torna-se valioso no agregado.

Com o surgimento de novas tecnologias como telefones inteligentes, maiores volumes de dados estão sendo gerados em todo o mundo. Esses dados são gerados em vários formatos. Como os bancos de dados tradicionais não conseguiam lidar com esses volumes de dados e processá-los instantaneamente, havia uma necessidade de uma abordagem diferente para armazenar dados.

(4)

Definição: Banco de Dados NoSQL

Um banco de dados NoSQL é um banco de dados não relacional que não armazena informações no formato relacional tradicional. Não existe um esquema definido para os dados. Os dados são armazenados como pares chave-valor. O termo NoSQL é uma abreviatura de "Not Only SQL" – “Não apenas SQL”.

Exemplos de Bancos de Dados NoSQL:

Oracle NoSQL;

Cassandra;

Voldemort;

MongoDB.

Modelos de dados para bancos de dados NoSQL

Os bancos de dados NoSQL usam uma variedade de modelos de dados para acessar e gerenciar os dados.

Esses tipos de banco de dados são otimizados especificamente para aplicativos que exigem modelos de grande volume de dados, baixa latência e flexibilidade:

Key-value (Chave-Valor): Este é o modelo de dados mais simples para dados não estruturados. É altamente eficiente e altamente flexível. A desvantagem deste modelo é que os dados não são autoexplicativos.

Columnar (Colunar): Este modelo de dados é bom para conjuntos de dados esparsos, subcolunas agrupadas e colunas agregadas.

Documento: Este modelo de dados é bom para repositórios XML e objetos auto-descreventes. No entanto, o armazenamento neste modelo pode ser ineficiente.

Grafos: Este é um modelo relativamente novo que é bom para o relacionamento transversal. Não é eficiente para pesquisas gerais.

O NoSQL é mais indicado para aqueles sistemas que tenham necessidades maiores de armazenamento e desempenho. O NoSQL não veio para substituir o SQL, mas sim para oferecer mais uma alternativa de um banco de dados mais flexível no suporte de dados.

(5)

Comparação entre BD Relacional X BD NoSQL

Categoria Banco de Dados Relacional Banco de Dados NoSQL Escalonamento É importante lembrar que é possível

ser feito o escalonamento em um Modelo Relacional, no entanto, é muito complexo. Possui uma natureza estruturada, portanto, a inserção dinâmica e transparente de novos nós a tabela não é realizada naturalmente.

Não possui um esquema pré-definido, fazendo com que este tipo de modelo seja flexível, o que favorece a inserção transparente de outros elementos.

Consistência Neste quesito, o Modelo Relacional se mostra forte. As suas regras de consistência são bastante rigorosas no que diz respeito à consistência das informações.

É realizada eventualmente no modelo: tem apenas a garantia que se não houver nenhuma atualização nos dados, todos os acessos aos itens devolverão o último valor que foi atualizado.

Disponibilidade Por não conseguir trabalhar de forma eficiente com a distribuição de dados, o Modelo Relacional acaba não suportando uma demanda muito grande de informações.

Outro ponto forte neste modelo é o que diz respeito à disponibilidade, pois possui um alto nível de distribuição de dados, permitindo assim que seja possível fazer com que um enorme fluxo de solicitações aos dados seja atendido com a vantagem de o sistema ficar indisponível o menor tempo possível.

Tipo de tecnologia a ser empregada

Ao decidir sobre a tecnologia de armazenamento para um aplicativo, você deve considerar dois aspectos principais: os dados a serem armazenados e o esquema do aplicativo.

Se você tem grandes quantidades de dados de baixa densidade, escassos e de baixo valor a serem armazenados, um banco de dados NoSQL pode ser a melhor escolha. Se você tiver dados de alto valor, um RDBMS é uma escolha melhor.

Se o esquema do aplicativo é dinâmico (ou seja, ele muda constantemente), um banco de dados NoSQL pode ser uma escolha melhor. Se o esquema do aplicativo for corrigido, um RDBMS pode ser uma escolha melhor.

Utilização do banco de dados NoSQL

Necessidade de grande volume de dados: informações estimadas em petabytes.

Necessidade de informações em tempo real: em ambientes que precisam de tempo de resposta, deve ser imediato.

Variedade de dados: o aplicativo deve ser capaz de armazenar qualquer tipo de informação sobre o paciente (relatórios de raios-x, exames, resultados laboratoriais, insumos médicos, contas médicas, etc.).

Mudança de dados: Diferentes hospitais terão políticas diferentes sobre os dados que precisam ser armazenados. Essas políticas podem mudar de tempos em tempos.

(6)

MongoDB

De acordo com o site DB-Engines, o MongoDB é o 5º Bando de Dados mais utilizado no mundo e faz parte do quadrante mágico do Gartner, dentro da categoria de banco de dados NoSQL, o MongoDB é mais implantado no mundo.

MongoDB é uma nova ideia de banco de dados, trazendo conceitos de Banco de Dados Orientado a Documentos. A definição geral apresentada é que os Bancos de Dados orientados a Documentos utilizam o conceito de dados e documentos autocontidos e auto descritivos, e isso implica que o documento em si já define como ele deve ser apresentado e qual é o significado dos dados armazenados na sua estrutura.

Banco de Dados Orientados a Documentos tem como característica conter todas as informações importantes em um único documento, ser livre de esquemas, possuir identificadores únicos universais (UUID), possibilitar a consulta de documentos através de métodos avançados de agrupamento e filtragem (MapReduce) e também permitir redundância e inconsistência.

Os bancos orientados a documentos que não fornecem relacionamentos entre documentos, o que mantém seu design sem esquemas. Dessa forma, ao invés de armazenar dados relacionados em uma área de armazenamento separado, os bancos de dados de documentos integram esses dados ao próprio documento.

O MongoDB contém coleções e que as coleções contém documentos. Os documentos contém dados semiestruturados, normalmente no formato JSON. O MongoDB é schema less, o que significa que cada documento de uma coleção pode ter uma estrutura totalmente diferente.

Para acessar o banco de dados MongoDB

Entre na opção MongoDB:

(7)

Selecione a conexão localhost:

Clique em connect:

(8)

Suba a aba do MONGOSH (Mongo Shell):

Para se criar um banco de dados:

>use nome_db

>use descomplica

(9)

Para criar a coleção:

db.createCollection (“nome coleção”)

Para inserir dados na coleção:

Descomplica>db.nome_da_coleção.insertOne({chave:valor})

(10)

Para inserir vários dados na coleção, de uma vez:

db.NomeColeção.insertMany([documento 1, documento 2,…])

Para visualizar o conteúdo de uma coleção:

Descomplica> db.cursos.find()

(11)

Para buscar dados específicos dentro de uma coleção:

Descomplica> db.colecao.find({parâmetro:{eq$:”valor”}})

Para verificar a quantidade de documentos em uma coleção:

db.NomeColeção.count()

(12)

Listar os comandos aplicáveis ao banco de dados:

db.help()

Para verificar todos os bancos de dados do servidor:

show dbs

(13)

Para verificar o banco de dados que está sendo usado:

descomplica>db

(14)

Para criar variáveis no MongoDB:

nomeDaVariável = Documento JSON

documento1= ({

"Site": "db4beginners.com",

"Categoria": "CriarArtigo",

"DataPublicação": "09-23-2017",

"PalavrasChave": [

"mongoDB",

"DB4B",

"Banco de Dados",

"NoSQL"

]})

(15)

documento2= ({

"NomeSite": "db4beginners.com",

"titulo": "Instalação MongoDB",

"categoria": "ValidarArtigo",

"DataPrevista": "09-24-2017",

"DataPublicaçao": "09-25-2017",

"keyWords": [

"mongoDB",

"DB4B",

"Banco de Dados",

"NoSQL"

],

"Finalizado":false })

(16)

documento3= ({

"_id" : "Lucia",

"NomeSite": "SQL4.us",

"titulo": "Certificação SQL Server",

"categoria": "Gravar Vídeo",

"Canal Youtube": "DB4Beginners",

"keyWords": [

"Oracle 19C",

"70-761",

"Banco de Dados",

"Relacional"

],

"Finalizado":true })

(17)

Para inserir um documento na coleção:

db.tarefas.insert(documento1)

Para Inserir vários documentos em uma coleção:

db.tarefas.insertMany([documento2, documento3])

(18)

Para listar as coleções do banco de dados:

>show collections

Para alterar dados da coleção:

Descomplica> db.colecao.update({parâmetro:valor antigo},{$set:{parâmetro: valor novo}})

(19)

Para remover dados da coleção:

Descomplica>db.aluno.deleteOne({parâmetro:valor})

Para eliminar uma coleção:

Descomplica> db.colecao.drop()

(20)

Para eliminar o banco de dados:

Descomplica>db.dropDatabase()

Referências

Documentos relacionados

seria usada para o parafuso M6, foram utilizadas as equações 14 e 15, referentes aos parafusos de 8 mm de diâmetro e folga entre parafuso e furo de 0,5 mm, que definem,

No entanto, os resultados apresentados pelo --linalol não foram semelhantes, em parte, aos do linalol racêmico, uma vez que este apresenta um efeito vasorelaxante em anéis de

Resumo: O presente trabalho corresponde a um estudo empírico descritivo e exploratório que aborda comportamentos e falas de atores políticos que participaram do processo legislativo

As micotoxinas são compostos químicos tóxicos provenientes do metabolismo secundário de fungos filamentosos e conhecidas pelos danos causados à saúde humana e

onde Qe são as forças de origem externa ao sistema e Qc são as forças de reação. Estas equações não podem ser utilizadas diretamente, pois as forças de

Conclui-se que o conhecimento do desenvolvimento ponderal evidenciou um padrão racial, que o perímetro torácico está altamente associado ao peso corporal e que equações de

Todo ser humano é único e, por isso, toda sala de aula é um berço de diversidade. O que os sistemas educacionais fizeram ao longo dos tempos foi homogeneizar o sistema educacional

As principais indicações para a realização foram a suspeita de tuberculose (458 pacientes) e uso de imunobiológicos (380 pacientes).. A maior prevalência de resultado positivo