FATEC NOSQL Mongo DB No SQL Not Only
FATEC NOSQL - Mongo. DB
No. SQL - Not Only SQL No. SQL é o nome dado aos bancos de dados que não se baseiam no conhecido modelo relacional. Ou seja, os bancos No. SQL não usam tabelas com colunas e linhas para armazenar os dados. Ao invés disso, eles implementam diferentes modelos. Entretanto, ao analisarmos seus fundamentos, compreendemos algumas de suas limitações básicas no que diz respeito à modelagem de dados, que tem como consequência direta os problemas de escalabilidade.
No. SQL - Not Only SQL Motivações para esta abordagem incluem: � � � simplicidade de projeto, escalonamento "horizontal" mais simples para clusters de máquinas (o que é um problema para bancos de dados relacionais) e controle mais refinado sobre a disponibilidade. As estruturas de dados usadas pelos bancos de dados No. SQL (e. g. , chavevalor, coluna larga, grafo ou documento) são diferentes daquelas usadas por padrão em bancos de dados relacionais, tornando algumas operações mais rápidas em No. SQL. A adequação particular de um determinado banco de dados No. SQL depende do problema que ele deve resolver. Algumas vezes as estruturas de dados usadas por bancos de dados No. SQL também são vistas como "mais flexíveis" que tabelas de bancos de dados relacionais. Muitos armazenamentos No. SQL comprometem a consistência em favor da disponibilidade, tolerância a partição e velocidade. � � Barreiras para a grande adoção de armazenamentos No. SQL incluem o uso de linguagens de consulta de baixo nível falta de interfaces padronizadas e grandes investimentos anteriores em bancos de dados relacionais existentes.
No. SQL - Not Only SQL Modernas bases de dados relacionais parecem ter uma limitação a transações com grandes volumes de dados e cargas de trabalhos típicas de operações modernas de grande carga, incluindo o dimensionamento de conjuntos de dados. Sistemas No. SQL frequentemente fornecem garantias de consistência fraca, como consistência posterior e operações restritas a itens individuais de dados, apesar de que uma faixa possa impor garantias ACID, adicionando uma camada de middleware complementares.
Quais são as deficiências do Modelo Relacional? Para melhor compreensão e contextualização das exigências comerciais e tecnológicas envolvidas com o processo de armazenamento de informações, serão elencados e apresentados a seguir os principais fatores presentes em um ambiente relacional, responsáveis por motivar a elaboração de uma nova proposta de trabalho: � Solicitação de Mudança: Modelos de dados relacionais, independente de sua maturidade e consistência, não estão totalmente aderentes às novas metodologias e processos de desenvolvimento de software, as quais estão inseridas em um contexto de evolução constante e condicionadas a acomodar mudanças durante o ciclo de desenvolvimento de um novo produto ou manutenção evolutiva;
Quais são as deficiências do Modelo Relacional? Custo de Escalabilidade: A escalabilidade em um banco de dados relacional pode ocorrer de duas formas: horizontal e vertical. A forma horizontal ocorre pela utilização de mais equipamentos e particiona a estrutura de dados de acordo com critérios estabelecidos. A forma vertical ocorre pelo aumento da capacidade do equipamento em que o sistema gerenciador de banco de dados está instalado. Bases de dados No. SQL têm como um de seus motivadores o baixo custo para realizar uma escalabilidade horizontal, o que torna possível o uso de equipamentos mais acessíveis. Além disso, proporciona um modelo de particionamento nativo (Sharding); O paradigma OO, a Fragmentação e o Alto Custo do Join: Ao longo de toda a história, desde a sua concepção, os modelos relacionais sofreram mudanças relativamente pequenas para acomodar exigências oriundas de requisitos de negócio. Paralelamente, a programação sofreu grandes mudanças, desde a programação estruturada, a programação orientada a objetos e a programação orientada a aspectos.
Armazenamento de Documento O conceito central de um armazenamento de documento está na noção de um "documento". Apesar de cada implementação de banco de dados orientado a documentos diferir-se nos detalhes desta definição, em geral, todas elas admitem que os documentos encapsulam e codificam dados (ou informação) em alguns formatos ou codificações padrões. Codificações em uso incluem XML, YAML e JSON bem como formas binárias como BSON. Documentos são endereçados no banco de dados por meio de uma chave única que representa aquele documento. Uma das outras características de definição de um banco de dados orientado a documentos é que além da consulta de chave realizada por uma armazenamento chave-valor, o banco de dados também oferece uma API ou linguagem de consulta que recupera os documentos baseado em seus conteúdos.
Armazenamento de Documento Implementações diferentes oferecem modos diferentes de organizar e/ou agrupar documentos: Coleções � Etiquetas (tags) � Metadados não-visíveis � Hierarquias de diretório � Comparados com bancos de dados relacionais, por exemplo, coleções podem ser consideradas análogas a tabelas e documentos análogos a registros. Porem eles são diferentes: cada registro em uma tabela possui a mesma sequência de campos, enquanto que documentos em uma coleção podem ter campos que são completamente diferentes.
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 (Map. Reduce) e também permitir redundância e inconsistência.
Banco de Dados Orientado a Documentos Existem diversos Banco de Dados No. SQL hoje, os mais conhecidos são: Mongo. DB, Dynamo. DB, Azure Table Storage, Berkeley DB, Hadoop, Cassandra, Hypertable, Amazon Simple. DB, Couch. DB, Raven. DB, Neo 4 J, Infinite Graph, Infor. Grid, etc.
Mongo. DB O Mongo. DB é atualmente um dos principais bancos No. SQL do mercado. Ele implementa o modelo orientado a documentos e armazena os dados no formato JSON. Ou seja, toda informação é gravada como um documento JSON dentro de uma coleção. Comparando com o modelo relacional, podemos considerar as coleções equivalentes às tabelas e os documentos equivalentes às linhas. Já as propriedades de cada documento são comparáveis às colunas da tabela, que definem as características de cada registro.
Mongo. DB Este Banco de Dados tem como característica ser código-fonte aberto licenciado pela GNU AGPL (Affero General Public License) versão 3. 0, possuir alta performance, não possuir esquemas, ser escrito em C++, multiplataforma e ser formado por um conjunto de aplicativos JSON. Apesar do projeto Mongo. DB ter iniciado em 2007 o Banco de Dados somente foi concluído em 2009 lançando assim a primeira versão do Mongo. DB. Diversas linguagens e plataforma já possuem drivers para o Mongo. DB, entre elas destacam-se: C, C#, C++, Haskell, Java. Script, Perl, PHP, Python, Ruby e Scala. Além disso, o Mongo. DB possui binários para diversas plataformas como Windows, Mac OS X, Linux e Solaris.
Instalando o Mongo. DB Para instalar o Mongo. DB devemos primeiramente baixa-lo, escolhendo uma versão de sistema operacional. � https: //www. mongodb. com/try Agora já podemos descompactar o zip para alguma pasta. Após isso devemos ir até a pasta onde descompactamos o Mongo. DB e ir na pasta “bin”. Por fim executamos o “mongod. exe”. Agora já podemos executar o cliente de Shell do Mongo. DB. O aplicativo de Shell do Mongo. DB está incluído junto com a distribuição sendo localizado na pasta “bin”. No Windows, está na forma do aplicativo mongo. exe.
Instalando o Mongo. DB Para criar um documento e armazená-lo em uma nova coleção chamada "colors" podemos usar o comando abaixo no Shell: � db. colors. save({name: "red", value: "FF 0000"}); Para verificar se o documento foi armazenado no banco de dados executamos o comando abaixo no Shell: � db. colors. find();
Instalando o Mongo. DB Visto que o Shell do Mongo. DB usa Java. Script, é possível escrever construções regulares em Java. Script ao interagir com os bancos de dados. Este loop criará 26 documentos, um para cada letra minúscula do alfabeto, cada documento contendo o caractere em si e seu código de caractere ASCII.
Utilizando Mongo. DB O Mongo. DB utiliza a sintaxe JSON que retém os dados usando pares de chave/valor. Segue na Listagem 2 um exemplo criação de um esquema: db. usuarios. insert( { nome: “Norton Glaser", cidade: “São Paulo", estado: “SP" } )
Utilizando Mongo. DB O Mongo. DB também permite a exclusão dos dados que é feito através do comando abaixo: � db. usuarios. remove( Catarina" } ) { estado: “Santa Ou para apagar tudo � db. usuarios. remove()
Utilizando Mongo. DB Para atualização de dados com SQL temos o código: db. usuarios. update( { cidade: { $eq: “Campinas" } }, $set: { estado: “SP"} }, { multi: true } )
Utilizando Mongo. DB Outro comando muito utilizado é para fazer consultas. O Mongo. DB possui uma poderosa linguagem de consulta baseada em documentos, que torna a transição de um banco de dados relacional para o Mongo. DB bastante fácil, pois as consultas são convertidas com bastante facilidade: db. usuarios. find( { estado: { $eq: “SP" } } )
Utilizando Mongo. DB também poderíamos ter comparações numéricas, conforme exemplo abaixo: db. usuarios. find( { idade: { $gt: 25, $lte: 50 } } ) Também poderíamos ter o operador "like", que é muito utilizado como mostra a consulta a seguir: db. usuarios. find( { nome: /^Maria/ } )
Utilizando Mongo. DB Outra operação muito comum é a ordenação ascendente e descendente em SQL conforme exemplificado abaixo: � db. usuarios. find({cidade : “Campinas"}). sort({nome: 1}) Ou Decrescente � db. usuarios. find({cidade : “Campinas"}). sort({nome: -1})
- Slides: 21