SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
Bancos de Dados nas Nuvens:
     Uma Visão Geral

       Ronaldo S. Mello
        GBD/INE/CTC/UFSC

           Outubro 2012
Sumário
1.   Introdução à Computação nas Nuvens
2.   Gerência de Dados na Nuvem
3.   Categorias de BDs na Nuvem
4.   BDs No-SQL
5.   Considerações Finais
Sumário
1.   Introdução à Computação nas Nuvens
2.   Gerência de Dados na Nuvem
3.   Categorias de BDs na Nuvem
4.   BDs No-SQL
5.   Considerações Finais
Computação na Nuvem (Cloud Computing)
 Paradigma de oferta de serviços remotos de
  computação
  – Via Internet ou outra infraestrutura de rede
Computação na Nuvem
 Objetivos
  – Atendimento em larga escala de usuários e organizações
    sem infraestrutura computacional ou capital
  – Atendimento de organizações com requisitos dinâmicos
    em termos de demanda computacional
 Características principais dos serviços oferecidos
  – Baixo custo (ou gratuitos)
  – Transparência de acesso
  – Elasticidade (extensão/retração de serviços sob
    demanda)
      Analogia com serviços de luz, água, internet, ...
Níveis de Oferta de Serviços
 Hardware (Infraestrutura) (IaaS)
  – Servidores, disco, rede, …
      Demanda de processamento, armazenamento, ...
  – Exemplo: Amazon elastic cloud computing
 Plataformas (PaaS)
  – SO, ambientes de desenvolvimento, linguagens
   de programação
      Exemplo: Microsoft Azure
Níveis de Oferta de Serviços
 Software (SaaS)
  – Propósitos específicos e execução em diferentes
   dispositivos
     Laptops, celulares, etc
  – Exemplo: Google docs
 Gerência de Dados (DaaS)
  – SGBDs nas nuvens
     Exemplos: Amazon S3, Cassandra, Mongo DB, ...
Sumário
1.   Introdução à Computação nas Nuvens
2.   Gerência de Dados na Nuvem
3.   Categorias de BDs na Nuvem
4.   BDs No-SQL
5.   Considerações Finais
Gerência de Dados na Nuvem
 Vantagens
  – Redução de custos para aquisição de SGBD
  – Delegação de tarefas de administração de dados
     Exemplo: Tuning, backup, ... do BD
  – Escalável para grandes volumes de dados
 Arquitetura baseada em Data Centers
SGBDs na Nuvem
 Requisitos importantes
  – Escalabilidade
  – Disponibilidade
  – APIs simples para acesso
     Evita overhead com parsing/execução de
      comandos de linguagens de BD
  – Alto desempenho
  – Custo elástico
     Proporcional ao uso
Tecnologias para Armazenamento e
        Acesso a Dados na Nuvem
  1) Modelos de Programação
   – Exemplo: MapReduce (2 operações)
       Objetivo: paralelizar o processamento de grande volume de dados
          – Paradigma “dividir para conquistar”
       Map: recebe uma fonte de dados e retorna um conjunto de pares
        (chave, valor)
       Reduce: recebe uma coleção de pares (chave, valor) e retorna um
        resultado sumarizado

/* Exemplo: determinar frequência de palavras em docs Web */

MAP(URL key,String value)→ LIST(String key,Int value);

REDUCE(String key,Int value)→ LIST(String key,Int value);
MapReduce - Exemplo
MapReduce - Exemplo




 - Divide a massa de dados entre servidores
•
 - Gera um mapeamento dos dados para a característica a ser
processada (“palavras e suas frequências”)
MapReduce - Exemplo




 - Coleta os pares (chave,valor) produzidos em cada servidor
•
 - Gera o resultado final sumarizado (“frequência total de cada palavra”)
Tecnologias para Armazenamento e
    Acesso a Dados na Nuvem

2) Sistemas de arquivos
– Exemplos:
   GFS (Google File System)
     – Otimizado para acesso a grandes volumes de dados
     – Sistema de arquivos distribuídos em data centers
   HDFS (Hadoop File System)
     – Similar ao GFS
     – Desenvolvido pela Apache
     – Open source
Google File System (GFS)
 Arquivos organizados em partições (chunks)
  – Chunks: porções de BigTables
 Um cluster possui 1 nodo Master e nodos Chunk Server
  – Master : índices e catálogos de metadados
  – Chunk Server : arquivos de dados
 Foco em operações read e
  append
 Cada chunk replicado
  pelo menos 3x
Hadoop File System (HDFS)
 Arquitetura também é Master/Slave
 Centrada em processamento MapReduce
  – Nodos slave podem manter dados e processar
    tarefas Map e Reduce
  – Nodos master
     Mantêm índices e
      metadados
     Controlam
      processos
      MapReduce
     Podem manter
      dados, para melhor
      eficiência de acesso
Tecnologias para Armazenamento e
    Acesso a Dados na Nuvem
3) Novas estruturas de acesso
  – Exemplo: DHT (Distributed Hash Table)
     Armazenamento e acesso baseado em hash para
      grandes volumes de dados
        – Cada valor de chave K mapeia para o conjunto de
          nodos que possuem K
        – Cada nodo com seu índice hash local que indica a
          localização de K
        – Cada nodo mantém sua cópia da DHT
DHT - Exemplo




                 Distributed
Hash table       Hash table
BDs na Nuvem - Transações
             ACID                         BASE
      (BDs convencionais)             (BDs na nuvem)
Atomicidade                 BAsically Available
                            ● BD por default está disponível

Consistência
                            Soft State
Isolamento                  ● BD não necessariamente está sempre

                            consistente
Durabilidade
                            Eventually Consistent
                            ●  BD torna-se consistente em um
                            determinado momento




                            Consistência eventual (fraca)
Sumário
1.   Introdução à Computação nas Nuvens
2.   Gerência de Dados na Nuvem
3.   Categorias de BDs na Nuvem
4.   BDs No-SQL
5.   Considerações Finais
Categorias de BDs na Nuvem
                          Nativo                     Não-Nativo

                                                   Amazon RDS
  Relacional             SQL Azure
                                                  Relational Cloud



                 Amazon S3                       Couch DB
                             (BDs chave-valor)              (BDs documento)
                 Voldemort                       Mongo DB
Não-Relacional                     HBase                            Neo4j
                  (BDs coluna)                       (BDs grafo)
                                 Cassandra                         Orient DB

           SQL
Categorias de BDs na Nuvem
                          Nativo                 Não-Nativo

                                               Amazon RDS
   Relacional            SQL Azure
                                              Relational Cloud



                Amazon S3                    Couch DB
            SGBDRs construídos para operar na nuvem, documento)
                         (BDs chave-valor)          (BDs
               Voldemort
            ou seja, embutem funcionalidades deDB
                                           Mongo gerência
Não-Relacional dados adequadas Table SGBD na nuvem Neo4j
            de              Big a um
                  (BDs coluna)                   (BDs grafo)
                                 Cassandra                     Orient DB

            SQL
Categorias de BDs na Nuvem
                         Nativo                  Não-Nativo

                                               Amazon RDS
  Relacional            SQL Azure
                                              Relational Cloud



                 Amazon S3                   Couch DB
                          SGBDRs não concebidos para a documento)
                           (BDs chave-valor)          (BDs nuvem,
                 Voldemortmas que podem ser executados na nuvem
                                             Mongo DB
Não-Relacional             através da utilização de serviços de
                                Big Table                     Neo4j
                           gerenciamento adicionais grafo)
                  (BDs coluna)                     (BDs
                              Cassandra                    Orient DB

           SQL
Categorias de BDs na Nuvem
                          Nativo                     Não-Nativo

                                              Amazon RDS
                          SGBDs não-relacionais concebidos para a
  Relacional             SQL Azure
                          nuvem, ou seja, baseados em modelos de
                                            Relational Cloud
                          dados propostos para a nuvem


                 Amazon S3                       Couch DB
                             (BDs chave-valor)              (BDs documento)
                 Voldemort                       Mongo DB
Não-Relacional                     HBase                            Neo4j
                  (BDs coluna)                       (BDs grafo)
                                 Cassandra                         Orient DB
           SQL
Categorias de BDs na Nuvem
                          Nativo                     Não-Nativo

                                             Amazon RDS
                            SGBDs não-relacionais não concebidos
  Relacional             SQL Azure
                            para a nuvem, mas adaptados com
                                            Relational Cloud
                            recursos de gerência de dados para uso
                            na nuvem

                 Amazon S3                       Couch DB
                             (BDs chave-valor)              (BDs documento)
                 Voldemort                       Mongo DB
Não-Relacional                     HBase                            Neo4j
                  (BDs coluna)                       (BDs grafo)
                                 Cassandra                         Orient DB

           SQL
Categorias de BDs na Nuvem
                          Nativo                     Não-Nativo

                                                   Amazon RDS
  Relacional             SQL Azure
                                                  Relational Cloud



                 Amazon S3                       Couch DB
                             (BDs chave-valor)              (BDs documento)
                 Voldemort                       Mongo DB
Não-Relacional                     HBase                            Neo4j
                  (BDs coluna)                       (BDs grafo)
                                 Cassandra                         Orient DB

           SQL                         BDs No-SQL
Sumário
1.   Introdução à Computação nas Nuvens
2.   Gerência de Dados na Nuvem
3.   Categorias de BDs na Nuvem
4.   BDs No-SQL
5.   Considerações Finais
No-SQL (Not Only SQL)
 Movimento a favor do desenvolvimento de SGBDs
  não-relacionais para a gerência de dados na
  nuvem
 Principais Características (foco)
  – Grande volume de dados
  – Consistência fraca
  – Estruturas de armazenamento/acesso simples
      Interfaces de acesso simples
 Principais aplicações
  – Redes sociais, Web search engines
BDs No-SQL
 Principais abordagens
  – BD chave-valor
     Exemplo: Amazon S3
  – BD de coluna
                            Alta heterogeneidade
     Exemplo: Cassandra   em termos de modelos
  – BD de documentos              de dados!
     Exemplo: CouchDB
  – BD de grafo
     Exemplo: Neo4j
Amazon S3 (Simple Storage Service)
 Desenvolvido pela Amazon.com Inc.
 Modelo chave-valor
  – API simples: get(key) e put(key, value)
 Não suporta
  – Definição de esquemas
  – Relacionamentos entre dados
  – Linguagem de consulta
Modelo Chave-Valor




Outro exemplo:

(“XML Companion”, “(ISBN, XXX), (edição, 4), ...”)
Cassandra
 Criado pelo Facebook e mantido atualmente pela
  Apache
  – Utilizado pelo eBay e Twitter
 Suporta
  – Definição de esquemas
  – API proprietária
  – Linguagem de consulta
 Não suporta
  – Definição de relacionamentos entre dados
Cassandra
 Modelo de dados baseado em coluna
  – Noção de família de colunas
     Lista ordenada de colunas
       – Armazenamento clusterizado
     Indexada por uma chave
     Keyspace
       – Conjunto de família de colunas
  – Uma coluna pode ter aninhamentos
     Super-coluna (objeto complexo)
Modelo baseado em Coluna
API Thrift
 Modificação de dados
  – Inclusão/exclusão de uma ou mais colunas
  – Exemplos
      insert(), batch_insert() (inclui várias colunas), remove(), ...
 Consulta a dados
  – Busca nomes de colunas, seus conteúdos (incluindo
    sub-colunas) a partir de uma chave ou de uma faixa de
    chaves
  – Exemplos
      get() (retorna colunas a partir de 1 chave), multiget()
       (várias chaves), get_slice() (faixa de chaves), ...
CQL (Cassandra Query Language)
 DDL
  – Criação de Keyspaces
  – Criação de famílias de colunas para keyspaces
 DML
  – Inserção/atualização de valores de colunas de uma
    família de colunas, dada uma chave
  – Remoção de colunas ou valores de colunas de uma
    família de colunas, dada uma chave
  – Consulta a valores de colunas de famílias de
    colunas
CQL - Exemplo
   CREATE KEYSPACE Livraria
   WITH strategy_class = SimpleStrategy
   AND strategy_options:replication_factor = 3;

   USE Livraria;


   /* ainda não há suporte para inserção de
   super-colunas */

   CREATE COLUMNFAMILY Autores
   (Key text PRIMARY KEY,
    Email text, Biografia text);

   CREATE COLUMNFAMILY Livros
   (Key text PRIMARY KEY,
    ISQN bigint,
    Ano int,
    Autor text);
   WHERE Ano > 2000;
CQL - Exemplo
   INSERT INTO Autores (Key, Email, Biografia)
   VALUES (Emmanuel Silva,
   'emmanuel@email.com',
   'Biografia do autor aqui');


   INSERT INTO Livros (Key, ISQN, Ano, Autor)
   VALUES (181919191, 2007, 'Emmanuel Silva');

   UPDATE Autores
   SET Email = 'Esilva@gmail.com'
   WHERE KEY = Emmanuel Silva;

   DELETE COLUMNS ISQN
    FROM Livros WHERE KEY = Aprendendo Java;

   SELECT FIRST 10 REVERSED Ano, Autor
   FROM Livros
   WHERE Ano > 2000;
Couch DB
 Desenvolvido pela IBM
  – Mantido atualmente pela Apache
 Não suporta
  – Definição de esquemas
  – Relacionamentos entre dados
  – Linguagem de consulta
 Modelo de dados baseado em documento
  – Noção de um objeto complexo (BDOO)
      Atributos com domínios simples ou complexos (listas ou registros)
  – Armazenamento no formato de objetos Java JSON
 Indexação árvore-B de atributos de documentos
Modelo Baseado em Documento
{ "_id":"discussion_tables",     Atributos default
 "_rev":"D1C946B7",
 "Sunrise":true,
 "Sunset":false,
 "FullHours":[1,2,3,4,5,6,7,8,9,10],
 "Activities": [
   {"Name":"Football", "Duration":2, "DurationUnit":"Hours"},
   {"Name":"Breakfast", "Duration":40, "DurationUnit":"Minutes",
        "Attendees":["Jan", "Damien", "Laura", "Gwendolyn", "Roseanna"]} ]   }

{
 "_id":"some_doc_id",                                  Objetos complexos JSON
 "_rev":"D1C946B7",
 "Subject":"I like Plankton",
 "Author":"Rusty",
 "PostedDate":"2006-08-15T17:30:12-04:00",
 "Tags":["plankton", "baseball", "decisions"],
 "Body":"I decided today that I don't like baseball. I like plankton."    }
Acesso a Dados
 API proprietária
  – Acesso via aplicação ou HTTP
  – Unidade de atualização: documento
  – Recuperação de documentos completos
      filtros apenas por atributo(s) pré-definidos
        – ID do doc, ID da revisão, ...

 Principais operações
  – Get (busca)
  – Post (similar a um insert com ID gerado pelo SGBD)
  – Delete
API - Exemplos
/* busca por ID do documento */
GET http://mydatabase:5984/discussion_tables

/* busca 10 documentos a partir de IDs que iniciam com 'doc2' */
GET http://mydatabase:5984/_all_docs?startkey="doc2"&limit=10

/* inserção de novo documento */
POST http://mydatabase:5984{
  "Subject":"I like Plankton",
  "Author":"Rusty",
  "PostedDate":"2006-08-15T17:30:12-04:00",
  "Tags":["plankton", "baseball", "decisions"],
  "Body":"I decided today that I don't like baseball. I like
plankton."}

/* remove documentos com um certo ID de revisão */
DELETE http://mydatabase:5984/some_doc?rev=1582603387
Neo4j
 Desenvolvido pela Neo Technology
 Não suporta definição de esquemas
 Suporte opcional a transações, deadlock e bloqueios
 Modelo de dados baseado em grafo
   – Nodos
       Itens de dados com ID e atributos
   – Arestas direcionadas e rotuladas
       Relacionamentos entre dados
       Podem ter atributos
   – Tipos de atributos
       Simples ou arrays de tipos simples
 Indexa atributos de nodos e arestas via listas invertidas
Modelo Baseado em Grafo
Acesso a Dados
 API Rest
  – Suporta acesso via HTTP
  – Principais funcionalidades
     I/E de nodos e de relacionamentos
     I/A/E de atributos
     Navegação em grafos
       – Indicação do nodo de partida, critério de parada,
         restrições (filtros) para visita a nodos, tipo de busca
         (largura ou prof.), ...
API REST - Exemplos
     /* Cria 2 nodos com atributos e 1 aresta */
     URI firstNode = createNode();
     addProperty( firstNode, "name", "John");
     URI secondNode = createNode();
     addProperty( secondNode, "name", "Sara");
     URI relation = addRelationship( firstNode,
     secondNode, "friend");

     /* Varredura em profundidade, pesquisando uma
     única vez os atributos dos nodos ligados pelo
     relacionamento friend */
     ...
     TraversalDescription t = new
     TraversalDescription();
     t.setOrder(TraversalDescription.DEPTH_FIRST);
     t.setUniqueness(TraversalDescription.NODE);
     t.setReturnFilter(TraversalDescription.ALL);
     t.setRelationships(new Relationship( "friend",
     Relationship.OUT));
     ...
Cypher Query Language
 Linguagem de consulta do Neo4j
 Sintaxe básica
  – Bloco START-MATCH-WHERE-RETURN
      START
       – Nodos alvo da consulta
      MATCH
       – Casamentos a serem feitos
      WHERE
       – Filtros
      RETURN
       – Resultado da consulta
Cypher - Exemplo
Sumário
1.   Introdução à Computação nas Nuvens
2.   Gerência de Dados na Nuvem
3.   Categorias de BDs na Nuvem
4.   BDs No-SQL
5.   Considerações Finais
BDs nas Nuvens
 Gerência de grandes volumes de dados
  – Adequado a vários tipos de aplicações
      Dados na Web, dados de sensores, dados científicos, …


 Desafios associados com a garantia da qualidade
  desta gerência on demand
  – Aumento/melhoria de infraestrutura, migração de
    dados/serviços para nodos com maior capacidade de
    processamento, particionamento de dados, ...
Tendências de Pesquisa
 Aprimoramento de gerências
  – Manipulação de dados mais robusta
      DMLs, suporte a joins, ...
  – Consistência de transações
  – Segurança (confiabilidade) de dados armazenados
    remotamente
 Mapeamento relacional-NoSQL
  – Visões relacionais sobre modelos de dados NoSQL
 Integração/Interoperabilidade
  – Matching de esquemas/dados heterogêneos, visando
    consultas a várias fontes
Bancos de Dados nas Nuvens:
     Uma Visão Geral

       Ronaldo S. Mello
        ronaldo@inf.ufsc.br

           Outubro 2012

Mais conteúdo relacionado

Mais procurados

01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basicoAmadeo Santos
 
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
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KJulien Anguenot
 
High Performance Data Analysis (HPDA): HPC - Big Data Convergence
High Performance Data Analysis (HPDA): HPC - Big Data ConvergenceHigh Performance Data Analysis (HPDA): HPC - Big Data Convergence
High Performance Data Analysis (HPDA): HPC - Big Data Convergenceinside-BigData.com
 
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...Leinylson Fontinele
 
Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Mario Sergio
 
Banco de Dados II Aula 02 - Modelagem de Dados (Definição, Modelo conceitual)
Banco de Dados II  Aula 02 - Modelagem de Dados (Definição, Modelo conceitual)Banco de Dados II  Aula 02 - Modelagem de Dados (Definição, Modelo conceitual)
Banco de Dados II Aula 02 - Modelagem de Dados (Definição, Modelo conceitual)Leinylson Fontinele
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosDaniela Macedo
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionaisalexculpado
 
Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02Carlos Barbieri
 
Introdução a Ciência de Dados
Introdução a Ciência de DadosIntrodução a Ciência de Dados
Introdução a Ciência de DadosNauber Gois
 
DataOps - The Foundation for Your Agile Data Architecture
DataOps - The Foundation for Your Agile Data ArchitectureDataOps - The Foundation for Your Agile Data Architecture
DataOps - The Foundation for Your Agile Data ArchitectureDATAVERSITY
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéRenzo Petri
 
warner-DP-203-slides.pptx
warner-DP-203-slides.pptxwarner-DP-203-slides.pptx
warner-DP-203-slides.pptxHibaB2
 
Big Data Analytics Architectural Patterns and Best Practices (ANT201-R1) - AW...
Big Data Analytics Architectural Patterns and Best Practices (ANT201-R1) - AW...Big Data Analytics Architectural Patterns and Best Practices (ANT201-R1) - AW...
Big Data Analytics Architectural Patterns and Best Practices (ANT201-R1) - AW...Amazon Web Services
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo RelacionalJoel Santos
 

Mais procurados (20)

01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basico
 
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
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.K
 
Introducing MLOps.pdf
Introducing MLOps.pdfIntroducing MLOps.pdf
Introducing MLOps.pdf
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
High Performance Data Analysis (HPDA): HPC - Big Data Convergence
High Performance Data Analysis (HPDA): HPC - Big Data ConvergenceHigh Performance Data Analysis (HPDA): HPC - Big Data Convergence
High Performance Data Analysis (HPDA): HPC - Big Data Convergence
 
Indexação De Livros
Indexação De LivrosIndexação De Livros
Indexação De Livros
 
Mineração de dados
Mineração de dadosMineração de dados
Mineração de dados
 
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
 
Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)
 
Banco de Dados II Aula 02 - Modelagem de Dados (Definição, Modelo conceitual)
Banco de Dados II  Aula 02 - Modelagem de Dados (Definição, Modelo conceitual)Banco de Dados II  Aula 02 - Modelagem de Dados (Definição, Modelo conceitual)
Banco de Dados II Aula 02 - Modelagem de Dados (Definição, Modelo conceitual)
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de Dados
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02
 
Introdução a Ciência de Dados
Introdução a Ciência de DadosIntrodução a Ciência de Dados
Introdução a Ciência de Dados
 
DataOps - The Foundation for Your Agile Data Architecture
DataOps - The Foundation for Your Agile Data ArchitectureDataOps - The Foundation for Your Agile Data Architecture
DataOps - The Foundation for Your Agile Data Architecture
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - Caché
 
warner-DP-203-slides.pptx
warner-DP-203-slides.pptxwarner-DP-203-slides.pptx
warner-DP-203-slides.pptx
 
Big Data Analytics Architectural Patterns and Best Practices (ANT201-R1) - AW...
Big Data Analytics Architectural Patterns and Best Practices (ANT201-R1) - AW...Big Data Analytics Architectural Patterns and Best Practices (ANT201-R1) - AW...
Big Data Analytics Architectural Patterns and Best Practices (ANT201-R1) - AW...
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo Relacional
 

Semelhante a BDs na Nuvem: Visão Geral

PASS SQLSATURDAY 663 Rio de Janeiro, Brazil
PASS SQLSATURDAY 663 Rio de Janeiro, BrazilPASS SQLSATURDAY 663 Rio de Janeiro, Brazil
PASS SQLSATURDAY 663 Rio de Janeiro, BrazilAlexandre Araujo
 
Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2Otávio Santana
 
Escalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLFernando Ike
 
Azure Cosmos DB: NoSQL na nuvem - TDC 2018 - São Paulo
Azure Cosmos DB: NoSQL na nuvem - TDC 2018 - São PauloAzure Cosmos DB: NoSQL na nuvem - TDC 2018 - São Paulo
Azure Cosmos DB: NoSQL na nuvem - TDC 2018 - São PauloRenato Groff
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisCarlo Pires
 
Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018Renato Groff
 
DocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloDocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloRenato Groff
 
AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?Pedro Pisa
 
Bancos de dados nosql (not only sql)
Bancos de dados nosql (not only sql)Bancos de dados nosql (not only sql)
Bancos de dados nosql (not only sql)Rodrigo Valerio
 
Bancos de Dados para Bibliotecarios
Bancos de Dados para BibliotecariosBancos de Dados para Bibliotecarios
Bancos de Dados para BibliotecariosLuciano Ramalho
 

Semelhante a BDs na Nuvem: Visão Geral (20)

Usando BDs NoSQL com Python
Usando BDs NoSQL com PythonUsando BDs NoSQL com Python
Usando BDs NoSQL com Python
 
DynamoDB - Uma Introdução
DynamoDB - Uma IntroduçãoDynamoDB - Uma Introdução
DynamoDB - Uma Introdução
 
No sql std
No sql stdNo sql std
No sql std
 
PASS SQLSATURDAY 663 Rio de Janeiro, Brazil
PASS SQLSATURDAY 663 Rio de Janeiro, BrazilPASS SQLSATURDAY 663 Rio de Janeiro, Brazil
PASS SQLSATURDAY 663 Rio de Janeiro, Brazil
 
Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2
 
Banco de Dados - NoSQL
Banco de Dados - NoSQLBanco de Dados - NoSQL
Banco de Dados - NoSQL
 
Comparação entre bancos de dados de modelo não relacional
Comparação entre bancos de dados de modelo não relacionalComparação entre bancos de dados de modelo não relacional
Comparação entre bancos de dados de modelo não relacional
 
Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1
 
Introdução ao Amazon Redshift
Introdução ao Amazon RedshiftIntrodução ao Amazon Redshift
Introdução ao Amazon Redshift
 
Escalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQL
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
MAC5855 - NoSQL
MAC5855 - NoSQLMAC5855 - NoSQL
MAC5855 - NoSQL
 
Azure Cosmos DB: NoSQL na nuvem - TDC 2018 - São Paulo
Azure Cosmos DB: NoSQL na nuvem - TDC 2018 - São PauloAzure Cosmos DB: NoSQL na nuvem - TDC 2018 - São Paulo
Azure Cosmos DB: NoSQL na nuvem - TDC 2018 - São Paulo
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
 
Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018
 
DocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloDocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São Paulo
 
AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?
 
Bancos de dados nosql (not only sql)
Bancos de dados nosql (not only sql)Bancos de dados nosql (not only sql)
Bancos de dados nosql (not only sql)
 
Bancos de Dados para Bibliotecarios
Bancos de Dados para BibliotecariosBancos de Dados para Bibliotecarios
Bancos de Dados para Bibliotecarios
 

Mais de PET Computação

Cooperação e Codificação de Rede Aplicadas as RSSF Industriais
Cooperação e Codificação de Rede Aplicadas as RSSF IndustriaisCooperação e Codificação de Rede Aplicadas as RSSF Industriais
Cooperação e Codificação de Rede Aplicadas as RSSF IndustriaisPET Computação
 
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e AtuaçãoRedes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e AtuaçãoPET Computação
 
MapReduce: teoria e prática
MapReduce: teoria e práticaMapReduce: teoria e prática
MapReduce: teoria e práticaPET Computação
 
Processamento e visualização tridimensional de imagens de Satelite e Radar
Processamento e visualização tridimensional de imagens de Satelite e RadarProcessamento e visualização tridimensional de imagens de Satelite e Radar
Processamento e visualização tridimensional de imagens de Satelite e RadarPET Computação
 
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...PET Computação
 
Testes de escalabilidade usando cloud
Testes de escalabilidade usando cloudTestes de escalabilidade usando cloud
Testes de escalabilidade usando cloudPET Computação
 
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...PET Computação
 
Cloud computing: evolution or redefinition
Cloud computing: evolution or redefinitionCloud computing: evolution or redefinition
Cloud computing: evolution or redefinitionPET Computação
 
Rastreamento de objetos utilizando ar drone
Rastreamento de objetos utilizando ar droneRastreamento de objetos utilizando ar drone
Rastreamento de objetos utilizando ar dronePET Computação
 
Processamento e visualização tridimensional de imagens de satelite e radar
Processamento e visualização tridimensional de imagens de satelite e radarProcessamento e visualização tridimensional de imagens de satelite e radar
Processamento e visualização tridimensional de imagens de satelite e radarPET Computação
 
Evoluindo dot project em alinhamento ao pmbok
Evoluindo dot project em alinhamento ao pmbokEvoluindo dot project em alinhamento ao pmbok
Evoluindo dot project em alinhamento ao pmbokPET Computação
 
Apresentação geral do gqs - Usabilidade na convergência digital - Customizaç...
Apresentação geral do gqs -  Usabilidade na convergência digital - Customizaç...Apresentação geral do gqs -  Usabilidade na convergência digital - Customizaç...
Apresentação geral do gqs - Usabilidade na convergência digital - Customizaç...PET Computação
 
Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
 Com a cabeça nas nuvens: montando ambientes para aplicações elásticas Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
Com a cabeça nas nuvens: montando ambientes para aplicações elásticasPET Computação
 
Redes de sensores sem fio autonômicas: abordagens, aplicações e desafios
 Redes de sensores sem fio autonômicas: abordagens, aplicações e desafios Redes de sensores sem fio autonômicas: abordagens, aplicações e desafios
Redes de sensores sem fio autonômicas: abordagens, aplicações e desafiosPET Computação
 

Mais de PET Computação (20)

Refactoring like a boss
Refactoring like a bossRefactoring like a boss
Refactoring like a boss
 
Linux em tempo real
Linux em tempo realLinux em tempo real
Linux em tempo real
 
Cooperação e Codificação de Rede Aplicadas as RSSF Industriais
Cooperação e Codificação de Rede Aplicadas as RSSF IndustriaisCooperação e Codificação de Rede Aplicadas as RSSF Industriais
Cooperação e Codificação de Rede Aplicadas as RSSF Industriais
 
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e AtuaçãoRedes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
 
MapReduce: teoria e prática
MapReduce: teoria e práticaMapReduce: teoria e prática
MapReduce: teoria e prática
 
Processamento e visualização tridimensional de imagens de Satelite e Radar
Processamento e visualização tridimensional de imagens de Satelite e RadarProcessamento e visualização tridimensional de imagens de Satelite e Radar
Processamento e visualização tridimensional de imagens de Satelite e Radar
 
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
 
Planejamento automático
Planejamento automáticoPlanejamento automático
Planejamento automático
 
Testes de escalabilidade usando cloud
Testes de escalabilidade usando cloudTestes de escalabilidade usando cloud
Testes de escalabilidade usando cloud
 
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
 
Cloud computing: evolution or redefinition
Cloud computing: evolution or redefinitionCloud computing: evolution or redefinition
Cloud computing: evolution or redefinition
 
Rastreamento de objetos utilizando ar drone
Rastreamento de objetos utilizando ar droneRastreamento de objetos utilizando ar drone
Rastreamento de objetos utilizando ar drone
 
Processamento e visualização tridimensional de imagens de satelite e radar
Processamento e visualização tridimensional de imagens de satelite e radarProcessamento e visualização tridimensional de imagens de satelite e radar
Processamento e visualização tridimensional de imagens de satelite e radar
 
Evoluindo dot project em alinhamento ao pmbok
Evoluindo dot project em alinhamento ao pmbokEvoluindo dot project em alinhamento ao pmbok
Evoluindo dot project em alinhamento ao pmbok
 
Ensinar com jogos
Ensinar com jogosEnsinar com jogos
Ensinar com jogos
 
Apresentação geral do gqs - Usabilidade na convergência digital - Customizaç...
Apresentação geral do gqs -  Usabilidade na convergência digital - Customizaç...Apresentação geral do gqs -  Usabilidade na convergência digital - Customizaç...
Apresentação geral do gqs - Usabilidade na convergência digital - Customizaç...
 
Latex
LatexLatex
Latex
 
Ferramenta git
Ferramenta gitFerramenta git
Ferramenta git
 
Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
 Com a cabeça nas nuvens: montando ambientes para aplicações elásticas Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
 
Redes de sensores sem fio autonômicas: abordagens, aplicações e desafios
 Redes de sensores sem fio autonômicas: abordagens, aplicações e desafios Redes de sensores sem fio autonômicas: abordagens, aplicações e desafios
Redes de sensores sem fio autonômicas: abordagens, aplicações e desafios
 

BDs na Nuvem: Visão Geral

  • 1. Bancos de Dados nas Nuvens: Uma Visão Geral Ronaldo S. Mello GBD/INE/CTC/UFSC Outubro 2012
  • 2. Sumário 1. Introdução à Computação nas Nuvens 2. Gerência de Dados na Nuvem 3. Categorias de BDs na Nuvem 4. BDs No-SQL 5. Considerações Finais
  • 3. Sumário 1. Introdução à Computação nas Nuvens 2. Gerência de Dados na Nuvem 3. Categorias de BDs na Nuvem 4. BDs No-SQL 5. Considerações Finais
  • 4. Computação na Nuvem (Cloud Computing)  Paradigma de oferta de serviços remotos de computação – Via Internet ou outra infraestrutura de rede
  • 5. Computação na Nuvem  Objetivos – Atendimento em larga escala de usuários e organizações sem infraestrutura computacional ou capital – Atendimento de organizações com requisitos dinâmicos em termos de demanda computacional  Características principais dos serviços oferecidos – Baixo custo (ou gratuitos) – Transparência de acesso – Elasticidade (extensão/retração de serviços sob demanda)  Analogia com serviços de luz, água, internet, ...
  • 6. Níveis de Oferta de Serviços  Hardware (Infraestrutura) (IaaS) – Servidores, disco, rede, …  Demanda de processamento, armazenamento, ... – Exemplo: Amazon elastic cloud computing  Plataformas (PaaS) – SO, ambientes de desenvolvimento, linguagens de programação  Exemplo: Microsoft Azure
  • 7. Níveis de Oferta de Serviços  Software (SaaS) – Propósitos específicos e execução em diferentes dispositivos  Laptops, celulares, etc – Exemplo: Google docs  Gerência de Dados (DaaS) – SGBDs nas nuvens  Exemplos: Amazon S3, Cassandra, Mongo DB, ...
  • 8. Sumário 1. Introdução à Computação nas Nuvens 2. Gerência de Dados na Nuvem 3. Categorias de BDs na Nuvem 4. BDs No-SQL 5. Considerações Finais
  • 9. Gerência de Dados na Nuvem  Vantagens – Redução de custos para aquisição de SGBD – Delegação de tarefas de administração de dados  Exemplo: Tuning, backup, ... do BD – Escalável para grandes volumes de dados  Arquitetura baseada em Data Centers
  • 10. SGBDs na Nuvem  Requisitos importantes – Escalabilidade – Disponibilidade – APIs simples para acesso  Evita overhead com parsing/execução de comandos de linguagens de BD – Alto desempenho – Custo elástico  Proporcional ao uso
  • 11. Tecnologias para Armazenamento e Acesso a Dados na Nuvem 1) Modelos de Programação – Exemplo: MapReduce (2 operações)  Objetivo: paralelizar o processamento de grande volume de dados – Paradigma “dividir para conquistar”  Map: recebe uma fonte de dados e retorna um conjunto de pares (chave, valor)  Reduce: recebe uma coleção de pares (chave, valor) e retorna um resultado sumarizado /* Exemplo: determinar frequência de palavras em docs Web */ MAP(URL key,String value)→ LIST(String key,Int value); REDUCE(String key,Int value)→ LIST(String key,Int value);
  • 13. MapReduce - Exemplo - Divide a massa de dados entre servidores • - Gera um mapeamento dos dados para a característica a ser processada (“palavras e suas frequências”)
  • 14. MapReduce - Exemplo - Coleta os pares (chave,valor) produzidos em cada servidor • - Gera o resultado final sumarizado (“frequência total de cada palavra”)
  • 15. Tecnologias para Armazenamento e Acesso a Dados na Nuvem 2) Sistemas de arquivos – Exemplos:  GFS (Google File System) – Otimizado para acesso a grandes volumes de dados – Sistema de arquivos distribuídos em data centers  HDFS (Hadoop File System) – Similar ao GFS – Desenvolvido pela Apache – Open source
  • 16. Google File System (GFS)  Arquivos organizados em partições (chunks) – Chunks: porções de BigTables  Um cluster possui 1 nodo Master e nodos Chunk Server – Master : índices e catálogos de metadados – Chunk Server : arquivos de dados  Foco em operações read e append  Cada chunk replicado pelo menos 3x
  • 17. Hadoop File System (HDFS)  Arquitetura também é Master/Slave  Centrada em processamento MapReduce – Nodos slave podem manter dados e processar tarefas Map e Reduce – Nodos master  Mantêm índices e metadados  Controlam processos MapReduce  Podem manter dados, para melhor eficiência de acesso
  • 18. Tecnologias para Armazenamento e Acesso a Dados na Nuvem 3) Novas estruturas de acesso – Exemplo: DHT (Distributed Hash Table)  Armazenamento e acesso baseado em hash para grandes volumes de dados – Cada valor de chave K mapeia para o conjunto de nodos que possuem K – Cada nodo com seu índice hash local que indica a localização de K – Cada nodo mantém sua cópia da DHT
  • 19. DHT - Exemplo Distributed Hash table Hash table
  • 20. BDs na Nuvem - Transações ACID BASE (BDs convencionais) (BDs na nuvem) Atomicidade BAsically Available ● BD por default está disponível Consistência Soft State Isolamento ● BD não necessariamente está sempre consistente Durabilidade Eventually Consistent ● BD torna-se consistente em um determinado momento Consistência eventual (fraca)
  • 21. Sumário 1. Introdução à Computação nas Nuvens 2. Gerência de Dados na Nuvem 3. Categorias de BDs na Nuvem 4. BDs No-SQL 5. Considerações Finais
  • 22. Categorias de BDs na Nuvem Nativo Não-Nativo Amazon RDS Relacional SQL Azure Relational Cloud Amazon S3 Couch DB (BDs chave-valor) (BDs documento) Voldemort Mongo DB Não-Relacional HBase Neo4j (BDs coluna) (BDs grafo) Cassandra Orient DB SQL
  • 23. Categorias de BDs na Nuvem Nativo Não-Nativo Amazon RDS Relacional SQL Azure Relational Cloud Amazon S3 Couch DB SGBDRs construídos para operar na nuvem, documento) (BDs chave-valor) (BDs Voldemort ou seja, embutem funcionalidades deDB Mongo gerência Não-Relacional dados adequadas Table SGBD na nuvem Neo4j de Big a um (BDs coluna) (BDs grafo) Cassandra Orient DB SQL
  • 24. Categorias de BDs na Nuvem Nativo Não-Nativo Amazon RDS Relacional SQL Azure Relational Cloud Amazon S3 Couch DB SGBDRs não concebidos para a documento) (BDs chave-valor) (BDs nuvem, Voldemortmas que podem ser executados na nuvem Mongo DB Não-Relacional através da utilização de serviços de Big Table Neo4j gerenciamento adicionais grafo) (BDs coluna) (BDs Cassandra Orient DB SQL
  • 25. Categorias de BDs na Nuvem Nativo Não-Nativo Amazon RDS SGBDs não-relacionais concebidos para a Relacional SQL Azure nuvem, ou seja, baseados em modelos de Relational Cloud dados propostos para a nuvem Amazon S3 Couch DB (BDs chave-valor) (BDs documento) Voldemort Mongo DB Não-Relacional HBase Neo4j (BDs coluna) (BDs grafo) Cassandra Orient DB SQL
  • 26. Categorias de BDs na Nuvem Nativo Não-Nativo Amazon RDS SGBDs não-relacionais não concebidos Relacional SQL Azure para a nuvem, mas adaptados com Relational Cloud recursos de gerência de dados para uso na nuvem Amazon S3 Couch DB (BDs chave-valor) (BDs documento) Voldemort Mongo DB Não-Relacional HBase Neo4j (BDs coluna) (BDs grafo) Cassandra Orient DB SQL
  • 27. Categorias de BDs na Nuvem Nativo Não-Nativo Amazon RDS Relacional SQL Azure Relational Cloud Amazon S3 Couch DB (BDs chave-valor) (BDs documento) Voldemort Mongo DB Não-Relacional HBase Neo4j (BDs coluna) (BDs grafo) Cassandra Orient DB SQL BDs No-SQL
  • 28. Sumário 1. Introdução à Computação nas Nuvens 2. Gerência de Dados na Nuvem 3. Categorias de BDs na Nuvem 4. BDs No-SQL 5. Considerações Finais
  • 29. No-SQL (Not Only SQL)  Movimento a favor do desenvolvimento de SGBDs não-relacionais para a gerência de dados na nuvem  Principais Características (foco) – Grande volume de dados – Consistência fraca – Estruturas de armazenamento/acesso simples  Interfaces de acesso simples  Principais aplicações – Redes sociais, Web search engines
  • 30. BDs No-SQL  Principais abordagens – BD chave-valor  Exemplo: Amazon S3 – BD de coluna Alta heterogeneidade  Exemplo: Cassandra em termos de modelos – BD de documentos de dados!  Exemplo: CouchDB – BD de grafo  Exemplo: Neo4j
  • 31. Amazon S3 (Simple Storage Service)  Desenvolvido pela Amazon.com Inc.  Modelo chave-valor – API simples: get(key) e put(key, value)  Não suporta – Definição de esquemas – Relacionamentos entre dados – Linguagem de consulta
  • 32. Modelo Chave-Valor Outro exemplo: (“XML Companion”, “(ISBN, XXX), (edição, 4), ...”)
  • 33. Cassandra  Criado pelo Facebook e mantido atualmente pela Apache – Utilizado pelo eBay e Twitter  Suporta – Definição de esquemas – API proprietária – Linguagem de consulta  Não suporta – Definição de relacionamentos entre dados
  • 34. Cassandra  Modelo de dados baseado em coluna – Noção de família de colunas  Lista ordenada de colunas – Armazenamento clusterizado  Indexada por uma chave  Keyspace – Conjunto de família de colunas – Uma coluna pode ter aninhamentos  Super-coluna (objeto complexo)
  • 36. API Thrift  Modificação de dados – Inclusão/exclusão de uma ou mais colunas – Exemplos  insert(), batch_insert() (inclui várias colunas), remove(), ...  Consulta a dados – Busca nomes de colunas, seus conteúdos (incluindo sub-colunas) a partir de uma chave ou de uma faixa de chaves – Exemplos  get() (retorna colunas a partir de 1 chave), multiget() (várias chaves), get_slice() (faixa de chaves), ...
  • 37. CQL (Cassandra Query Language)  DDL – Criação de Keyspaces – Criação de famílias de colunas para keyspaces  DML – Inserção/atualização de valores de colunas de uma família de colunas, dada uma chave – Remoção de colunas ou valores de colunas de uma família de colunas, dada uma chave – Consulta a valores de colunas de famílias de colunas
  • 38. CQL - Exemplo CREATE KEYSPACE Livraria WITH strategy_class = SimpleStrategy AND strategy_options:replication_factor = 3; USE Livraria; /* ainda não há suporte para inserção de super-colunas */ CREATE COLUMNFAMILY Autores (Key text PRIMARY KEY, Email text, Biografia text); CREATE COLUMNFAMILY Livros (Key text PRIMARY KEY, ISQN bigint, Ano int, Autor text); WHERE Ano > 2000;
  • 39. CQL - Exemplo INSERT INTO Autores (Key, Email, Biografia) VALUES (Emmanuel Silva, 'emmanuel@email.com', 'Biografia do autor aqui'); INSERT INTO Livros (Key, ISQN, Ano, Autor) VALUES (181919191, 2007, 'Emmanuel Silva'); UPDATE Autores SET Email = 'Esilva@gmail.com' WHERE KEY = Emmanuel Silva; DELETE COLUMNS ISQN FROM Livros WHERE KEY = Aprendendo Java; SELECT FIRST 10 REVERSED Ano, Autor FROM Livros WHERE Ano > 2000;
  • 40. Couch DB  Desenvolvido pela IBM – Mantido atualmente pela Apache  Não suporta – Definição de esquemas – Relacionamentos entre dados – Linguagem de consulta  Modelo de dados baseado em documento – Noção de um objeto complexo (BDOO)  Atributos com domínios simples ou complexos (listas ou registros) – Armazenamento no formato de objetos Java JSON  Indexação árvore-B de atributos de documentos
  • 41. Modelo Baseado em Documento { "_id":"discussion_tables", Atributos default "_rev":"D1C946B7", "Sunrise":true, "Sunset":false, "FullHours":[1,2,3,4,5,6,7,8,9,10], "Activities": [ {"Name":"Football", "Duration":2, "DurationUnit":"Hours"}, {"Name":"Breakfast", "Duration":40, "DurationUnit":"Minutes", "Attendees":["Jan", "Damien", "Laura", "Gwendolyn", "Roseanna"]} ] } { "_id":"some_doc_id", Objetos complexos JSON "_rev":"D1C946B7", "Subject":"I like Plankton", "Author":"Rusty", "PostedDate":"2006-08-15T17:30:12-04:00", "Tags":["plankton", "baseball", "decisions"], "Body":"I decided today that I don't like baseball. I like plankton." }
  • 42. Acesso a Dados  API proprietária – Acesso via aplicação ou HTTP – Unidade de atualização: documento – Recuperação de documentos completos  filtros apenas por atributo(s) pré-definidos – ID do doc, ID da revisão, ...  Principais operações – Get (busca) – Post (similar a um insert com ID gerado pelo SGBD) – Delete
  • 43. API - Exemplos /* busca por ID do documento */ GET http://mydatabase:5984/discussion_tables /* busca 10 documentos a partir de IDs que iniciam com 'doc2' */ GET http://mydatabase:5984/_all_docs?startkey="doc2"&limit=10 /* inserção de novo documento */ POST http://mydatabase:5984{ "Subject":"I like Plankton", "Author":"Rusty", "PostedDate":"2006-08-15T17:30:12-04:00", "Tags":["plankton", "baseball", "decisions"], "Body":"I decided today that I don't like baseball. I like plankton."} /* remove documentos com um certo ID de revisão */ DELETE http://mydatabase:5984/some_doc?rev=1582603387
  • 44. Neo4j  Desenvolvido pela Neo Technology  Não suporta definição de esquemas  Suporte opcional a transações, deadlock e bloqueios  Modelo de dados baseado em grafo – Nodos  Itens de dados com ID e atributos – Arestas direcionadas e rotuladas  Relacionamentos entre dados  Podem ter atributos – Tipos de atributos  Simples ou arrays de tipos simples  Indexa atributos de nodos e arestas via listas invertidas
  • 46. Acesso a Dados  API Rest – Suporta acesso via HTTP – Principais funcionalidades  I/E de nodos e de relacionamentos  I/A/E de atributos  Navegação em grafos – Indicação do nodo de partida, critério de parada, restrições (filtros) para visita a nodos, tipo de busca (largura ou prof.), ...
  • 47. API REST - Exemplos /* Cria 2 nodos com atributos e 1 aresta */ URI firstNode = createNode(); addProperty( firstNode, "name", "John"); URI secondNode = createNode(); addProperty( secondNode, "name", "Sara"); URI relation = addRelationship( firstNode, secondNode, "friend"); /* Varredura em profundidade, pesquisando uma única vez os atributos dos nodos ligados pelo relacionamento friend */ ... TraversalDescription t = new TraversalDescription(); t.setOrder(TraversalDescription.DEPTH_FIRST); t.setUniqueness(TraversalDescription.NODE); t.setReturnFilter(TraversalDescription.ALL); t.setRelationships(new Relationship( "friend", Relationship.OUT)); ...
  • 48. Cypher Query Language  Linguagem de consulta do Neo4j  Sintaxe básica – Bloco START-MATCH-WHERE-RETURN  START – Nodos alvo da consulta  MATCH – Casamentos a serem feitos  WHERE – Filtros  RETURN – Resultado da consulta
  • 50. Sumário 1. Introdução à Computação nas Nuvens 2. Gerência de Dados na Nuvem 3. Categorias de BDs na Nuvem 4. BDs No-SQL 5. Considerações Finais
  • 51. BDs nas Nuvens  Gerência de grandes volumes de dados – Adequado a vários tipos de aplicações  Dados na Web, dados de sensores, dados científicos, …  Desafios associados com a garantia da qualidade desta gerência on demand – Aumento/melhoria de infraestrutura, migração de dados/serviços para nodos com maior capacidade de processamento, particionamento de dados, ...
  • 52. Tendências de Pesquisa  Aprimoramento de gerências – Manipulação de dados mais robusta  DMLs, suporte a joins, ... – Consistência de transações – Segurança (confiabilidade) de dados armazenados remotamente  Mapeamento relacional-NoSQL – Visões relacionais sobre modelos de dados NoSQL  Integração/Interoperabilidade – Matching de esquemas/dados heterogêneos, visando consultas a várias fontes
  • 53. Bancos de Dados nas Nuvens: Uma Visão Geral Ronaldo S. Mello ronaldo@inf.ufsc.br Outubro 2012