3. NOSQL
• Termo utilizado pela primeira vez em 1998 (noREL)
• São diferentes sistemas de armazenamento que vieram para
suprir a necessidade em demandas onde os bancos
relacionais são ineficazes.
4. NOSQL
• Com a crescente
popularização da internet,
diversos novos dados foram
surgindo e tratá-los foi se
tornando gradualmente mais
complexo e sua manutenção
mais cara
6. NOSQL
• Tipos de bases de dados NoSQL
• Column
Inspirados pelo BigTable, da Google, suportam varias linhas e colunas, além de
permitir subcolunas.
Ex:
Accumulo, Cassandra, BigTable, HBase, Cassandra
• Document
Baseados em documentos XML ou JSON, podem ser localizados pelo seu id
único ou por qualquer registro que o documento possua.
Ex:
Lotus Notes, CouchDB, Couchbase, MongoDB, OrientDB
7. NOSQL
• Tipos de bases de dados NoSQL
• Key-value
Tipo de banco de dados mais simples, conceito de uma chave e um valor para essa chave. Mas é
o que mais suporta carga de dados e possuem também maior escalabilidade.
Ex:
Dynamo, MemcacheDB, Redis, Riak
• Graph
Com complexidade maior, esses bancos de dados guardam objetos, e não
registros como os outros tipos de NoSQL. A busca desses itens é feita pela navegação
desses objetos.
Ex:
Allegro, Neo4J, InfiniteGraph
• Multi-model
• OrientDB, FoundationDB, ArangoDB, Alchemy Database, CortexDB
8. MONGODB
• Humongous Database
• Alta performance
• Alta disponibilidade
• Schemaless
• Distribuído
• Baseada em documentos JSON
• Open-Source
9. PARA QUE USAR O
MONGODB
• Conjunto de dados diversificado, misturado
• Concorrência massiva
• Alta incerteza no dimensionamento
• Sem tolerância a downtime
• Necessidade rápido de escalonamento
• Respostas rápidas
• Grande volume de dados
• Indecisão quanto ao schema
• Necessidade de slicing
• Falta de previsão quanto ao tamanho da base
10. O QUE NÃO É O MONGODB
• Uma suíte de Análise
• Uma ferramenta de BI
• Uma ferramenta de busca
12. NO QUE O MONGODB NÃO
É MUITO BOM
• Gerenciamento de recursos de hardware
• Não é uma feature do mongoDB configurar quantidade de RAM, nº de CPUs, ou
operações de I/O para um usuário.
• Joins entre collections e transações entre
documentos
• Controlado no nível da aplicação. Um bom design do schema reduz sua necessidade.
• SQL
• O mongoDB não fala essa língua
13. DATA MODELING
• Armazena Documentos no formato
BSON
• Agrupa documentos em Collections
• Esquema flexível
14. DATA MODELING
• Estrutura do documento
• Embedded
• Modelo de dados “desnormalizado”
• Armazena dados relacionados em
um mesmo registro
• Somente uma consulta para toda
informação
• Recomendado para:
• Quando existe uma relação de “contém” entre entidades
• Quando existe uma relação de one-to-many e o lado many sempre é visualizado em conjunto com
seus documentos pais
15. DATA MODELING
• Estrutura do documento
• Referencies
• Modelo de dados normalizado
• Mais flexível que embedded
• Mais queries para buscar relações
• Recomendado para:
• Quando embedding duplicaria dados mas não proveria
vantagens no desempenho de read que justificasse seu uso
• Para representar relações de many-to-many mais complexas
• Para modelar grandes conjuntos de dados hierárquicos
16. DATA MODELING
• Atomicidade
• Garantir que qualquer transação seja “tudo ou nada”
• mongoDB somente garante atomicidade no nível de um documento
• mongoDB não implementa transação entre documentos ou collections
17. DATA MODELING
• GridFS
• Especificação para armazenar e recuperar arquivos que excedem o tamanho de um
documento (16MB)
• Divide o arquivo em pedaços (chunks) e as armazenam em documentos separados,
mantendo uma collection com meta dados dos arquivos
• Recomendações de uso
• Arquivo for maior que o tamanho de um documento
• Necessidade de acessar parte de arquivos ao invés do arquivo todo
18. CRUD OPERATIONS
• Operações de Create, Read, Update e Delete
• Cada operação afeta somente uma collection por vez
23. OPERADORES LÓGICOS
MONGO
$lt (menor que)
$lte (menor ou igual que)
$gt (maior que)
$gte (maior ou igual que)
$all (corresponder a todos os valores em um array)
$exists (verificar se um campo existe ou não)
$mod (módulo)
$ne (não igual)
24. OPERADORES LÓGICOS
MONGO
$in (corresponder a um ou mais valores em um array)
$nin (corresponder a valores zero em um array)
$or (corresponder uma consulta a outra)
$and (corresponder a todas as consultas)
$nor (não corresponder uma consulta nem outra)
$size (corresponder qualquer array com número definido de
elementos)
$type (corresponder valores com tipo de dados BSON especificado)
$not (não igual a)
25. COMANDOS MONGO
• db.collection.count()
retorna a quantidade de registros de uma coleção
• db.collection.distinct({key})
retorna uma consulta distinta contendo todos os valores da chave
informada
• db.getCollectionNames()
retorna todos os nomes das coleções
• show dbs
lista todas as bases de dados
• use <data_base>
conecta a uma base de dados
26. COMANDOS MONGO
• db
exibe o nome da base de dados a qual está conectado
• show collections
exibe todas as coleções
• db.collection.drop()
deleta uma collection
• db.dropDatabase()
deleta uma base de dados
• db.collection.selectOne()