AGENDA
• NoSQL
• MongoDB
• Mongo shell
• Data Modeling
• CRUD Operations
• Logical Operations
• Links Úteis
• Prática
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.
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
NOSQL
• Motivadores
Alta performance
Escalabilidade (Horizontal vs Vertical)
Tolerância a falha
Schemaless
Em sua maioria open-source
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
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
MONGODB
• Humongous Database
• Alta performance
• Alta disponibilidade
• Schemaless
• Distribuído
• Baseada em documentos JSON
• Open-Source
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
O QUE NÃO É O MONGODB
• Uma suíte de Análise
• Uma ferramenta de BI
• Uma ferramenta de busca
QUEM UTILIZA
• Foursquare
• GitHub
• EasyTaxi
• Globo.com
• IG.com
• bit.ly
• Locaweb
• Oi
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
DATA MODELING
• Armazena Documentos no formato
BSON
• Agrupa documentos em Collections
• Esquema flexível
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
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
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
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
CRUD OPERATIONS
• Operações de Create, Read, Update e Delete
• Cada operação afeta somente uma collection por vez
CRUD OPERATIONS
• Insert
db.collection.insert(
<document or array of
documents>,
{
writeConcern:
<document>,
ordered: <boolean>
}
)
CRUD OPERATIONS
• Update
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
CRUD OPERATIONS
• Delete
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern:
<document>
}
)
CRUD OPERATIONS
• Retrieve
db.collection.find(<crite
ria>, <projection>)
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)
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)
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
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()
JSON (JAVASCRIPT
OBJECT NOTATION)
JSON (JAVASCRIPT
OBJECT NOTATION)
INICIALIZANDO
• Processo mongod
• Pasta data
• Arquivo de configuração
MONGOSHELL
• Processo mongo
• Shell interativo JavaScript
• Autocompletion
ROBOMONGO
• Autocompletion
• Space ignore
• GUI Manipulation
VAMOS PRATICAR!
LINKS ÚTEIS
• https://www.mongodb.org
• https://docs.mongodb.org/manual/
• http://nosql-database.org
• https://bitbucket.org/edmilsonneto/minicurso-
mongodb
• http://www.json.org

Mongo db

  • 2.
    AGENDA • NoSQL • MongoDB •Mongo shell • Data Modeling • CRUD Operations • Logical Operations • Links Úteis • Prática
  • 3.
    NOSQL • Termo utilizadopela 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 acrescente popularização da internet, diversos novos dados foram surgindo e tratá-los foi se tornando gradualmente mais complexo e sua manutenção mais cara
  • 5.
    NOSQL • Motivadores Alta performance Escalabilidade(Horizontal vs Vertical) Tolerância a falha Schemaless Em sua maioria open-source
  • 6.
    NOSQL • Tipos debases 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 debases 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 USARO 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
  • 11.
    QUEM UTILIZA • Foursquare •GitHub • EasyTaxi • Globo.com • IG.com • bit.ly • Locaweb • Oi
  • 12.
    NO QUE OMONGODB 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 • ArmazenaDocumentos no formato BSON • Agrupa documentos em Collections • Esquema flexível
  • 14.
    DATA MODELING • Estruturado 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 • Estruturado 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çõesde Create, Read, Update e Delete • Cada operação afeta somente uma collection por vez
  • 19.
    CRUD OPERATIONS • Insert db.collection.insert( <documentor array of documents>, { writeConcern: <document>, ordered: <boolean> } )
  • 20.
    CRUD OPERATIONS • Update db.collection.update( <query>, <update>, { upsert:<boolean>, multi: <boolean>, writeConcern: <document> } )
  • 21.
  • 22.
  • 23.
    OPERADORES LÓGICOS MONGO $lt (menorque) $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 (correspondera 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() retornaa 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 exibeo 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()
  • 27.
  • 28.
  • 29.
    INICIALIZANDO • Processo mongod •Pasta data • Arquivo de configuração
  • 30.
    MONGOSHELL • Processo mongo •Shell interativo JavaScript • Autocompletion
  • 31.
    ROBOMONGO • Autocompletion • Spaceignore • GUI Manipulation
  • 32.
  • 33.
    LINKS ÚTEIS • https://www.mongodb.org •https://docs.mongodb.org/manual/ • http://nosql-database.org • https://bitbucket.org/edmilsonneto/minicurso- mongodb • http://www.json.org