SlideShare uma empresa Scribd logo
1 de 44
NoSQL for Search
@avelino0
              www.avelino.us
thiagoavelinoster@gmail.com
thiagoavelinoster@gmail.com
thiagoavelinoster@gmail.com
thiagoavelinoster@gmail.com
Quem esta fazendo?
Quem usa?
Mais um NoSQL?




      2008, Akamai Technologies, Inc.
Definição
            eLevelDB
Bala de prata




solução para maquina de pesquisa
Porque Riak?
• Escalável
• Altamente disponível em rede
• Key/Value
• Erlang
• Total controle de memoria
• Ferramenta de Indexação
• Versão comercial
Escrevendo com Chave e Value




           Key/Value


   Aplicação      Riak
Escrevendo com Chave e Value




               objecto


   Aplicação             Riak
Consulta com Chave e Value



               key


              objecto

  Aplicação             Riak
Consulta via Map/Reduce


        key+função
                        Map

                        Map

                        Reduce
         objecto(s)
 Aplicação       Riak
Consulta por indexe secundario


where linguagem == "python"


                                  WTF!!
                              Aceito pesquisa
                               inteligente...

        Aplicação      Riak
Texto complexo


“Linguagem python ou ruby”



                                Agora você
                              precisa de Riak..

       Aplicação       Riak
Pesquisa de texto complexa e
mecanismo de indexação baseado
           em Riak
Ambiente




Aplicação   Riak
Ambiente




            In dex
Aplicação            Riak
maquina de busca
  preciso de mais index



            ???
Aplicação   ???     Riak
            ???
Google
O que achei?




                Lucene
Aplicação         ou       Riak
                 Solr
Lucene
Aplicação     ou       Riak
             Solr

                Java
Lucene deve resolver o meu
        problema




   Aplicação   Lucene   Riak
Aumentando a capacidade de
    armazenamento


               Lucene
   Aplicação   Lucene   Riak
               Lucene
Replicar para adicionar mais
         produtividade


            Lucene   Lucene   Lucene
Aplicação   Lucene   Lucene   Lucene   Riak
            Lucene   Lucene   Lucene
Riak Search
                                   Index
                            Riak


                                   In dex
Aplicação     Riak Search   Riak


                                   In dex
                            Riak
Funcionalidades como lucene
         (e muito mais)

• Lucene Syntax
• Reutiliza Java Lucene Analyzers
• Solr Endpoints
• Integração via Riak Post-Commit Hook
  (Index)
• Integração via Riak Map/Reduce (Query)
• Schema-less
e muito mais



• Adicionar maquina em tempo real
  (Processamento e mais espaço)
• Automatico Load Balance
• Replica (Duplicar dados ou performance)
• indexes e query em paralelo
• ...
Como é feito os indexes?

Documento                                   Index
                                 nosql, 1
     NoSQL é o futuro de
                                     é, 1
#1       BigData
                                     o, 1
                                futuro, 1
                                    de, 1
                               bigdata, 1
Como é feito os indexes?

Documento                               Index

     NoSQL é o futuro de            nosql, 1
#1       BigData                    nosql, 2
                                    nosql, 3
                                        é, 1
     É bom usar NoSQL                   é, 2
#2      em produção               bigdata, 1
                                  bigdata, 3
     Recomendado usar                     ...
#3   NoSQL com BigData
Consulta em tempo real

        nosql E bigdata




              E




nosql                     bigdata
Consulta em tempo real

              E




nosql             bigdata




   nosql, 1          bigdata, 1
   nosql, 2          bigdata, 3
   nosql, 3
Consulta em tempo real

            Resultado: 1, 3




         (Merge intercessão)




     1                         1
     2                         3
     3
Consulta em tempo real

         Resultado: 1, 2, 3




         (Merge união)




     1                        1
     2                        3
     3
Comportamento complexo
Indexando documento
[{programadores: {
nome: “Thiago Avelino”,
linguagem: [“python”, “javascript”, “ruby”],
nosql: [
{nome: “riak”, tipo: [“key”, “valor”]},
{nome: “mongodb”, tipo: [“documento”, “key”, “valor”]},
]
},}]
Indexando documento

                         #programadores


                 #nome     #linguagem     #nosql



Thiago Avelino             python         #nome       #tipo
                         javascript
                            ruby
                                            riak        key
                                          mongodb      value
                                                    documento
Dividindo index em node



          Index             Index             Index

Riak #1           Riak #2           Riak #3
 16 gb             6 gb              2 gb
Dividindo index em node

                         #programadores


                 #nome     #linguagem     #nosql



Thiago Avelino             python         #nome       #tipo
                         javascript
                            ruby
                                            riak        key
                                          mongodb      value
                                                    documento
Dividindo index em node

                           #programadores

                 Node #1        Node #2     Node #3
                 #nome       #linguagem     #nosql



Thiago Avelino               python         #nome       #tipo
                           javascript
                              ruby
                                              riak        key
                                            mongodb      value
                                                      documento
Dividindo index em node
                           #programadores
        $node #2                                      $node #1

                              $node #3
                   #nome                    #nosql

                             #linguagem
Thiago Avelino                              #nome            #tipo


                             python
                           javascript         riak            key
                              ruby          mongodb          value
                                                          documento
Drivers


• Python
• Ruby
• php
• Javascript (NodeJS)
• .Net
Links
• http://basho.com/
• http://basho.com/products/riak-control/
• http://basho.com/products/riak-enterprise/
• http://wiki.basho.com/
• https://github.com/basho
• http://
  shop.oreilly.com/product/0636920018957.do
  (Book)
Quer saber mais
   sobre Riak?
Pergunta-me como!
Obrigado!
Perguntas?




                  Thiago Avelino
                      @avelino0
                 www.avelino.us
   thiagoavelinoster@gmail.com
   thiagoavelinoster@gmail.com

Mais conteúdo relacionado

Semelhante a NoSQL for Search

Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Daniel Lopes
 
Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLOtávio Calaça Xavier
 
Ecossistema Ruby e Rails (Serpro BH)
Ecossistema Ruby e Rails (Serpro BH)Ecossistema Ruby e Rails (Serpro BH)
Ecossistema Ruby e Rails (Serpro BH)Daniel Lopes
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Joao Lucas Santana
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
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
 
Rest, Gateway e Compiladores
Rest, Gateway e CompiladoresRest, Gateway e Compiladores
Rest, Gateway e CompiladoresRodrigo Senra
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Escalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLFernando Ike
 
ruby on rails e o mercado
ruby on rails e o mercadoruby on rails e o mercado
ruby on rails e o mercadoelliando dias
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaGabriel Molter
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Douglas Roeder
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLTaller Negócio Digitais
 
Docker Everywhere - MTAC Week
Docker Everywhere - MTAC WeekDocker Everywhere - MTAC Week
Docker Everywhere - MTAC WeekLuiz Carlos Faria
 
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...tdc-globalcode
 

Semelhante a NoSQL for Search (20)

Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
 
Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQL
 
Ecossistema Ruby e Rails (Serpro BH)
Ecossistema Ruby e Rails (Serpro BH)Ecossistema Ruby e Rails (Serpro BH)
Ecossistema Ruby e Rails (Serpro BH)
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)
 
Ruby conf br
Ruby conf brRuby conf br
Ruby conf br
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
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
 
Rest, Gateway e Compiladores
Rest, Gateway e CompiladoresRest, Gateway e Compiladores
Rest, Gateway e Compiladores
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Escalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQL
 
ruby on rails e o mercado
ruby on rails e o mercadoruby on rails e o mercado
ruby on rails e o mercado
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Postgres nuvens
Postgres nuvensPostgres nuvens
Postgres nuvens
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e Prática
 
Pos-QCon-BigData
Pos-QCon-BigDataPos-QCon-BigData
Pos-QCon-BigData
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
 
Resque
ResqueResque
Resque
 
Docker Everywhere - MTAC Week
Docker Everywhere - MTAC WeekDocker Everywhere - MTAC Week
Docker Everywhere - MTAC Week
 
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
 

Mais de Thiago Avelino

Node.js em produção, javascript no server side
Node.js em produção, javascript no server sideNode.js em produção, javascript no server side
Node.js em produção, javascript no server sideThiago Avelino
 
Test é para os fracos
Test é para os fracosTest é para os fracos
Test é para os fracosThiago Avelino
 
Desenvolvendo com mongodb
Desenvolvendo com mongodbDesenvolvendo com mongodb
Desenvolvendo com mongodbThiago Avelino
 
Integrando python ao mongodb
Integrando python ao mongodbIntegrando python ao mongodb
Integrando python ao mongodbThiago Avelino
 
MongoDB, Banco de Dados orientado a documento
MongoDB, Banco de Dados orientado a documentoMongoDB, Banco de Dados orientado a documento
MongoDB, Banco de Dados orientado a documentoThiago Avelino
 

Mais de Thiago Avelino (8)

Node.js em produção, javascript no server side
Node.js em produção, javascript no server sideNode.js em produção, javascript no server side
Node.js em produção, javascript no server side
 
Test é para os fracos
Test é para os fracosTest é para os fracos
Test é para os fracos
 
sampa.js end
sampa.js endsampa.js end
sampa.js end
 
sampa.js start
sampa.js startsampa.js start
sampa.js start
 
Desenvolvendo com mongodb
Desenvolvendo com mongodbDesenvolvendo com mongodb
Desenvolvendo com mongodb
 
Integrando python ao mongodb
Integrando python ao mongodbIntegrando python ao mongodb
Integrando python ao mongodb
 
Oficina de Django
Oficina de DjangoOficina de Django
Oficina de Django
 
MongoDB, Banco de Dados orientado a documento
MongoDB, Banco de Dados orientado a documentoMongoDB, Banco de Dados orientado a documento
MongoDB, Banco de Dados orientado a documento
 

NoSQL for Search