SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Indexando e
Ordenando
Data Sets
Como criar índices e ordenar
dados usando os data stores
MongoDB, CouchDB e
Apache Cassandra
Tópicos Abordados
Conceitos iniciais:
●

Breve revisão das estruturas de dados
utilizadas na construção de índices.

Indexando no MongoDB:
Criando e usando Índices no MongoDB
● Chaves compostas e embutidas
● Índices únicos e esparsos
● Busca baseada em palavras-chaves e
multi-chaves
●
Tópicos Abordados
Indexando no CouchDB:
●

Como as views são utilizadas na
construção automática de índices.

Indexando no Cassandra:
Definindo índices para as colunas
● Busca chave-valor
●
Conceitos Iniciais

Breve revisão das
estruturas de dados
utilizadas na
construção de índices
Conceitos Iniciais
Buscas lineares são impraticáveis!
Índices permitem:
buscas eficientes
● ordenação dos dados
●

Blocos de construção:
Árvores B e B+
● Tabelas Hash
●
Indexando no
MongoDB

Explorando a criação
e manipulação de
índices com o
MongoDB
Indexando no MongoDB
Plano de execução:
cursor: tipo de cursor. Pode ser Basic
ou B-tree.
● nscanned: número de entradas
visitadas;
● nscannedObjects: documentos
visitados;
● n: número de documentos retornados;
● millis: tempo de execução da query, em
milisegundos;
● indexBounds: valores mínimo e
●
Indexando no MongoDB
Exemplos:
●

●

Dados obtidos do site
http://grouplens.org/datasets/movielens/
Importados para o MongoDB por
aplicativo disponível em
http://www.wrox.com/
Indexando no MongoDB
Exemplo 1:
●

Obtendo o plano de execução de
pesquisa sobre a coleção movies
Indexando no MongoDB
Exemplo 1:
> db.movies.find({title:/Alien/i}); //busca pela franquia Alien
{ "_id" : 1200, "title" : "Aliens (1986)", "genres" : [ "Action", "Sci-Fi", "Thriller", "War" ] }
{ "_id" : 1214, "title" : "Alien (1979)", "genres" : [ "Action", "Horror", "Sci-Fi", "Thriller" ] }
{ "_id" : 1320, "title" : "AlienB3 (1992)", "genres" : [ "Action", "Horror", "Sci-Fi", "Thriller" ] }
{ "_id" : 1690, "title" : "Alien: Resurrection (1997)", "genres" : [ "Action", "Horror", "Sci-Fi" ] }
{ "_id" : 1692, "title" : "Alien Escape (1995)", "genres" : [ "Horror", "Sci-Fi" ] }
{ "_id" : 3701, "title" : "Alien Nation (1988)", "genres" : [ "Crime", "Drama", "Sci-Fi" ] }
>
//6 filmes retornados
Indexando no MongoDB
Exemplo 1:
> db.movies.find({title:/Alien/i}).explain(); //o método explain() 
//retorna o plano de 
//execução
{
"cursor" : "BasicCursor", //busca sem índice
"n" : 6,
"nscannedObjects" : 3883,  //vamos guardar esse número 
"nscanned" : 3883,
"nChunkSkips" : 0,
"millis" : 6,
"indexBounds" : {},
} 
Indexando no MongoDB
Exemplo 1:
> db.movies.find().count();
3883  //a­rá!!!

Conclusão:
Sem o índice, a busca teve que
percorrer todos os documentos da
coleção.
Indexando no
MongoDB
Criando índices no
MongoDB
Criando índices no MongoDB
Exemplo 2:
> db.ratings.find({movie_id:1200}).explain();
{
"cursor" : "BasicCursor",
"n" : 1820,
"nscannedObjects" : 1000209,
"nscanned" : 1000209,
"millis" : 457,
"indexBounds" : {},
}
●

São percorridos mais de 1 milhão de
documentos
Criando índices no MongoDB
Exemplo 2:
Criando um índice sobre o campo
movie_id
> db.ratings.ensureIndex({movie_id:1});
●

> db.ratings.find({movie_id:1200}).explain();
{
"cursor" : "BtreeCursor movie_id_1",
"n" : 1820,
"nscannedObjects" : 1820,
"nscanned" : 1820,
"millis" : 6,
"indexBounds" : {
"movie_id" : [[1200,1200]]
},
}
Criando índices no MongoDB
Após a criação do índice:
O cursor utilizado é do tipo Btree
● O número de objetos percorridos
restringiu-se ao resultado da pesquisa
● O tempo de execução é reduzido
drasticamente (de ~400ms para 6ms)
● Recuperação de documentos por
intervalo
●
Criando índices no MongoDB
Outros métodos para manipulação de
índices:
getIndexes: retorna a lista de índices
da coleção
● dropIndex: descarta um índice
● reIndex: remonta o índice
● hint: ao executar uma consulta, pode-se
“recomendar” um índice específico
●
Indexando no
MongoDB
Chaves Compostas
Índices únicos e
esparsos
Chaves compostas
Índices podem conter vários campos:
> db.ratings.ensureIndex({movie_id:1,rating:­1});
> 
> db.ratings.getIndexes();
[
{"v" : 1, "key" : {"_id" : 1},"ns" : "mydb.ratings",
"name" : "_id_"
},
{
"v" : 1,"key" : {"movie_id" : 1},"ns" : "mydb.ratings",
"name" : "movie_id_1"
},
{
"v" : 1,
"key" : {"movie_id" : 1,"rating" : ­1},
"ns" : "mydb.ratings",
"name" : "movie_id_1_rating_­1"
}
]
Chaves embutidas
Campos embutidos:
Campos de documentos aninhados
também pode ser usados como chave
em índices
● Documentos e arrays também servem
como chaves de índices
●

> var pessoa = {nome:”joao silva”,
 endereco:{
rua:”das dores”, numero:1, cidade:”udia”
 }
                };
>
> db.pessoas.ensureIndex({“endereco.rua”:1}); //OK
> db.pessoas.ensureIndex({endereco:1}); 
Índices esparsos
Índices esparsos:
Incluindo a opção {sparse:true} na
criação do índice, este é criado esparso
● Índices esparsos não indexam
documentos para os quais o valor da
chave é nulo
● Econimiza-se espaço, mas o documento
não é alcançável pelo índice
●
Índices esparsos
Índices únicos:
●

são criados fornecendo a opção
{unique:true} para o comando
ensureIndex()

caso a coleção já possua documentos
com valores duplicados para a chave de
um índice único, o índice não é criado
● porém, com a opção {dropDups:true},
duplicações são eliminadas da coleção
●
Indexando no
CouchDB e
Cassandra
Explorando a criação
e manipulação de
índices com o
MongoDB
CouchDB
View:
é uma função MapReduce executada
para cada documento da coleção
● o resultado de uma view é emitido pela
função emit(key,value)
● as linhas retornadas pela view são
armazenadas em um índice (B-Tree), de
forma que consultas subsequentes são
realizadas sobre o índice
●
CouchDB
View:
●

B-Tree oferecem suporte a MVCC
(Multi-Version Concurrency Control)
Cassandra
Índices:
●

●

São implementados como hash-tables
● Não suportam pesquisa por intervalo
São criados na definição da coluna
Obrigado!

Referências:
Shashank Tiwari (2011).
Professional NoSQL,
capítulo 8, “Indexing and
Ordering Data Sets”

Weitere ähnliche Inhalte

Was ist angesagt?

Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosYuri Adams
 
Javascript para CSharpers - Append B - jQuery
Javascript para CSharpers - Append B - jQueryJavascript para CSharpers - Append B - jQuery
Javascript para CSharpers - Append B - jQueryWesley Lemos
 
CSS - Cascading Style Sheets - 1
CSS - Cascading Style Sheets - 1CSS - Cascading Style Sheets - 1
CSS - Cascading Style Sheets - 1Israel Messias
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 
BigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPBigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPFelipe Weckx
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDBLelyBarros
 
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
 
CSS - Cascading Style Sheets - 2
CSS - Cascading Style Sheets - 2CSS - Cascading Style Sheets - 2
CSS - Cascading Style Sheets - 2Israel Messias
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Miguel Gallardo
 

Was ist angesagt? (14)

Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a Documentos
 
Javascript para CSharpers - Append B - jQuery
Javascript para CSharpers - Append B - jQueryJavascript para CSharpers - Append B - jQuery
Javascript para CSharpers - Append B - jQuery
 
CSS - Cascading Style Sheets - 1
CSS - Cascading Style Sheets - 1CSS - Cascading Style Sheets - 1
CSS - Cascading Style Sheets - 1
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
BigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPBigData - ElasticSearch + PHP
BigData - ElasticSearch + PHP
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca 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
 
CSS - Cascading Style Sheets - 2
CSS - Cascading Style Sheets - 2CSS - Cascading Style Sheets - 2
CSS - Cascading Style Sheets - 2
 
MongoDB - Iniciando e Conhecendo
MongoDB - Iniciando e ConhecendoMongoDB - Iniciando e Conhecendo
MongoDB - Iniciando e Conhecendo
 
Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2
 
NoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETECNoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETEC
 
#5 CRUD no MongoDB
#5   CRUD  no MongoDB#5   CRUD  no MongoDB
#5 CRUD no MongoDB
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
 

Ähnlich wie Indexar e Ordenar Dados

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
 
Mongo DB
Mongo DBMongo DB
Mongo DBdist_bp
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
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
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBiMasters
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014Christiano Anderson
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014Christiano Anderson
 
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
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e MongodbAline Ferreira
 
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
 
Apresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFApresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFBianca Caruso da Paixão
 
Spring Data com MongoDB
Spring Data com MongoDBSpring Data com MongoDB
Spring Data com MongoDBFabiano Modos
 

Ähnlich wie Indexar e Ordenar Dados (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
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 
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 ...
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
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
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e Mongodb
 
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
 
Apresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFApresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFF
 
Spring Data com MongoDB
Spring Data com MongoDBSpring Data com MongoDB
Spring Data com MongoDB
 
MondoDB
MondoDBMondoDB
MondoDB
 

Mehr von Rodolfo Mendes

Introdução a Data Science com Python
Introdução a Data Science com PythonIntrodução a Data Science com Python
Introdução a Data Science com PythonRodolfo Mendes
 
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de DecisõesDescobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de DecisõesRodolfo Mendes
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.ioRodolfo Mendes
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.ioRodolfo Mendes
 
Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1Rodolfo Mendes
 

Mehr von Rodolfo Mendes (6)

Introdução a Data Science com Python
Introdução a Data Science com PythonIntrodução a Data Science com Python
Introdução a Data Science com Python
 
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de DecisõesDescobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.io
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.io
 
NoSQL Na Nuvem
NoSQL Na NuvemNoSQL Na Nuvem
NoSQL Na Nuvem
 
Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1
 

Indexar e Ordenar Dados

  • 1. Indexando e Ordenando Data Sets Como criar índices e ordenar dados usando os data stores MongoDB, CouchDB e Apache Cassandra
  • 2. Tópicos Abordados Conceitos iniciais: ● Breve revisão das estruturas de dados utilizadas na construção de índices. Indexando no MongoDB: Criando e usando Índices no MongoDB ● Chaves compostas e embutidas ● Índices únicos e esparsos ● Busca baseada em palavras-chaves e multi-chaves ●
  • 3. Tópicos Abordados Indexando no CouchDB: ● Como as views são utilizadas na construção automática de índices. Indexando no Cassandra: Definindo índices para as colunas ● Busca chave-valor ●
  • 4. Conceitos Iniciais Breve revisão das estruturas de dados utilizadas na construção de índices
  • 5. Conceitos Iniciais Buscas lineares são impraticáveis! Índices permitem: buscas eficientes ● ordenação dos dados ● Blocos de construção: Árvores B e B+ ● Tabelas Hash ●
  • 6. Indexando no MongoDB Explorando a criação e manipulação de índices com o MongoDB
  • 7. Indexando no MongoDB Plano de execução: cursor: tipo de cursor. Pode ser Basic ou B-tree. ● nscanned: número de entradas visitadas; ● nscannedObjects: documentos visitados; ● n: número de documentos retornados; ● millis: tempo de execução da query, em milisegundos; ● indexBounds: valores mínimo e ●
  • 8. Indexando no MongoDB Exemplos: ● ● Dados obtidos do site http://grouplens.org/datasets/movielens/ Importados para o MongoDB por aplicativo disponível em http://www.wrox.com/
  • 9. Indexando no MongoDB Exemplo 1: ● Obtendo o plano de execução de pesquisa sobre a coleção movies
  • 10. Indexando no MongoDB Exemplo 1: > db.movies.find({title:/Alien/i}); //busca pela franquia Alien { "_id" : 1200, "title" : "Aliens (1986)", "genres" : [ "Action", "Sci-Fi", "Thriller", "War" ] } { "_id" : 1214, "title" : "Alien (1979)", "genres" : [ "Action", "Horror", "Sci-Fi", "Thriller" ] } { "_id" : 1320, "title" : "AlienB3 (1992)", "genres" : [ "Action", "Horror", "Sci-Fi", "Thriller" ] } { "_id" : 1690, "title" : "Alien: Resurrection (1997)", "genres" : [ "Action", "Horror", "Sci-Fi" ] } { "_id" : 1692, "title" : "Alien Escape (1995)", "genres" : [ "Horror", "Sci-Fi" ] } { "_id" : 3701, "title" : "Alien Nation (1988)", "genres" : [ "Crime", "Drama", "Sci-Fi" ] } > //6 filmes retornados
  • 11. Indexando no MongoDB Exemplo 1: > db.movies.find({title:/Alien/i}).explain(); //o método explain()  //retorna o plano de  //execução { "cursor" : "BasicCursor", //busca sem índice "n" : 6, "nscannedObjects" : 3883,  //vamos guardar esse número  "nscanned" : 3883, "nChunkSkips" : 0, "millis" : 6, "indexBounds" : {}, } 
  • 12. Indexando no MongoDB Exemplo 1: > db.movies.find().count(); 3883  //a­rá!!! Conclusão: Sem o índice, a busca teve que percorrer todos os documentos da coleção.
  • 14. Criando índices no MongoDB Exemplo 2: > db.ratings.find({movie_id:1200}).explain(); { "cursor" : "BasicCursor", "n" : 1820, "nscannedObjects" : 1000209, "nscanned" : 1000209, "millis" : 457, "indexBounds" : {}, } ● São percorridos mais de 1 milhão de documentos
  • 15. Criando índices no MongoDB Exemplo 2: Criando um índice sobre o campo movie_id > db.ratings.ensureIndex({movie_id:1}); ● > db.ratings.find({movie_id:1200}).explain(); { "cursor" : "BtreeCursor movie_id_1", "n" : 1820, "nscannedObjects" : 1820, "nscanned" : 1820, "millis" : 6, "indexBounds" : { "movie_id" : [[1200,1200]] }, }
  • 16. Criando índices no MongoDB Após a criação do índice: O cursor utilizado é do tipo Btree ● O número de objetos percorridos restringiu-se ao resultado da pesquisa ● O tempo de execução é reduzido drasticamente (de ~400ms para 6ms) ● Recuperação de documentos por intervalo ●
  • 17. Criando índices no MongoDB Outros métodos para manipulação de índices: getIndexes: retorna a lista de índices da coleção ● dropIndex: descarta um índice ● reIndex: remonta o índice ● hint: ao executar uma consulta, pode-se “recomendar” um índice específico ●
  • 19. Chaves compostas Índices podem conter vários campos: > db.ratings.ensureIndex({movie_id:1,rating:­1}); >  > db.ratings.getIndexes(); [ {"v" : 1, "key" : {"_id" : 1},"ns" : "mydb.ratings", "name" : "_id_" }, { "v" : 1,"key" : {"movie_id" : 1},"ns" : "mydb.ratings", "name" : "movie_id_1" }, { "v" : 1, "key" : {"movie_id" : 1,"rating" : ­1}, "ns" : "mydb.ratings", "name" : "movie_id_1_rating_­1" } ]
  • 20. Chaves embutidas Campos embutidos: Campos de documentos aninhados também pode ser usados como chave em índices ● Documentos e arrays também servem como chaves de índices ● > var pessoa = {nome:”joao silva”,  endereco:{ rua:”das dores”, numero:1, cidade:”udia”  }                 }; > > db.pessoas.ensureIndex({“endereco.rua”:1}); //OK > db.pessoas.ensureIndex({endereco:1}); 
  • 21. Índices esparsos Índices esparsos: Incluindo a opção {sparse:true} na criação do índice, este é criado esparso ● Índices esparsos não indexam documentos para os quais o valor da chave é nulo ● Econimiza-se espaço, mas o documento não é alcançável pelo índice ●
  • 22. Índices esparsos Índices únicos: ● são criados fornecendo a opção {unique:true} para o comando ensureIndex() caso a coleção já possua documentos com valores duplicados para a chave de um índice único, o índice não é criado ● porém, com a opção {dropDups:true}, duplicações são eliminadas da coleção ●
  • 23. Indexando no CouchDB e Cassandra Explorando a criação e manipulação de índices com o MongoDB
  • 24. CouchDB View: é uma função MapReduce executada para cada documento da coleção ● o resultado de uma view é emitido pela função emit(key,value) ● as linhas retornadas pela view são armazenadas em um índice (B-Tree), de forma que consultas subsequentes são realizadas sobre o índice ●
  • 25. CouchDB View: ● B-Tree oferecem suporte a MVCC (Multi-Version Concurrency Control)
  • 26. Cassandra Índices: ● ● São implementados como hash-tables ● Não suportam pesquisa por intervalo São criados na definição da coluna
  • 27. Obrigado! Referências: Shashank Tiwari (2011). Professional NoSQL, capítulo 8, “Indexing and Ordering Data Sets”

Hinweis der Redaktion

  1. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  2. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  3. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  4. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  5. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  6. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  7. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  8. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  9. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  10. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  11. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  12. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  13. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  14. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  15. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  16. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  17. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  18. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.