NoSQL na 
          BIREME/OPAS/OMS
                  20 anos de experiência




Luciano Ramalho
BIREME/OPAS/OMS
Invasões bárbaras
• O modelo relacional normalizado (MRN) 
  reinava praticamente incontestável
• Em alguns nichos, usuários de bancos de 
  dados NoSQL resistiam (ex. ISIS, Adabas, 
  Mumps...)
• Grandes usuários de NoSQL saíram do 
  armário (Google, Amazon, Facebook...)
• Vários bancos NoSQL novos sendo  
  lançados
Alguns produtos recentes
• ZODB
• Apache CouchDB
• MongoDB
• Hadoop Hbase
• ThruDB
                   • Google Datastore
• Redis
                   • Amazon SimpleDB
• Hypertable
                   • Apstrata
• Riak
Uma aplicação: LILACS
• LILACS: Literatura Latinoamericana y del 
  Caribe en Ciencias de la Salud
• Catalogação cooperativa de artigos 
  científicos nos países de origem
• Registros fornecidos por mais de 100 
  bibliotecas e centros de informação, de 
  praticamente todos os países da região
• Promove a pesquisa relevante para os 
  nossos problemas de saúde
A metodologia é o elo
Dicionário de Dados da Metodologia Lilacs
Dicionário de Dados da Metodologia Lilacs
O absurdo
[...] seria interessante notar o absurdo do padrão do
MRN [Modelo Relacional Normalizado]: se um livro
tiver 3 autores e 5 assuntos, será necessário representá-
lo no MRN por meio de uma linha na tabela Livros, mais
3 na Nomes-de-autores (que implementaria o atributo
multivalorado correspondente) e mais 5 na de Assuntos,
num total de 9 linhas em três tabelas distintas [...]. Mas
o que se vê e e pega-se na mão no mundo real é um livro
só, e não um picadinho de livro!
SETZER, V. Bancos de dados: aprenda o que são,
melhore seu conhecimento, construa os seus.
1ª ed. São Paulo: Edgard Blücher, 2005.
Registros bibliográficos
• MARC: Machine Readable Cataloging
  – US Library of Congress
• ISO 2709
  – Information and documentation: Format for 
    information exchange
• CDS/ISIS
  – Unesco, BIREME/OPAS/OMS et al.
Modelo de dados apoia
        a metodologia

• Campos repetitivos
• Campos opcionais
• Sub­campos

        Características comuns aos formatos
         Características comuns aos formatos
        de registros MARC, ISO-2709 e ISIS
         de registros MARC, ISO-2709 e ISIS
Exemplo de registro ISIS


10   «Lewis Carroll^y1832-1898^rauthor»
10   «John Tenniel^y1820-1914^rillustrator»
10   «Lewis Carroll^y1914-2010^reditor»
12   «The Annotated Alice^sThe Definitive Edition»
Exemplo de registro ISIS

 Campo repetitivo
10   «Lewis Carroll^y1832-1898^rauthor»
10   «John Tenniel^y1820-1914^rillustrator»
10   «Lewis Carroll^y1914-2010^reditor»
12   «The Annotated Alice^sThe Definitive Edition»
Exemplo de registro ISIS
         Marcador de sub-campo        Sub-campo


10   «Lewis Carroll^y1832-1898^rauthor»
10   «John Tenniel^y1820-1914^rillustrator»
10   «Lewis Carroll^y1914-2010^reditor»
12   «The Annotated Alice^sThe Definitive Edition»
Exemplo de registro ISIS

 Campo repetitivo
10   «Lewis Carroll^y1832-1898^rauthor»
10   «John Tenniel^y1820-1914^rillustrator»
10   «Lewis Carroll^y1914-2010^reditor»
12   «The Annotated Alice^sThe Definitive Edition»

             Marcador de sub-campo     Sub-campo
Algumas lições aprendidas
• Schema first x schema last (Stonebraker)
  – ao longo do tempo, é inevitável que você tenha 
    registros na base em desacordo com as regras 
    de negócios
• Necessário usar um framework que permita 
  definir um modelo de dados com:
  – tipos de campos validados
  – validações envolvendo vários campos ou 
    mesmo a base de dados (ex. unicidade)
  – geração de forms (estimula o (re)uso)
O futuro do ISIS
• Manutenção da implementação legada 
  (CISIS) está cada vez mais complexa
• BIREME busca uma alternativa que 
  suporte bem suas bases de dados 
  (conteúdo), sem necessariamente se 
  prender ao formato binários do ISIS
• Quais são as alternativas?
Comparar BD relacionais é como comparar automóveis
NoSQL é mais difícil comparar
Tags para pesquisar
• NoSQL
• NF²: Non­First Normal Form
• MRNN: modelo relacional não normalizado 
  (V. W. Setzer)
• Schemaless
• Semistructured ou Semi­structured
Referência: Data on the Web
             • Teoria de BD 
               semiestruturados
             • Os autores têm 
               vários papers 
               seminais
Semistructured Database Design
               • Teoria atualizada
               • Discussão sobre 
                 redundância, 
                 anomalias de 
                 atualização etc.
               • Notação gráfica 
                 para definir 
                 esquemas de dados
O modelo de dados 
          semiestruturado
• Em uma palavra: JSON
  – uma aproximação razoável
• Banco de dados = coleção de registros
• Registro = dicionário
  – conjunto de pares chave­valor
• Valor de um campo = simples ou coleção
  – campos repetitivos: valor = lista
  – sub­campos: valor = dicionário
  – tudo junto: listas de dicionários!
Alternativas atuais
• Apache CouchDB
  – API mais difícil para fazer queries (mapreduce)
  – estratégia de persistência mais segura em 
    deployments simples
• MongoDB
  – API mais fácil para queries
  – estratégia de persitência otimizada para 
    update exige deployment mais complexo
• Sugestões?
Projeto ISIS­DM: ISIS Data Model
• API para definição de esquemas de dados 
  através de classes, como em certos ORMs
• API de extração de dados tão ou mais 
  poderosa quanto a ISIS Format. Language
• Back­ends para BDs NF² modernos
  – MongoDB, CouchDB
  – Google Datastore
  – PostgreSQL (hstore, JSON?)
  – O seu BD favorito
Definição de um esquema
Instanciação


>>> book == Book(title='The Annotated Alice^sDefinitive Edition',
 >>> book    Book(title='The Annotated Alice^sDefinitive Edition',
...
 ...             pages=352,
                  pages=352,
...
 ...             creators=['Lewis Carroll^y1832-1898^rAuthor',
                  creators=['Lewis Carroll^y1832-1898^rAuthor',
...
 ...                       'John Tenniel^rIllustrator',
                            'John Tenniel^rIllustrator',
...
 ...                       'Martin Gardner^y1914-2010^rEditor'])
                            'Martin Gardner^y1914-2010^rEditor'])
Acesso a campos e sub­campos

  >>> book.title
   >>> book.title
  u'The Annotated Alice^sDefinitive Edition'
   u'The Annotated Alice^sDefinitive Edition'
  >>> print book.title.s
   >>> print book.title.s
  Definitive Edition
   Definitive Edition
  >>> print book.creators[0].y
   >>> print book.creators[0].y
  1832-1898
   1832-1898
  >>> for creator in book.creators:
   >>> for creator in book.creators:
  ...
   ...    print '%-12s: %s' %% (creator.r, creator[0])
           print '%-12s: %s'     (creator.r, creator[0])
  Author
   Author      :: Lewis Carroll
                   Lewis Carroll
  Illustrator :: John Tenniel
   Illustrator     John Tenniel
  Editor
   Editor      :: Martin Gardner
                   Martin Gardner
Projeto ISIS­DM
• FLOSS: Licença LGPL
• Iniciando agora: participe das decisões 
  cruciais, envolva­se enquanto ainda é fácil
• Excelente oportunidade para ganhar 
  experiência com NoSQL, trabalhando com 
  massas de dados e necessidades reais
• Alto impacto social: a missão é democratizar 
  o acesso à informação em saúde
• Visibilidade internacional
O que
temos:
usuários,
dados,
casos
de uso 
concretos
http://reddes.bvsalud.org
 http://reddes.bvsalud.org
                         luciano.ramalho@bireme.org
                          luciano.ramalho@bireme.org
http://reddes.bvsalud.org
 http://reddes.bvsalud.org
                         luciano.ramalho@bireme.org
                          luciano.ramalho@bireme.org

NoSQL na BIREME: 20 anos de experiência

  • 1.
    NoSQL na  BIREME/OPAS/OMS 20 anos de experiência Luciano Ramalho BIREME/OPAS/OMS
  • 5.
    Invasões bárbaras • O modelo relacional normalizado (MRN)  reinava praticamente incontestável • Em alguns nichos, usuários de bancos de  dados NoSQL resistiam (ex. ISIS, Adabas,  Mumps...) • Grandes usuários de NoSQL saíram do  armário (Google, Amazon, Facebook...) • Vários bancos NoSQL novos sendo   lançados
  • 6.
    Alguns produtos recentes • ZODB • Apache CouchDB •MongoDB • Hadoop Hbase • ThruDB • Google Datastore • Redis • Amazon SimpleDB • Hypertable • Apstrata • Riak
  • 7.
    Uma aplicação: LILACS • LILACS: Literatura Latinoamericana y del  Caribe en Ciencias de la Salud • Catalogação cooperativa de artigos  científicos nos países de origem • Registros fornecidos por mais de 100  bibliotecas e centros de informação, de  praticamente todos os países da região • Promove a pesquisa relevante para os  nossos problemas de saúde
  • 8.
  • 9.
    Dicionário de Dadosda Metodologia Lilacs Dicionário de Dados da Metodologia Lilacs
  • 10.
    O absurdo [...] seria interessantenotar o absurdo do padrão do MRN [Modelo Relacional Normalizado]: se um livro tiver 3 autores e 5 assuntos, será necessário representá- lo no MRN por meio de uma linha na tabela Livros, mais 3 na Nomes-de-autores (que implementaria o atributo multivalorado correspondente) e mais 5 na de Assuntos, num total de 9 linhas em três tabelas distintas [...]. Mas o que se vê e e pega-se na mão no mundo real é um livro só, e não um picadinho de livro! SETZER, V. Bancos de dados: aprenda o que são, melhore seu conhecimento, construa os seus. 1ª ed. São Paulo: Edgard Blücher, 2005.
  • 11.
    Registros bibliográficos • MARC: Machine Readable Cataloging – US Library of Congress • ISO 2709 – Information and documentation: Format for  information exchange • CDS/ISIS – Unesco, BIREME/OPAS/OMS et al.
  • 12.
    Modelo de dados apoia a metodologia • Campos repetitivos • Campos opcionais • Sub­campos Características comuns aos formatos Características comuns aos formatos de registros MARC, ISO-2709 e ISIS de registros MARC, ISO-2709 e ISIS
  • 13.
    Exemplo de registro ISIS 10 «Lewis Carroll^y1832-1898^rauthor» 10 «John Tenniel^y1820-1914^rillustrator» 10 «Lewis Carroll^y1914-2010^reditor» 12 «The Annotated Alice^sThe Definitive Edition»
  • 14.
    Exemplo de registro ISIS Campo repetitivo 10 «Lewis Carroll^y1832-1898^rauthor» 10 «John Tenniel^y1820-1914^rillustrator» 10 «Lewis Carroll^y1914-2010^reditor» 12 «The Annotated Alice^sThe Definitive Edition»
  • 15.
    Exemplo de registro ISIS Marcador de sub-campo Sub-campo 10 «Lewis Carroll^y1832-1898^rauthor» 10 «John Tenniel^y1820-1914^rillustrator» 10 «Lewis Carroll^y1914-2010^reditor» 12 «The Annotated Alice^sThe Definitive Edition»
  • 16.
    Exemplo de registro ISIS Campo repetitivo 10 «Lewis Carroll^y1832-1898^rauthor» 10 «John Tenniel^y1820-1914^rillustrator» 10 «Lewis Carroll^y1914-2010^reditor» 12 «The Annotated Alice^sThe Definitive Edition» Marcador de sub-campo Sub-campo
  • 17.
    Algumas lições aprendidas • Schema first x schema last (Stonebraker) – ao longo do tempo, é inevitável que você tenha  registros na base em desacordo com as regras  de negócios • Necessário usar um framework que permita  definir um modelo de dados com: – tipos de campos validados – validações envolvendo vários campos ou  mesmo a base de dados (ex. unicidade) – geração de forms (estimula o (re)uso)
  • 18.
    O futuro do ISIS • Manutenção da implementação legada  (CISIS) está cada vez mais complexa • BIREME busca uma alternativa que  suporte bem suas bases de dados  (conteúdo), sem necessariamente se  prender ao formato binários do ISIS • Quais são as alternativas?
  • 19.
    Comparar BD relacionaisé como comparar automóveis
  • 20.
    NoSQL é maisdifícil comparar
  • 21.
    Tags para pesquisar • NoSQL • NF²: Non­First Normal Form •MRNN: modelo relacional não normalizado  (V. W. Setzer) • Schemaless • Semistructured ou Semi­structured
  • 22.
    Referência: Data on the Web • Teoria de BD  semiestruturados • Os autores têm  vários papers  seminais
  • 23.
    Semistructured Database Design • Teoria atualizada • Discussão sobre  redundância,  anomalias de  atualização etc. • Notação gráfica  para definir  esquemas de dados
  • 24.
    O modelo de dados  semiestruturado • Em uma palavra: JSON – uma aproximação razoável • Banco de dados = coleção de registros • Registro = dicionário – conjunto de pares chave­valor • Valor de um campo = simples ou coleção – campos repetitivos: valor = lista – sub­campos: valor = dicionário – tudo junto: listas de dicionários!
  • 25.
    Alternativas atuais • Apache CouchDB – API mais difícil para fazer queries (mapreduce) – estratégia de persistência mais segura em  deployments simples • MongoDB – API mais fácil para queries – estratégia de persitência otimizada para  update exige deployment mais complexo • Sugestões?
  • 27.
    Projeto ISIS­DM: ISIS Data Model • API para definição de esquemas de dados  através de classes, como em certos ORMs • API de extração de dados tão ou mais  poderosa quanto a ISIS Format. Language • Back­ends para BDs NF² modernos – MongoDB, CouchDB – Google Datastore – PostgreSQL (hstore, JSON?) – O seu BD favorito
  • 28.
  • 29.
    Instanciação >>> book ==Book(title='The Annotated Alice^sDefinitive Edition', >>> book Book(title='The Annotated Alice^sDefinitive Edition', ... ... pages=352, pages=352, ... ... creators=['Lewis Carroll^y1832-1898^rAuthor', creators=['Lewis Carroll^y1832-1898^rAuthor', ... ... 'John Tenniel^rIllustrator', 'John Tenniel^rIllustrator', ... ... 'Martin Gardner^y1914-2010^rEditor']) 'Martin Gardner^y1914-2010^rEditor'])
  • 30.
    Acesso a campos e sub­campos >>>book.title >>> book.title u'The Annotated Alice^sDefinitive Edition' u'The Annotated Alice^sDefinitive Edition' >>> print book.title.s >>> print book.title.s Definitive Edition Definitive Edition >>> print book.creators[0].y >>> print book.creators[0].y 1832-1898 1832-1898 >>> for creator in book.creators: >>> for creator in book.creators: ... ... print '%-12s: %s' %% (creator.r, creator[0]) print '%-12s: %s' (creator.r, creator[0]) Author Author :: Lewis Carroll Lewis Carroll Illustrator :: John Tenniel Illustrator John Tenniel Editor Editor :: Martin Gardner Martin Gardner
  • 32.
    Projeto ISIS­DM • FLOSS: Licença LGPL • Iniciando agora: participe das decisões  cruciais, envolva­se enquanto ainda é fácil • Excelente oportunidade para ganhar  experiência com NoSQL, trabalhando com  massas de dados e necessidades reais • Alto impacto social: a missão é democratizar  o acesso à informação em saúde • Visibilidade internacional
  • 33.
  • 34.
    http://reddes.bvsalud.org http://reddes.bvsalud.org luciano.ramalho@bireme.org luciano.ramalho@bireme.org
  • 35.
    http://reddes.bvsalud.org http://reddes.bvsalud.org luciano.ramalho@bireme.org luciano.ramalho@bireme.org