O documento discute o que é um banco de dados noSQL, suas vantagens em relação aos bancos relacionais e os principais tipos de bancos noSQL, incluindo chave-valor, grafo, colunas e documentos. O MongoDB é destacado como um banco de dados do tipo documentos.
1. Um banco de dados noSQL
MSc.Thiago Ribeiro de Azeredo
Professor do curso de Engenharia da Computação
2. O que é um banco noSQL?
• NoSQL abrange uma grande variedade de diferentes tecnologias de banco de
dados que foram desenvolvidos em resposta a um aumento do volume de dados
armazenados sobre usuários, objetos e produtos, a frequência em que esses dados
são acessados, e desempenho de processamento e necessidades. Bancos de
dados relacionais, por outro lado, não foram projetados para lidar com os desafios
de escala e agilidade que enfrentam aplicações modernas, nem foram construídos
para tirar proveito do armazenamento barato e poder de processamento
disponível hoje.
https://www.mongodb.com/nosql-explained
3. Quais as vantagens de um banco noSQL?
• Quando comparado com bancos de dados relacionais, bancos de dados NoSQL
são mais escaláveis e proporcionam um desempenho superior.
• Seu modelo de dados aborda várias questões que o modelo relacional não é
projetado para lidar com:
• Grandes volumes de dados estruturados, semi-estruturados, não-estruturados e
• Sprints ágeis, iteração rápida e empurrões código frequentes
• Programação orientada a objetos
• Arquitetura escalável no lugar de arquitetura monolítica
https://www.mongodb.com/nosql-explained
4. Como são tão rápidos e escaláveis?
Auto-sharding!
Nativamente e automaticamente propagam dados entre um número arbitrário de
servidores, sem exigir a aplicação ao mesmo esteja ciente da composição do pool
de servidores. Dados e carga de consulta são automaticamente equilibrada entre
servidores, e quando um servidor cair, ela pode ser rápida e transparente substituído
sem interrupção do aplicativo.
https://www.mongodb.com/nosql-explained
5. Quais são os tipos de bancos noSQL?
• Chave/Valor
• Grafo
• Colunas
• Documentos
6. Chave/Valor
• São os mais simples bancos NoSQL.
• Todo item é armazenado com uma chave que o identifica
• Muito útil para desenvolvimento de aplicações na nuvem
• Exemplos: CouchDB, Oracle NoSQL Database, Dynamo, FoundationDB,
HyperDex, MemcacheDB, Redis, Riak, FairCom c-treeACE, Aerospike, OrientDB,
MUMPS, Voldemort
7. Grafo
• Armazenam de forma natural informações interligada
• Conexões em redes sociais, mapa de ruas, topologia de redes são bons exemplo
de utilização
• Exemplos: Allegro, Neo4J, InfiniteGraph, OrientDB,Virtuoso, Stardog
8. Colunas
• Otimizados para fazer consultas em grandes conjuntos de dados
• Armazena os dados em colunas ao invés de linhas
• Exemplos: Cassandra, HBase
9. Documentos
• Cada registro é uma estrutura complexa chamada de documento
• Cada documento contém um identificador único
• Cada documento pode conter uma enorme quantidade chaves e valores
• Um valor pode ser um vetor de valores
• Um valor também pode ser um outro documento
• Exemplos: Clusterpoint, Apache CouchDB, Couchbase,
DocumentDB, HyperDex, Lotus Notes, MarkLogic,
MongoDB, OrientDB, Qizx
10. Documentos
• Cada registro é uma estrutura complexa chamada de documento
• Cada documento contém um identificador único
• Cada documento pode conter uma enorme quantidade chaves e valores
• Um valor pode ser um vetor de valores
• Um valor também pode ser um outro documento
• Exemplos: Clusterpoint, Apache CouchDB, Couchbase,
DocumentDB, HyperDex, Lotus Notes, MarkLogic,
MongoDB, OrientDB, Qizx
11. MongoDB
• Do inglês humongous (gigantesco)
• Primeira versão publicada em 2009
• Quem usa?
• Cidade de Chicago
• Expedia
• Adobe
• Facebook
• MTV
• EA
• CISCO
• Verizon
• The NewYorkTimes
• eBay
• Google
• PEBBLE
12. Como funciona?
• Armazena todas as informações em formato JSON (JavaScript Object Notation)
• Pode-se fazer analogias entre:
• Coleções eTabelas
• Documentos e Linhas
14. Primeiros passos
• Shell do mongoDB aceita comandos javascript
• Não existe comando para criar um novo database. É criado automaticamente.
• Não existe comando para criar uma coleção. É criada automaticamente
• Automaticamente quando?
• Quando um documento for inserido!
• show dbs
• show collections
• use fsma
• db.alunos.insert({"nome":"Thiago",“sexo":”Masculino”})
• db.alunos.find()