SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Você tem dado
em casa?
SQL
SQL
 Structured Query Language


SELECT * FROM * WHERE 1 = 1;
SQL
Apache Derby     PostgreSQL
Caché            InterBase
DB2              Microsoft Access
Firebird         Microsoft SQL Server
HSQLDB           MySQL
SQLite           Oracle
NoSQL
Jefferson Q. Venerando
NoSQL?
NoSQL
•Usado em 1998 como o nome de um BD
relacional open source sem interface SQL;
•“Completamente distinto do modelo
relacional”;
•Deveria ser chamado NoREL;
•Voltou a ser usado em 2009 em um evento
sobre banco de dados open source
distribuídos.
NoSQL


•Vieram para suprir necessidades dos BD
tradicionais;
•Alta performance, escalabilidade, replicação,
suporte à dados estruturados e sub colunas.
Escalability?

•Escalabilidade vertical (scale up)
  •Aumentar poder do servidor.


•Escalabilidade horizontal (scale out)
  •Aumentar quantidade de servidores.
NoSQL


•Informações necessárias agrupadas no
mesmo registro;
•Sem relacionamentos =)
NoSQL

•Existem vários tipos;
•São divididos pela forma usada para trabalhar
com seus dados:
  •Wide column store
  •Key/value store
  •Graph store
  •Column oriented store
  •Document store
NoSQL
            Wide column store

•Fortemente inspirados pelo BigTable do
google, suportam várias linhas e colunas além
de subcolunas.
•Outros exemplos:
 •HBase(Apache)
 •HiperTable
 •Cassandra(Apache)
NoSQL
              Key/value store

•Mais simples, chave e valor para a chave.
•Agüenta mais carga de dados.
•São os mais escaláveis.
•Exemplos:
  •MemcacheDB
  •SimpleBD
  •Berkeley DB
NoSQL
               Graph store
•Mais complexo.
•Guarda objeto e não registros.
•Buscas são feitas pela navegação destes
objetos.
•Exemplos:
  •Neo4J
  •InfoGrid
  •BigData
NoSQL
          Column oriented store
•São relacionais.
•Tem características do NoSQL.
•Dados armazenados em colunas, não em
linhas.
•Exemplos:
  •Vertica
  •MonetDB
  •LucidDB
NoSQL
        Document oriented store

•Baseados em documentos XML ou JSON.
•Localização por ID único ou qualquer registro
do documento.
•Exemplos:
  •CouchDB(Apache)
  •MongoDB
  •Riak
Wood in the cat
Manga?
MongoDB
        Orientado a Documentos

•Modelo relacional: representa mundo real (que
é n-dimensional) usando abordagem
bidimensional.
•Podemos melhorar isso com análise, mas
posteriormente um outro atributo pode ser
encontrado.
MongoDB


•O equivalente a registros são documentos.
•Sintaxe JSON.
JASON?
JSON - JavaScript Object Notation


Jefferson = {
  nome:"Jefferson Queiroz Venerando",
  apelido:"Shaman",
  cidade:"Iturama"
}
Jefferson = {
  nome:"Jefferson Queiroz Venerando",
  apelido:"Shaman",
  cidade:"Iturama"
}

db.testedb.save(Jefferson)
Boer = {
  nome:"Marcelo Tadeu Boer",
  disciplinas: {
     {
        nome:"APS",
        semestre:{4, 5, 6}
     },
     {
        nome:"LTP",
        semestre:5
     }
  },
  faculdade:"FEF"
}

db.testedb.save(Boer)
Eae?

•Representamos objetos do mundo real da
forma como eles são: complexos e únicos. =)
•Se precisar de novos atributos, eles serão
criados apenas onde for necessário. =)


•Desenvolvedor precisa tomar cuidado pro
banco não virar a casa da mãe Joana. =(
Redundância de dados over 9000



•Modelo relacional: Reduzir o máximo possível
a redundância de dados(formas normais,
relacionamentos).
•MongoDB: Sem relacionamentos, duplicação
não é um problema.
RedunZzzZZzZz...
pessoa1 = {nome:"João", cidade:{nome:"Belo Horizonte",
estado:"MG"}}

pessoa2 = {nome:"Zequinha", cidade:{nome:"Belo Horizonte",
estado: "MG"}}

pessoa3 = {nome:"Joca", cidade:"Lagoa Santa"}

pessoa4 = {nome:"Jurema", cidade:{nome:"Rio de Janeiro",
estado:{nome:"Rio de Janeiro", pais:{nome:"Brasil"}}}
Redundância de dados over 9000


•Não há tabelas: há coleções de documentos.
•O documento é meu e eu guardo o que eu
quiser nele.

•Documentos devem ser auto-contidos.
•Uma única consulta retorna o documento
inteiro.
Então?


•Mais performance. Uma consulta retorna tudo
o que precisa a respeito do documento. =)


•Alterar todos registros relacionados a uma
unidade semântica requer tratamento um a um.
Na prática...
Database == Database
> show dbs
    admin
    bsp_development
    local
> use bsp_development
    switched to db bsp_development
> show collections
    clientes
    fornecedores
    funcionarios
    servicos
    system.indexes
Coleção == Tabela
> db.clientes
bsp_development.clientes

> db.clientes.count()
5

> db.clientes.find().forEach(function(doc) {
  print(tojson(doc));
});
Documento == Linha
{
  "_id" : ObjectId("4cee87ac271cd3146e00002a"),
  "ativo" : true,
  "nome" : "Ryu",
  "email" : "ryuhadouken@shamanime.com",
  "poder_especial" : "hadouken",
  "created_at" : "Thu Nov 25 2010 13:58:36 GMT-0200
(BRST)",
  "updated_at" : "Thu Nov 25 2010 13:58:36 GMT-0200
(BRST)",
}
Funcionalidades similares

    Consultas dinâmicas
> use teste
switched to db teste
> db.cores.insert({nome:'vermelho',   primaria:true})
> db.cores.insert({nome:'verde',      primaria:true})
> db.cores.insert({nome:'azul',       primaria:true})
> db.cores.insert({nome:'rosa',       primaria:false})
> db.cores.insert({nome:'amarelo',    primaria:false})
> db.cores.insert({nome:'laranja',    primaria:false})
> var cursor = db.cores.find()
> cursor.next()
{
  "_id" : ObjectId("4d56e8d3e0ab4d700255d829"),
  "nome" : "vermelho",
  "primaria" : true
}
> cursor
{   "_id"   :   ObjectId("4d56e8e6e0ab4d700255d82a"),   "nome"   :   "verde",     "primaria"   :   true }
{   "_id"   :   ObjectId("4d56e8ede0ab4d700255d82b"),   "nome"   :   "azul",      "primaria"   :   true }
{   "_id"   :   ObjectId("4d56e8f6e0ab4d700255d82c"),   "nome"   :   "rosa",      "primaria"   :   false }
{   "_id"   :   ObjectId("4d56e8fce0ab4d700255d82d"),   "nome"   :   "amarelo",   "primaria"   :   false }
{ "_id" : ObjectId("4d56e903e0ab4d700255d82e"), "nome" : "laranja", "primaria" : false }
SELECT * FROM cores WHERE nome = 'verde';

> db.cores.find({nome:'verde'})
{ "_id" : ObjectId("4d56e8e6e0ab4d700255d82a"), "nome" : "verde", "primaria" : true }
SELECT nome FROM cores WHERE primaria = 1;

> db.cores.find({primaria:true}, {nome:true})
{ "_id" : ObjectId("4d56e8d3e0ab4d700255d829"), "nome" : "vermelho" }
{ "_id" : ObjectId("4d56e8e6e0ab4d700255d82a"), "nome" : "verde" }
{ "_id" : ObjectId("4d56e8ede0ab4d700255d82b"), "nome" : "azul" }
> db.cores.find({nome:/l/})
{   "_id"   :   ObjectId("4d56e8d3e0ab4d700255d829"),   "nome"   :   "vermelho", "primaria" : true }
{   "_id"   :   ObjectId("4d56e8ede0ab4d700255d82b"),   "nome"   :   "azul", "primaria" : true }
{   "_id"   :   ObjectId("4d56e8fce0ab4d700255d82d"),   "nome"   :   "amarelo", "primaria" : false }
{   "_id"   :   ObjectId("4d56e903e0ab4d700255d82e"),   "nome"   :   "laranja", "primaria" : false }
> db.pessoas.insert({nome:"Boer",      idade:28})
> db.pessoas.insert({nome:"Tiago",     idade:24})
> db.pessoas.insert({nome:"Guilherme", idade:39})
SELECT * FROM pessoas WHERE idade > 24

> db.pessoas.find({idade: {$gt: 24}})
{ "_id" : ObjectId("4d594916e0ab4d700255d82f"), "nome" : "Boer", "idade" : 28 }
{ "_id" : ObjectId("4d59492ae0ab4d700255d831"), "nome" : "Guilherme", "idade" : 39 }
SELECT * FROM pessoas WHERE idade <= 24

> db.pessoas.find({idade: {$lte: 24}})
{ "_id" : ObjectId("4d59491ee0ab4d700255d830"), "nome" : "Tiago", "idade" : 24 }
$bot_add
                      $bot_kick
$bot_add_ct
                      $bot_kick x
$bot_add_tr
                      $bot_knives only
$bot_kill
                      $bot_pistols_only
$bot_difficulty   0
                      $bot_snipers_only
$bot_difficulty   2
                      $bot_all_weapons
$bot_difficulty   3
                      $bot_allow_shield x
$bot_difficulty   4
$gt
       $all
$gte
       $size
$lt
       $exists
$lte
       $type
$ne
       $elemMatch
$in
       $not
$nin
       $where
$mod
Funcionalidades similares

        Agregação
> db.cores.count()
6
> db.cores.count({primaria:true})
3
> db.cores.distinct('nome')
[ "amarelo", "azul", "laranja", "rosa", "verde", "vermelho" ]


> db.pessoas.distinct('nome', {idade:24})
[ "Tiago" ]
>   db.itens.insert({titulo:'Home',               template:'home'})
>   db.itens.insert({titulo:'O que fazemos',      template:'pagina'})
>   db.itens.insert({titulo:'Quem somos',         template:'pagina'})
>   db.itens.insert({titulo:'Trabalhe conosco',   template:'pagina'})
>   db.itens.insert({titulo:'Nossos valores',     template:'pagina'})

> var key = {template: true};
> var inicial = {count:0};
> var reduce = function(obj, prev) {prev.count += 1;};

> db.itens.group({key:key, initial:inicial, reduce:reduce})
[
  {"template" : "home",   "count" : 1},
  {"template" : "pagina", "count" : 4}
]
>   db.itens.insert({tags:   ['cachorro', 'gato']})
>   db.itens.insert({tags:   ['cachorro']})
>   db.itens.insert({tags:   ['cachorro', 'rato']})
>   db.itens.insert({tags:   ['cachorro', 'rato', 'macaco']})
>   db.itens.insert({tags:   ['cachorro', 'rato', 'macaco']})
>   db.itens.insert({tags:   ['cachorro', 'macaco']})
GROUP BY = MapReduce


> var map = function() {
    this.tags.forEach(function(t) {
      emit(t, {count: 1});
    });
  }
GROUP BY = MapReduce

> var reduce = function(key, values) {
    var count = 0;
    for(var i=0, len=values.lenght; i<len; i++) {
      count += values[i].count;
    }
    return {count: count};
  }
GROUP BY = MapReduce

> var result = db.itens.mapReduce(map, reduce);
> result
{
  "ok"          : 1,
  "timeMillis" : 86,
  "result"      : "tmp.mr.mapreduce_1273861517_683",
  "counts"      : {
    "input"     : 6,
    "emit"      : 13,
    "output"    : 4
  }
}
GROUP BY = MapReduce


>   db[result.result].find()
{   "_id" : "cachorro", "value"   :   {   "count"   :   6   }   }
{   "_id" : "gato",     "value"   :   {   "count"   :   1   }   }
{   "_id" : "macaco",   "value"   :   {   "count"   :   3   }   }
{   "_id" : "rato",     "value"   :   {   "count"   :   3   }   }
Funcionalidades similares

     Relacionamentos
Relacionamentos

 Um para Muitos
1. Normalizado
// inserir post
> db.posts.insert({titulo:'Analise e Projeto de Sistemas'});
> var post = db.posts.findOne({titulo:'Analise e Projeto de
Sistemas'});

// inserir comentario
> db.comentarios.insert({
  nome:'Jefferson',
  corpo:'Awo Boer, eu nao tenho mais APS!',
  post_id : post._id
});
> var comentario = db.comentarios.findOne({nome:'Jefferson'});
SELECT * FROM comentarios WHERE post_id = {#post.id}

> db.comentarios.find({post_id: post._id})
{
  "_id" : ObjectId("4d5955f1e0ab4d700255d83e"),
  "nome" : "Jefferson",
  "corpo" : "Awo Boer, eu nao tenho mais APS!",
  "post_id" : ObjectId("4d5955a5e0ab4d700255d83d")
}
SELECT * FROM posts WHERE id = {#comentario.id}

> db.posts.find({_id: comentario.post_id})
{
  "_id" : ObjectId("4d5955a5e0ab4d700255d83d"),
  "titulo" : "Analise e Projeto de Sistemas"
}
2. Embedded
// inserir post E comentarios
> db.posts.insert({
   titulo: 'Analise e Projeto de Sistemas',
   comentarios: [
     nome: 'Jefferson', corpo: 'Haha, passei!'},
     nome: 'Diego', corpo: 'Da meio ponto ai, Boer!'}
   ]
})
> var post = db.posts.find({titulo:'Analise e Projeto de Sistemas'});
> post
{
  "_id" : ObjectId("4d5957e7e0ab4d700255d83f"),
  "titulo" : "Analise e Projeto de Sistemas",
  "comentarios" : [
    {"nome" : "Jefferson", "corpo" : "Haha, passei!"},
    {"nome" : "Diego","corpo" : "Da meio ponto ai,
Boer!"}
  ]
}
> db.posts.find({'comentarios.nome':'Diego'})
> db.posts.find({
   comentarios: {
     $elemMatch: {nome:'Diego'}
   }
})
// inserir posts, comentários e respostas
> db.posts.insert({
   titulo:'APS',
   comentarios: [
     {
       nome:'Jefferson',
       corpo:'Awo Boer, nao tenho mais APS!',
       comentarios: [
         {nome:'Diego', corpo:'Vou ficar de exame :('},
         {nome:'Boer', corpo:'Seus safadões!'}
       ]
     }
   ]
})
> db.posts.insert({
   titulo: 'MongoDB',
   tags : ['mongodb', 'databases']
})
> db.posts.ensureIndex({tags:1})
Relacionamentos

Muitos para Muitos
> db.sites.insert({dominio: 'shamanime.com'})
> db.sites.insert({dominio: 'fef.br'})
> db.sites.find()
{
  "_id" : ObjectId("4d595b58e0ab4d700255d841"),
  "dominio" : "shamanime.com"
}
{
  "_id" : ObjectId("4d595b62e0ab4d700255d842"),
  "dominio" : "fef.br"
}
> db.usuarios.insert({
   nome: 'Jefferson',
   autorizacoes: [
     ObjectId('4d595b58e0ab4d700255d841'),
     ObjectId('4d595b62e0ab4d700255d842')
   ]
})

> db.usuarios.insert({
   nome: 'Frederico',
   autorizacoes: [
     ObjectId('4d595b62e0ab4d700255d842')
   ]
})
> var fef = db.sites.findOne({dominio:'fef.br'})
> db.usuarios.find({autorizacoes:fef._id})
// Jefferson e Frederico

> var shamanime = db.sites.findOne({dominio:'shamanime.com'})
> db.usuarios.find({autorizacoes:shamanime._id})
// Jefferson
> var jefferson = db.usuarios.findOne({nome:'Jefferson'})
> db.sites.find({_id:{$in: jefferson.autorizacoes}})
// shamanime.com e fef.br
Check list:

•SQL
•NoSQL
•Escalabilidade
•MongoDB: Insert, consultas,
agregação, relacionamentos
•MongoDB: Update, delete, etc
Teste você mesmo:

http://try.mongodb.org/
{
                  nome:       'Jefferson Venerando',
                  site:       'shamanime.com'
                  twitter:    '@shamanime'
                  forum:      'bsrf.shamanime.com'
              }

7º semestre
Sistemas de Informação - Fundação Educacional de Fernandópolis

Weitere ähnliche Inhalte

Was ist angesagt?

MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberChristiano Anderson
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBElaine Naomi
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento Marcos Thomaz
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBThiago Avelino
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDBLelyBarros
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 
Elasticsearch como gerenciar seus logs com logstash e kibana
Elasticsearch   como gerenciar seus logs com logstash e kibanaElasticsearch   como gerenciar seus logs com logstash e kibana
Elasticsearch como gerenciar seus logs com logstash e kibanaLuiz Henrique Zambom Santana
 
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...ISCTE-IUL ACM Student Chapter
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Fernando Boaglio
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
MongoDB com a Turma do Chaves
MongoDB com a Turma do ChavesMongoDB com a Turma do Chaves
MongoDB com a Turma do ChavesPedro Menezes
 
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...Luiz Henrique Zambom Santana
 

Was ist angesagt? (20)

Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
#5 CRUD no MongoDB
#5   CRUD  no MongoDB#5   CRUD  no MongoDB
#5 CRUD no MongoDB
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDB
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDB
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
2011 01-18 mongo-db
2011 01-18 mongo-db2011 01-18 mongo-db
2011 01-18 mongo-db
 
NoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETECNoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETEC
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
#3 Instalação MongoDB
#3   Instalação MongoDB  #3   Instalação MongoDB
#3 Instalação MongoDB
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
Elasticsearch como gerenciar seus logs com logstash e kibana
Elasticsearch   como gerenciar seus logs com logstash e kibanaElasticsearch   como gerenciar seus logs com logstash e kibana
Elasticsearch como gerenciar seus logs com logstash e kibana
 
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Mongopesl
MongopeslMongopesl
Mongopesl
 
MongoDB com a Turma do Chaves
MongoDB com a Turma do ChavesMongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
 
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
 

Andere mochten auch

Deploying And Monitoring Rails
Deploying And Monitoring RailsDeploying And Monitoring Rails
Deploying And Monitoring RailsJonathan Weiss
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
MongoDB: introdução à sua próxima base de dados
MongoDB:  introdução à sua próxima base de dadosMongoDB:  introdução à sua próxima base de dados
MongoDB: introdução à sua próxima base de dadosJordan Kobellarz
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Christiano Anderson
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbfabio perrella
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLpichiliani
 
Desmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de DadosDesmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de DadosFabíola Fernandes
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaGlaucio Scheibel
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBRodrigo Hjort
 
NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?Nico Steppat
 

Andere mochten auch (16)

Deploying And Monitoring Rails
Deploying And Monitoring RailsDeploying And Monitoring Rails
Deploying And Monitoring Rails
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
MongoDB: introdução à sua próxima base de dados
MongoDB:  introdução à sua próxima base de dadosMongoDB:  introdução à sua próxima base de dados
MongoDB: introdução à sua próxima base de dados
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
Palestra MongoDB
Palestra MongoDBPalestra MongoDB
Palestra MongoDB
 
Introdução ao NoSql
Introdução ao NoSqlIntrodução ao NoSql
Introdução ao NoSql
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodb
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
 
Desmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de DadosDesmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de Dados
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência Poliglota
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDB
 
NOSQL
NOSQLNOSQL
NOSQL
 
NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?
 

Ähnlich wie SQL e NoSQL: Uma introdução

MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoJulio Monteiro
 
Introdução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesIntrodução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesDerek Willian Stavis
 
MongoDB - Wagner Bonfiglio - Navegg
MongoDB - Wagner Bonfiglio - NaveggMongoDB - Wagner Bonfiglio - Navegg
MongoDB - Wagner Bonfiglio - NaveggFelipe Guimarães
 
MongoDB - Workshop Buscapé
MongoDB - Workshop BuscapéMongoDB - Workshop Buscapé
MongoDB - Workshop BuscapéWagner Bonfiglio
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
MySQL + JSON da casamento sim!
MySQL + JSON da casamento sim!MySQL + JSON da casamento sim!
MySQL + JSON da casamento sim!Diego Hellas
 
Persistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomPersistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomNelson Glauber Leal
 
Spring Data com MongoDB
Spring Data com MongoDBSpring Data com MongoDB
Spring Data com MongoDBFabiano Modos
 
Desenvolvendo com mongodb
Desenvolvendo com mongodbDesenvolvendo com mongodb
Desenvolvendo com mongodbThiago Avelino
 
LaravelSP - MySQL 5.7: introdução ao JSON Data Type
LaravelSP - MySQL 5.7: introdução ao JSON Data TypeLaravelSP - MySQL 5.7: introdução ao JSON Data Type
LaravelSP - MySQL 5.7: introdução ao JSON Data TypeGabriela Ferrara
 
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...Big Data Week São Paulo
 
Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Junior Fernandes
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOWesley Lemos
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e MongodbAline Ferreira
 

Ähnlich wie SQL e NoSQL: Uma introdução (20)

MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documento
 
Introdução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesIntrodução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slides
 
Minicurso mongo db
Minicurso mongo dbMinicurso mongo db
Minicurso mongo db
 
MongoDB
MongoDBMongoDB
MongoDB
 
Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 
MongoDB - Wagner Bonfiglio - Navegg
MongoDB - Wagner Bonfiglio - NaveggMongoDB - Wagner Bonfiglio - Navegg
MongoDB - Wagner Bonfiglio - Navegg
 
MongoDB - Workshop Buscapé
MongoDB - Workshop BuscapéMongoDB - Workshop Buscapé
MongoDB - Workshop Buscapé
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
MySQL + JSON da casamento sim!
MySQL + JSON da casamento sim!MySQL + JSON da casamento sim!
MySQL + JSON da casamento sim!
 
Persistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomPersistência de Dados no SQLite com Room
Persistência de Dados no SQLite com Room
 
Spring Data com MongoDB
Spring Data com MongoDBSpring Data com MongoDB
Spring Data com MongoDB
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Desenvolvendo com mongodb
Desenvolvendo com mongodbDesenvolvendo com mongodb
Desenvolvendo com mongodb
 
LaravelSP - MySQL 5.7: introdução ao JSON Data Type
LaravelSP - MySQL 5.7: introdução ao JSON Data TypeLaravelSP - MySQL 5.7: introdução ao JSON Data Type
LaravelSP - MySQL 5.7: introdução ao JSON Data Type
 
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
 
Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)
 
Aprendendo R
Aprendendo RAprendendo R
Aprendendo R
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e Mongodb
 

SQL e NoSQL: Uma introdução

  • 2.
  • 3. SQL
  • 4. SQL Structured Query Language SELECT * FROM * WHERE 1 = 1;
  • 5. SQL Apache Derby PostgreSQL Caché InterBase DB2 Microsoft Access Firebird Microsoft SQL Server HSQLDB MySQL SQLite Oracle
  • 7.
  • 9. NoSQL •Usado em 1998 como o nome de um BD relacional open source sem interface SQL; •“Completamente distinto do modelo relacional”; •Deveria ser chamado NoREL; •Voltou a ser usado em 2009 em um evento sobre banco de dados open source distribuídos.
  • 10. NoSQL •Vieram para suprir necessidades dos BD tradicionais; •Alta performance, escalabilidade, replicação, suporte à dados estruturados e sub colunas.
  • 11. Escalability? •Escalabilidade vertical (scale up) •Aumentar poder do servidor. •Escalabilidade horizontal (scale out) •Aumentar quantidade de servidores.
  • 12. NoSQL •Informações necessárias agrupadas no mesmo registro; •Sem relacionamentos =)
  • 13. NoSQL •Existem vários tipos; •São divididos pela forma usada para trabalhar com seus dados: •Wide column store •Key/value store •Graph store •Column oriented store •Document store
  • 14. NoSQL Wide column store •Fortemente inspirados pelo BigTable do google, suportam várias linhas e colunas além de subcolunas. •Outros exemplos: •HBase(Apache) •HiperTable •Cassandra(Apache)
  • 15. NoSQL Key/value store •Mais simples, chave e valor para a chave. •Agüenta mais carga de dados. •São os mais escaláveis. •Exemplos: •MemcacheDB •SimpleBD •Berkeley DB
  • 16. NoSQL Graph store •Mais complexo. •Guarda objeto e não registros. •Buscas são feitas pela navegação destes objetos. •Exemplos: •Neo4J •InfoGrid •BigData
  • 17. NoSQL Column oriented store •São relacionais. •Tem características do NoSQL. •Dados armazenados em colunas, não em linhas. •Exemplos: •Vertica •MonetDB •LucidDB
  • 18. NoSQL Document oriented store •Baseados em documentos XML ou JSON. •Localização por ID único ou qualquer registro do documento. •Exemplos: •CouchDB(Apache) •MongoDB •Riak
  • 19. Wood in the cat
  • 21. MongoDB Orientado a Documentos •Modelo relacional: representa mundo real (que é n-dimensional) usando abordagem bidimensional. •Podemos melhorar isso com análise, mas posteriormente um outro atributo pode ser encontrado.
  • 22. MongoDB •O equivalente a registros são documentos. •Sintaxe JSON.
  • 24. JSON - JavaScript Object Notation Jefferson = { nome:"Jefferson Queiroz Venerando", apelido:"Shaman", cidade:"Iturama" }
  • 25. Jefferson = { nome:"Jefferson Queiroz Venerando", apelido:"Shaman", cidade:"Iturama" } db.testedb.save(Jefferson)
  • 26. Boer = { nome:"Marcelo Tadeu Boer", disciplinas: { { nome:"APS", semestre:{4, 5, 6} }, { nome:"LTP", semestre:5 } }, faculdade:"FEF" } db.testedb.save(Boer)
  • 27. Eae? •Representamos objetos do mundo real da forma como eles são: complexos e únicos. =) •Se precisar de novos atributos, eles serão criados apenas onde for necessário. =) •Desenvolvedor precisa tomar cuidado pro banco não virar a casa da mãe Joana. =(
  • 28. Redundância de dados over 9000 •Modelo relacional: Reduzir o máximo possível a redundância de dados(formas normais, relacionamentos). •MongoDB: Sem relacionamentos, duplicação não é um problema.
  • 29. RedunZzzZZzZz... pessoa1 = {nome:"João", cidade:{nome:"Belo Horizonte", estado:"MG"}} pessoa2 = {nome:"Zequinha", cidade:{nome:"Belo Horizonte", estado: "MG"}} pessoa3 = {nome:"Joca", cidade:"Lagoa Santa"} pessoa4 = {nome:"Jurema", cidade:{nome:"Rio de Janeiro", estado:{nome:"Rio de Janeiro", pais:{nome:"Brasil"}}}
  • 30. Redundância de dados over 9000 •Não há tabelas: há coleções de documentos. •O documento é meu e eu guardo o que eu quiser nele. •Documentos devem ser auto-contidos. •Uma única consulta retorna o documento inteiro.
  • 31. Então? •Mais performance. Uma consulta retorna tudo o que precisa a respeito do documento. =) •Alterar todos registros relacionados a uma unidade semântica requer tratamento um a um.
  • 34. > show dbs admin bsp_development local > use bsp_development switched to db bsp_development > show collections clientes fornecedores funcionarios servicos system.indexes
  • 36. > db.clientes bsp_development.clientes > db.clientes.count() 5 > db.clientes.find().forEach(function(doc) { print(tojson(doc)); });
  • 38. { "_id" : ObjectId("4cee87ac271cd3146e00002a"), "ativo" : true, "nome" : "Ryu", "email" : "ryuhadouken@shamanime.com", "poder_especial" : "hadouken", "created_at" : "Thu Nov 25 2010 13:58:36 GMT-0200 (BRST)", "updated_at" : "Thu Nov 25 2010 13:58:36 GMT-0200 (BRST)", }
  • 39.
  • 40. Funcionalidades similares Consultas dinâmicas
  • 41. > use teste switched to db teste > db.cores.insert({nome:'vermelho', primaria:true}) > db.cores.insert({nome:'verde', primaria:true}) > db.cores.insert({nome:'azul', primaria:true}) > db.cores.insert({nome:'rosa', primaria:false}) > db.cores.insert({nome:'amarelo', primaria:false}) > db.cores.insert({nome:'laranja', primaria:false})
  • 42. > var cursor = db.cores.find() > cursor.next() { "_id" : ObjectId("4d56e8d3e0ab4d700255d829"), "nome" : "vermelho", "primaria" : true }
  • 43. > cursor { "_id" : ObjectId("4d56e8e6e0ab4d700255d82a"), "nome" : "verde", "primaria" : true } { "_id" : ObjectId("4d56e8ede0ab4d700255d82b"), "nome" : "azul", "primaria" : true } { "_id" : ObjectId("4d56e8f6e0ab4d700255d82c"), "nome" : "rosa", "primaria" : false } { "_id" : ObjectId("4d56e8fce0ab4d700255d82d"), "nome" : "amarelo", "primaria" : false } { "_id" : ObjectId("4d56e903e0ab4d700255d82e"), "nome" : "laranja", "primaria" : false }
  • 44. SELECT * FROM cores WHERE nome = 'verde'; > db.cores.find({nome:'verde'}) { "_id" : ObjectId("4d56e8e6e0ab4d700255d82a"), "nome" : "verde", "primaria" : true }
  • 45. SELECT nome FROM cores WHERE primaria = 1; > db.cores.find({primaria:true}, {nome:true}) { "_id" : ObjectId("4d56e8d3e0ab4d700255d829"), "nome" : "vermelho" } { "_id" : ObjectId("4d56e8e6e0ab4d700255d82a"), "nome" : "verde" } { "_id" : ObjectId("4d56e8ede0ab4d700255d82b"), "nome" : "azul" }
  • 46. > db.cores.find({nome:/l/}) { "_id" : ObjectId("4d56e8d3e0ab4d700255d829"), "nome" : "vermelho", "primaria" : true } { "_id" : ObjectId("4d56e8ede0ab4d700255d82b"), "nome" : "azul", "primaria" : true } { "_id" : ObjectId("4d56e8fce0ab4d700255d82d"), "nome" : "amarelo", "primaria" : false } { "_id" : ObjectId("4d56e903e0ab4d700255d82e"), "nome" : "laranja", "primaria" : false }
  • 47. > db.pessoas.insert({nome:"Boer", idade:28}) > db.pessoas.insert({nome:"Tiago", idade:24}) > db.pessoas.insert({nome:"Guilherme", idade:39})
  • 48. SELECT * FROM pessoas WHERE idade > 24 > db.pessoas.find({idade: {$gt: 24}}) { "_id" : ObjectId("4d594916e0ab4d700255d82f"), "nome" : "Boer", "idade" : 28 } { "_id" : ObjectId("4d59492ae0ab4d700255d831"), "nome" : "Guilherme", "idade" : 39 }
  • 49. SELECT * FROM pessoas WHERE idade <= 24 > db.pessoas.find({idade: {$lte: 24}}) { "_id" : ObjectId("4d59491ee0ab4d700255d830"), "nome" : "Tiago", "idade" : 24 }
  • 50. $bot_add $bot_kick $bot_add_ct $bot_kick x $bot_add_tr $bot_knives only $bot_kill $bot_pistols_only $bot_difficulty 0 $bot_snipers_only $bot_difficulty 2 $bot_all_weapons $bot_difficulty 3 $bot_allow_shield x $bot_difficulty 4
  • 51. $gt $all $gte $size $lt $exists $lte $type $ne $elemMatch $in $not $nin $where $mod
  • 54. > db.cores.distinct('nome') [ "amarelo", "azul", "laranja", "rosa", "verde", "vermelho" ] > db.pessoas.distinct('nome', {idade:24}) [ "Tiago" ]
  • 55. > db.itens.insert({titulo:'Home', template:'home'}) > db.itens.insert({titulo:'O que fazemos', template:'pagina'}) > db.itens.insert({titulo:'Quem somos', template:'pagina'}) > db.itens.insert({titulo:'Trabalhe conosco', template:'pagina'}) > db.itens.insert({titulo:'Nossos valores', template:'pagina'}) > var key = {template: true}; > var inicial = {count:0}; > var reduce = function(obj, prev) {prev.count += 1;}; > db.itens.group({key:key, initial:inicial, reduce:reduce}) [ {"template" : "home", "count" : 1}, {"template" : "pagina", "count" : 4} ]
  • 56. > db.itens.insert({tags: ['cachorro', 'gato']}) > db.itens.insert({tags: ['cachorro']}) > db.itens.insert({tags: ['cachorro', 'rato']}) > db.itens.insert({tags: ['cachorro', 'rato', 'macaco']}) > db.itens.insert({tags: ['cachorro', 'rato', 'macaco']}) > db.itens.insert({tags: ['cachorro', 'macaco']})
  • 57. GROUP BY = MapReduce > var map = function() { this.tags.forEach(function(t) { emit(t, {count: 1}); }); }
  • 58. GROUP BY = MapReduce > var reduce = function(key, values) { var count = 0; for(var i=0, len=values.lenght; i<len; i++) { count += values[i].count; } return {count: count}; }
  • 59. GROUP BY = MapReduce > var result = db.itens.mapReduce(map, reduce); > result { "ok" : 1, "timeMillis" : 86, "result" : "tmp.mr.mapreduce_1273861517_683", "counts" : { "input" : 6, "emit" : 13, "output" : 4 } }
  • 60. GROUP BY = MapReduce > db[result.result].find() { "_id" : "cachorro", "value" : { "count" : 6 } } { "_id" : "gato", "value" : { "count" : 1 } } { "_id" : "macaco", "value" : { "count" : 3 } } { "_id" : "rato", "value" : { "count" : 3 } }
  • 61. Funcionalidades similares Relacionamentos
  • 64. // inserir post > db.posts.insert({titulo:'Analise e Projeto de Sistemas'}); > var post = db.posts.findOne({titulo:'Analise e Projeto de Sistemas'}); // inserir comentario > db.comentarios.insert({ nome:'Jefferson', corpo:'Awo Boer, eu nao tenho mais APS!', post_id : post._id }); > var comentario = db.comentarios.findOne({nome:'Jefferson'});
  • 65. SELECT * FROM comentarios WHERE post_id = {#post.id} > db.comentarios.find({post_id: post._id}) { "_id" : ObjectId("4d5955f1e0ab4d700255d83e"), "nome" : "Jefferson", "corpo" : "Awo Boer, eu nao tenho mais APS!", "post_id" : ObjectId("4d5955a5e0ab4d700255d83d") }
  • 66. SELECT * FROM posts WHERE id = {#comentario.id} > db.posts.find({_id: comentario.post_id}) { "_id" : ObjectId("4d5955a5e0ab4d700255d83d"), "titulo" : "Analise e Projeto de Sistemas" }
  • 68. // inserir post E comentarios > db.posts.insert({ titulo: 'Analise e Projeto de Sistemas', comentarios: [ nome: 'Jefferson', corpo: 'Haha, passei!'}, nome: 'Diego', corpo: 'Da meio ponto ai, Boer!'} ] })
  • 69. > var post = db.posts.find({titulo:'Analise e Projeto de Sistemas'}); > post { "_id" : ObjectId("4d5957e7e0ab4d700255d83f"), "titulo" : "Analise e Projeto de Sistemas", "comentarios" : [ {"nome" : "Jefferson", "corpo" : "Haha, passei!"}, {"nome" : "Diego","corpo" : "Da meio ponto ai, Boer!"} ] }
  • 70. > db.posts.find({'comentarios.nome':'Diego'}) > db.posts.find({ comentarios: { $elemMatch: {nome:'Diego'} } })
  • 71. // inserir posts, comentários e respostas > db.posts.insert({ titulo:'APS', comentarios: [ { nome:'Jefferson', corpo:'Awo Boer, nao tenho mais APS!', comentarios: [ {nome:'Diego', corpo:'Vou ficar de exame :('}, {nome:'Boer', corpo:'Seus safadões!'} ] } ] })
  • 72. > db.posts.insert({ titulo: 'MongoDB', tags : ['mongodb', 'databases'] }) > db.posts.ensureIndex({tags:1})
  • 74. > db.sites.insert({dominio: 'shamanime.com'}) > db.sites.insert({dominio: 'fef.br'}) > db.sites.find() { "_id" : ObjectId("4d595b58e0ab4d700255d841"), "dominio" : "shamanime.com" } { "_id" : ObjectId("4d595b62e0ab4d700255d842"), "dominio" : "fef.br" }
  • 75. > db.usuarios.insert({ nome: 'Jefferson', autorizacoes: [ ObjectId('4d595b58e0ab4d700255d841'), ObjectId('4d595b62e0ab4d700255d842') ] }) > db.usuarios.insert({ nome: 'Frederico', autorizacoes: [ ObjectId('4d595b62e0ab4d700255d842') ] })
  • 76. > var fef = db.sites.findOne({dominio:'fef.br'}) > db.usuarios.find({autorizacoes:fef._id}) // Jefferson e Frederico > var shamanime = db.sites.findOne({dominio:'shamanime.com'}) > db.usuarios.find({autorizacoes:shamanime._id}) // Jefferson
  • 77. > var jefferson = db.usuarios.findOne({nome:'Jefferson'}) > db.sites.find({_id:{$in: jefferson.autorizacoes}}) // shamanime.com e fef.br
  • 78. Check list: •SQL •NoSQL •Escalabilidade •MongoDB: Insert, consultas, agregação, relacionamentos •MongoDB: Update, delete, etc
  • 80.
  • 81. { nome: 'Jefferson Venerando', site: 'shamanime.com' twitter: '@shamanime' forum: 'bsrf.shamanime.com' } 7º semestre Sistemas de Informação - Fundação Educacional de Fernandópolis

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. Ultimo: Lista todos clientes em formato JSON.\n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n