CENTRO UNIVERSITÁRIO ESTÁCIO DA BAHIA – FIB

         SISTEMAS DE INFORMAÇÃO




            ADEMIR T S CHAGAS

             NELSON ARAGÃO

              MESSIAS SILVA




                 NoSQL




              SALVADOR – BA

                   2011
ADEMIR T S CHAGAS

 NELSON ARAGÃO

  MESSIAS SILVA




    NoSQL




                             Trabalho apresentado ao
                    Centro Universitário Estácio da Bahia,
                    trabalho da av2,da disciplina Banco II ,
                    do curso de Sistema de Informação,
                    sob orientação do Prof         Antônio
                    Cordeiro




 SALVADOR – BA

      2011
NoSQL



             Ademir T S Chagas, Nelson Aragão, Messias Silva



      Resumo. Este artigo irá abordar as principais características, técnicas
de escalabilidade, classificação e arquitetura do NoSQL, que é um banco de
dados não relacional que tem um propósito de suprir as necessidades em
demandas onde os bancos de dados tradicionais (relacionais) são ineficazes. O
NoSQL é bastante utilizado pelas grandes empresas, como o Twitter,
Facebook, Ebay, Google, entre outros. A sua principal característica é a
escalabilidade, no qual faz aumentar a capacidade de armazenamento de
dados e a velocidade.



   1. INTRODUÇÃO



       O NoSQL surgiu da necessidade de uma performance superior e de uma
alta escalabilidade. Os atuais bancos de dados relacionais são muito restritos a
isso, sendo necessária a distribuição vertical de servidores, ou seja, quanto
mais dados, mais memória e mais disco um servidor precisa. O NoSQL tem
uma grande facilidade na distribuição horizontal, ou seja, mais dados, mais
servidores, não necessariamente de alta performance. [1]
        Um grande utilizador desse conceito é o Google, que usa computadores
de pequeno e médio porte para a distribuição dos dados; essa forma de
utilização é muito mais eficiente e econômica. Além disso, os bancos de dados
NoSQL são muito tolerantes a erros. Toda a informação necessária estará
agrupada no mesmo registro, ou seja, em vez de você ter o relacionamento
entre várias tabelas para formar uma informação, ela estará em sua totalidade
no mesmo registro. [1]



   2. COMPARATIVO ENTRE BD RELACIONAL E NÃO RELACIONAL
      (NoSQL)



      Banco de Dados Relacionais

          • O que é: baseia-se em que todos os dados estão guardados em
            tabelas, pelo conceito de entidade e relacionamento. Os dados
            são separados de forma única, tentando diminuir ao máximo a
redundância, pois a informação é criada pelo conjunto dos dados,
     onde são as relações entre as tabelas que fazem esse serviço.

  • Características:   Tabelas,     schema     definido, hierarquia,
    redundância mínima, entidade e relacionamento, formas normais,
    transações ACID (Atomicidade, Consistência, Isolamento,
    Durabilidade).

  • Escalabilidade: Devido à estruturação do modelo é possível, mas
    complexo.

  • Consistência: Ponto forte do Modelo Relacional. A regra de
    consistência presente garante um maior rigor à consistência das
    informações.

  • Disponibilidade: Este modelo não suporta eficientemente grande
    demanda, dado a dificuldade e distribuição de dados.

  • Necessidades: Sistemas locais, financeiros,         corporativos;
    segurança da informação; consistência dos dados.

  • SGBDs: DB2, Firebird, InterBase, Microsoft SQL Server, MySQL,
    Oracle, PostgreSQL

  • Cases: SAP, OpenERP, Previdência          Social,   Caixa,    Itaú,
    Salesforce, Vale.




Banco de Dados Não Relacionais (NoSQL)



  • O que é: Uma solução alternativa para os bancos de dados
    relacionais possuem uma alta escalabilidade e desempenho.

  • Características: Registros, schema-free, tolerância     à    falha,
    escalabilidade, clusterização, mapreduce, sharding.

  • Escalabilidade: É sem dúvida a principal vantagem do NoSQL.
    Possui mais flexibilidade na inclusão de dados por não possuir
    estrutura.

  • Consistência: Não garante a consistência da informação, caso
    nenhuma informação seja atualizada, retornará a todos os
    pedintes o mesmo valor.
• Disponibilidade: Outro ponto forte do BD NoSQL. Possui um alto
           grau de distribuição de dados, e garante um maior numero de
           solicitações.



         • Necessidades: sistemas em nuvem, análises sociais, alta
           escalabilidade, performance na consulta/escrita, replicação.

         • SGBDs: Oracle NoSQL, Cassandra,            BigTable,   MongoDB,
           CouchDB, Dynamo.

         • Cases: Twitter, Facebook, Digg, Amazon, LinkedIN, Google,
           Yahoo, The New York Times.




   3. CARACTERÍSTICAS



   3.1 Escalabilidade Horizontal

     Significa adicionar um novo servidor e um sistema de software que
   permita a distribuição do trabalho entre múltiplas máquinas.[3]




   3.2 Clusterização

   Compreende um banco de dados armazenado e gerenciado por mais de
um servidor, provê uma alta disponibilidade e um alto desempenho do sistema.
Assim, a organização se beneficia diminuindo o tempo de inoperabilidade do
banco de dados. Esse processo vem como uma solução para reduzir gastos
com estrutura de hardware.[6]



   3.3 Schema-Free



    Um dos fatores que contribuem para um banco de dados NoSQL escalar é
por causa da ausência de um schema (schema free). Todos os novos bancos
tem em comum que eles são key-value stores, ou seja, salvam,como o nome
sugere, um conjunto de entradas formadas por uma chave associada a um
valor e o valor poderia ser de qualquer tipo, um binário ou string que está
sendo salvo de forma desnormalizada (schema-free).[9]



   3.4 MapReduce



    É uma estrutura de software introduzido pela Google em 2004 para o
processamento de problemas altamente distribuíveis em grandes conjuntos de
dados,usando um grande número de computadores (nós). O MapReduce
permite processamento distribuído do mapa e as operações de redução. Desde
que cada operação de mapeamento é independente dos outros, todos os
mapas podem ser executadas em paralelo - embora na prática ele é limitado
pelo número de fontes de dados independentes e / ou o número de CPUs perto
de cada fonte.[9]



   4. TÉCNICAS DE ESCALABILIDADE




   4.1 Sharding



   O sharding consiste na divisão dos dados em múltiplas tabelas do banco de
dados para escalar tanto nossas leituras como nossas escritas. [9]
4.2 Replicação – Escalar por duplicação de informações



   As informações são copiadas em mais de um banco para aumentar a
capacidade de recuperar estas informações. O mesmo é subdividido em duas
arquiteturas principais:

      •   Master-Slave:

             Cada escrita em banco resulta em N x escritas onde N é o
          número de slaves. Neste caso temos um banco “Master” que
          propaga cada escrita para os bancos “slaves”. Isto aumenta a nossa
          velocidade de leitura, mas não melhora em nada nossa capacidade
          de escrita.[10]

      •   Multi-Master:

            Aumentamos o número de Masters em nosso sistema e assim
          aumentamos nossa capacidade de escrita. Esta abordagem pode
          gerar conflitos.[10]



   5. CLASSIFICAÇÃO DO BANCO DE DADOS



   5.1 Arquitetura



        Quando à distribuição de dados, certos sistemas promovem o
particionamento e a replicação dos dados, enquanto outros deixam essa tarefa
para o cliente. A maioria das soluções é distribuída, como é caso do Amazon
Dynamo do CouchDB, do MongoDb, do BigTable e do Cassandra.[4]



   5.2 Armazenamento



       Temos os bancos que mantêm suas informações em memória
realizando persistências ocasionais; aqueles que mantêm suas informações
em disco, como são os casos do CouchDb e do MongoDb; e aqueles
configuráveis, tais como BigTable e o Cassandra.[4]
5.3 Modelo de Dados



  •   Chave/Valor:

        Baseia-se numa coleção de chaves únicas e de valores, os quais
      são associados. [4]

          Ex: Dynamo

  •   Documentos

        Os documentos são as unidades básicas de armazenamento e
  estes não utilizam qualquer tipo de estruturação pré-definida, como é o
  caso das tabelas do modelo relacional. [4]

        Ex: CouchDB

  •   Colunas

          Mudou-se de orientação o registro para orientação a colunas
  (tributos). [4]

        Ex: Cassandra, BigTable.

  •   Grafo:

        Os dados são armazenados em nós de um grafo cujas arestas
  representam o tipo de associação entre esses nós. [4]

        Ex: Neo4J



6. VANTAGENS x DESVANTAGENS



6.1 Vantagens:

  •   Escalabilidade Maciça

  •   Alta Disponibilidade

  •   Baixo Custo

  •   Previsível a Elasticidade

  •   Esquema de flexibilidade, dados esparsos e semi-estruturados.
6.2 Desvantagens:

       •   Capacidade Limitada de Consulta

       •   Não existe padronização

       •   Portabilidade pode ser um problema

       •   Insuficiente Controle de Acesso



   7. SGBDs



           • Apache Cassandra

         Desenvolvido inicialmente pelo site de relacionamento Facebook, é um
projeto de sistema de banco de dados distribuído, altamente escalável, que foi
desenvolvido na plataforma Java.[9]

           • BigTable

        Foi desenvolvido pelo Google, para distribuir dados por centenas de
servidores e escalar por conjuntos de dados de até 1 petabyte.[9]

           • Dynamo

          Desenvolvido pela Amazon em 2007, foi criado para oferecer
armazenamento de valores-chaves de dados de alta disponibilidade, permitindo
atualizações para sobreviver às falhas de servidor e rede. [9]




   8. EMPRESAS QUE UTILIZAM O NoSQL



    Facebook, Google, Yahoo, The New York Times, Amazon, Ebay, Twitter,
entre outros.
REFERÊNCIAS



[1] NASCIMENTO, Jean - NoSQL - você realmente sabe do que estamos
falando? Disponível em:
http://imasters.com.br/artigo/17043/bancodedados/nosql_voce_realmente_sabe
_do_que_estamos_falando/, acessado em: 8 de Novembro de 2011.

[2] NASCIMENTO, Jean , aka Suissa - “Introdução ao NoSQL” Disponivel em:
http://www.nosqlbr.com.br/introducao-ao-nosql.html, acessado em: 8 de
novembro de 2011.

[3] FERREIRA, Edmar, “Introdução ao NoSQL parte I” Disponível em:
http://escalabilidade.com/2010/03/08/introducao-ao-nosql-parte-i/, acessado em
9 de novembro de 2011.

[4] BRITO,Ricardo “Bancos de Dados NoSQL x SGBDs Relacionais:Análise
Comparativa* ” Disponível em: http://www.infobrasil.inf.br/userfiles/27-05-S4-
1-68840-Bancos%20de%20Dados%20NoSQL.pdf, acessado em 10 de
novembro de 2011.

[5] FERREIRA, Edmar, “Escolhendo entre escalabilidade horizontal e
escalabilidade vertical“ Disponível em:
http://escalabilidade.com/2010/09/21/escolhendo-entre-escalabilidade-
horizontal-e-escalabilidade-vertical/, acessado em 9 de novembro de 2011.

[6] INFOWESTER “Cluster: Principais Conceitos”, Disponível em:
http://www.infowester.com/cluster.php, acessado em 9 de novembro de 2011.

[7] STEPPAT, Nico, “Bancos de dados não relacionais e o movimento
NoSQL“ Disponível em: http://blog.caelum.com.br/bancos-de-dados-nao-
relacionais-e-o-movimento-nosql/, acessado em 11 de novembro de 2011.

[8] WIKIPEDIA, “MapReduce“ Disponível em:
http://en.wikipedia.org/wiki/MapReduce, acessado em 13 de novembro de
2011.

[9] SOUZA,Talles ROCHA,André, “NoSQL Princípios e Características “
Disponível em: http://www.slideshare.net/andrerochajp/artigo-nosql, acessado
em 13 de novembro de 2011.

[10] FERREIRA, Edmar, “Introdução ao NoSQL parte II” Disponível em:
http://escalabilidade.com/2010/03/08/introducao-ao-nosql-parte-ii/, acessado
em 9 de novembro de 2011.
Artigo Nosql

Artigo Nosql

  • 1.
    CENTRO UNIVERSITÁRIO ESTÁCIODA BAHIA – FIB SISTEMAS DE INFORMAÇÃO ADEMIR T S CHAGAS NELSON ARAGÃO MESSIAS SILVA NoSQL SALVADOR – BA 2011
  • 2.
    ADEMIR T SCHAGAS NELSON ARAGÃO MESSIAS SILVA NoSQL Trabalho apresentado ao Centro Universitário Estácio da Bahia, trabalho da av2,da disciplina Banco II , do curso de Sistema de Informação, sob orientação do Prof Antônio Cordeiro SALVADOR – BA 2011
  • 3.
    NoSQL Ademir T S Chagas, Nelson Aragão, Messias Silva Resumo. Este artigo irá abordar as principais características, técnicas de escalabilidade, classificação e arquitetura do NoSQL, que é um banco de dados não relacional que tem um propósito de suprir as necessidades em demandas onde os bancos de dados tradicionais (relacionais) são ineficazes. O NoSQL é bastante utilizado pelas grandes empresas, como o Twitter, Facebook, Ebay, Google, entre outros. A sua principal característica é a escalabilidade, no qual faz aumentar a capacidade de armazenamento de dados e a velocidade. 1. INTRODUÇÃO O NoSQL surgiu da necessidade de uma performance superior e de uma alta escalabilidade. Os atuais bancos de dados relacionais são muito restritos a isso, sendo necessária a distribuição vertical de servidores, ou seja, quanto mais dados, mais memória e mais disco um servidor precisa. O NoSQL tem uma grande facilidade na distribuição horizontal, ou seja, mais dados, mais servidores, não necessariamente de alta performance. [1] Um grande utilizador desse conceito é o Google, que usa computadores de pequeno e médio porte para a distribuição dos dados; essa forma de utilização é muito mais eficiente e econômica. Além disso, os bancos de dados NoSQL são muito tolerantes a erros. Toda a informação necessária estará agrupada no mesmo registro, ou seja, em vez de você ter o relacionamento entre várias tabelas para formar uma informação, ela estará em sua totalidade no mesmo registro. [1] 2. COMPARATIVO ENTRE BD RELACIONAL E NÃO RELACIONAL (NoSQL) Banco de Dados Relacionais • O que é: baseia-se em que todos os dados estão guardados em tabelas, pelo conceito de entidade e relacionamento. Os dados são separados de forma única, tentando diminuir ao máximo a
  • 4.
    redundância, pois ainformação é criada pelo conjunto dos dados, onde são as relações entre as tabelas que fazem esse serviço. • Características: Tabelas, schema definido, hierarquia, redundância mínima, entidade e relacionamento, formas normais, transações ACID (Atomicidade, Consistência, Isolamento, Durabilidade). • Escalabilidade: Devido à estruturação do modelo é possível, mas complexo. • Consistência: Ponto forte do Modelo Relacional. A regra de consistência presente garante um maior rigor à consistência das informações. • Disponibilidade: Este modelo não suporta eficientemente grande demanda, dado a dificuldade e distribuição de dados. • Necessidades: Sistemas locais, financeiros, corporativos; segurança da informação; consistência dos dados. • SGBDs: DB2, Firebird, InterBase, Microsoft SQL Server, MySQL, Oracle, PostgreSQL • Cases: SAP, OpenERP, Previdência Social, Caixa, Itaú, Salesforce, Vale. Banco de Dados Não Relacionais (NoSQL) • O que é: Uma solução alternativa para os bancos de dados relacionais possuem uma alta escalabilidade e desempenho. • Características: Registros, schema-free, tolerância à falha, escalabilidade, clusterização, mapreduce, sharding. • Escalabilidade: É sem dúvida a principal vantagem do NoSQL. Possui mais flexibilidade na inclusão de dados por não possuir estrutura. • Consistência: Não garante a consistência da informação, caso nenhuma informação seja atualizada, retornará a todos os pedintes o mesmo valor.
  • 5.
    • Disponibilidade: Outroponto forte do BD NoSQL. Possui um alto grau de distribuição de dados, e garante um maior numero de solicitações. • Necessidades: sistemas em nuvem, análises sociais, alta escalabilidade, performance na consulta/escrita, replicação. • SGBDs: Oracle NoSQL, Cassandra, BigTable, MongoDB, CouchDB, Dynamo. • Cases: Twitter, Facebook, Digg, Amazon, LinkedIN, Google, Yahoo, The New York Times. 3. CARACTERÍSTICAS 3.1 Escalabilidade Horizontal Significa adicionar um novo servidor e um sistema de software que permita a distribuição do trabalho entre múltiplas máquinas.[3] 3.2 Clusterização Compreende um banco de dados armazenado e gerenciado por mais de um servidor, provê uma alta disponibilidade e um alto desempenho do sistema. Assim, a organização se beneficia diminuindo o tempo de inoperabilidade do
  • 6.
    banco de dados.Esse processo vem como uma solução para reduzir gastos com estrutura de hardware.[6] 3.3 Schema-Free Um dos fatores que contribuem para um banco de dados NoSQL escalar é por causa da ausência de um schema (schema free). Todos os novos bancos tem em comum que eles são key-value stores, ou seja, salvam,como o nome sugere, um conjunto de entradas formadas por uma chave associada a um valor e o valor poderia ser de qualquer tipo, um binário ou string que está sendo salvo de forma desnormalizada (schema-free).[9] 3.4 MapReduce É uma estrutura de software introduzido pela Google em 2004 para o processamento de problemas altamente distribuíveis em grandes conjuntos de dados,usando um grande número de computadores (nós). O MapReduce permite processamento distribuído do mapa e as operações de redução. Desde que cada operação de mapeamento é independente dos outros, todos os mapas podem ser executadas em paralelo - embora na prática ele é limitado pelo número de fontes de dados independentes e / ou o número de CPUs perto de cada fonte.[9] 4. TÉCNICAS DE ESCALABILIDADE 4.1 Sharding O sharding consiste na divisão dos dados em múltiplas tabelas do banco de dados para escalar tanto nossas leituras como nossas escritas. [9]
  • 7.
    4.2 Replicação –Escalar por duplicação de informações As informações são copiadas em mais de um banco para aumentar a capacidade de recuperar estas informações. O mesmo é subdividido em duas arquiteturas principais: • Master-Slave: Cada escrita em banco resulta em N x escritas onde N é o número de slaves. Neste caso temos um banco “Master” que propaga cada escrita para os bancos “slaves”. Isto aumenta a nossa velocidade de leitura, mas não melhora em nada nossa capacidade de escrita.[10] • Multi-Master: Aumentamos o número de Masters em nosso sistema e assim aumentamos nossa capacidade de escrita. Esta abordagem pode gerar conflitos.[10] 5. CLASSIFICAÇÃO DO BANCO DE DADOS 5.1 Arquitetura Quando à distribuição de dados, certos sistemas promovem o particionamento e a replicação dos dados, enquanto outros deixam essa tarefa para o cliente. A maioria das soluções é distribuída, como é caso do Amazon Dynamo do CouchDB, do MongoDb, do BigTable e do Cassandra.[4] 5.2 Armazenamento Temos os bancos que mantêm suas informações em memória realizando persistências ocasionais; aqueles que mantêm suas informações em disco, como são os casos do CouchDb e do MongoDb; e aqueles configuráveis, tais como BigTable e o Cassandra.[4]
  • 8.
    5.3 Modelo deDados • Chave/Valor: Baseia-se numa coleção de chaves únicas e de valores, os quais são associados. [4] Ex: Dynamo • Documentos Os documentos são as unidades básicas de armazenamento e estes não utilizam qualquer tipo de estruturação pré-definida, como é o caso das tabelas do modelo relacional. [4] Ex: CouchDB • Colunas Mudou-se de orientação o registro para orientação a colunas (tributos). [4] Ex: Cassandra, BigTable. • Grafo: Os dados são armazenados em nós de um grafo cujas arestas representam o tipo de associação entre esses nós. [4] Ex: Neo4J 6. VANTAGENS x DESVANTAGENS 6.1 Vantagens: • Escalabilidade Maciça • Alta Disponibilidade • Baixo Custo • Previsível a Elasticidade • Esquema de flexibilidade, dados esparsos e semi-estruturados.
  • 9.
    6.2 Desvantagens: • Capacidade Limitada de Consulta • Não existe padronização • Portabilidade pode ser um problema • Insuficiente Controle de Acesso 7. SGBDs • Apache Cassandra Desenvolvido inicialmente pelo site de relacionamento Facebook, é um projeto de sistema de banco de dados distribuído, altamente escalável, que foi desenvolvido na plataforma Java.[9] • BigTable Foi desenvolvido pelo Google, para distribuir dados por centenas de servidores e escalar por conjuntos de dados de até 1 petabyte.[9] • Dynamo Desenvolvido pela Amazon em 2007, foi criado para oferecer armazenamento de valores-chaves de dados de alta disponibilidade, permitindo atualizações para sobreviver às falhas de servidor e rede. [9] 8. EMPRESAS QUE UTILIZAM O NoSQL Facebook, Google, Yahoo, The New York Times, Amazon, Ebay, Twitter, entre outros.
  • 10.
    REFERÊNCIAS [1] NASCIMENTO, Jean- NoSQL - você realmente sabe do que estamos falando? Disponível em: http://imasters.com.br/artigo/17043/bancodedados/nosql_voce_realmente_sabe _do_que_estamos_falando/, acessado em: 8 de Novembro de 2011. [2] NASCIMENTO, Jean , aka Suissa - “Introdução ao NoSQL” Disponivel em: http://www.nosqlbr.com.br/introducao-ao-nosql.html, acessado em: 8 de novembro de 2011. [3] FERREIRA, Edmar, “Introdução ao NoSQL parte I” Disponível em: http://escalabilidade.com/2010/03/08/introducao-ao-nosql-parte-i/, acessado em 9 de novembro de 2011. [4] BRITO,Ricardo “Bancos de Dados NoSQL x SGBDs Relacionais:Análise Comparativa* ” Disponível em: http://www.infobrasil.inf.br/userfiles/27-05-S4- 1-68840-Bancos%20de%20Dados%20NoSQL.pdf, acessado em 10 de novembro de 2011. [5] FERREIRA, Edmar, “Escolhendo entre escalabilidade horizontal e escalabilidade vertical“ Disponível em: http://escalabilidade.com/2010/09/21/escolhendo-entre-escalabilidade- horizontal-e-escalabilidade-vertical/, acessado em 9 de novembro de 2011. [6] INFOWESTER “Cluster: Principais Conceitos”, Disponível em: http://www.infowester.com/cluster.php, acessado em 9 de novembro de 2011. [7] STEPPAT, Nico, “Bancos de dados não relacionais e o movimento NoSQL“ Disponível em: http://blog.caelum.com.br/bancos-de-dados-nao- relacionais-e-o-movimento-nosql/, acessado em 11 de novembro de 2011. [8] WIKIPEDIA, “MapReduce“ Disponível em: http://en.wikipedia.org/wiki/MapReduce, acessado em 13 de novembro de 2011. [9] SOUZA,Talles ROCHA,André, “NoSQL Princípios e Características “ Disponível em: http://www.slideshare.net/andrerochajp/artigo-nosql, acessado em 13 de novembro de 2011. [10] FERREIRA, Edmar, “Introdução ao NoSQL parte II” Disponível em: http://escalabilidade.com/2010/03/08/introducao-ao-nosql-parte-ii/, acessado em 9 de novembro de 2011.