SlideShare une entreprise Scribd logo
1  sur  16
Interoperabilidade entre
    banco de dados


Msc. Mauro C. Pichiliani (mauro@pichiliani.com.br)
                   @pichiliani




                                                     1
Sobre mim
• Mestre e doutorando em computação pelo ITA

• Escritor da SQL Magazine, Fórum Access, Java
  Magazine, SQLServerCentral.com e outras

• Colaborador do iMasters há 10 anos

• Autor do livro “Conversando sobre banco de
  dados” (http://migre.me/ahlSY)
• Co-autor do @databasecast

• Blog: http://pichiliani.com.br
                                                 2
Roteiro

• Cenário multi-banco
• Conceitos comuns
• Interoperabilidade na administração
• Trocando objetos, dados e instruções
• Conclusão




                                         3
Cenário multi-banco (1)
• Ambientes, plataformas e bancos de dados diferentes são uma
  realidade
• O banco de dados nunca trabalha sozinho:
    – ERP, PDV, CMS, Controle de acesso, IRPF, Intranet
    – Sistemas customizados e desenvolvimento interno
    – Sistemas multi-banco
• Principais SGBDR: SQL Server, Oracle, MySQL, PostgreSQL e DB2
• Novo talento no pedaço: NoSQL e newSQL
• Não esqueça dos BDs na núvem…
• Profissionais de desenvolvimento, administração e infra devem dominar
  individualmente os bancos de dados
• E também saber como eles devem unir forças e trabalhar junto
• Tarefas comuns: montar um ambiente de testes/homologação,
  transferir dados, criar uma solução de replicação, analisar, comparar e
  estudar o desempenho de tarefas semelhantes em diferentes bancos
  de dados, etc                                                         4
Cenário multi-banco (2) - Planejamento
•   A maioria dos sistemas e aplicações trabalha com apenas um BD
•   Suporte a diferentes BDs sub-utiliza recursos do mesmo. Mas fornece algum
    tipo de escolha para o cliente
•   Geralmente software livre não se preocupa em ser multi-banco. E aplicações
    web também não
•   Aplicação multi-banco requer desenvolvimento adicional e camadas adicionais
    de software
•   Há também cenários de dados não estruturados, arquivos texto e bancos de
    dados embarcados
•   Em cenário multi-plataforma (desktop, web, app. móveis, etc) tendência é
    centralizar informações em um único BD
•   Planejamento da interoperabilidade:
      – Documentação (diagramas, especificação, fluxo de dados, etc)
      – Saiba até onde é possível ir
      – Avalie com cuidado troca de BDs para consolidar dados
      – Mudar banco de dados de aplicação existente tem impacto profundo


                                                                             5
Conceitos comuns (1)
• SGBDR (e alguns NoSQL) sofrem pressão do mercado para suportar
  recursos similares: SQL, backup, segurança, tabelas, constraints,
  programação, etc
• A execução e suporte de diversas tarefas comuns se torna um
  commodity. E o profissional deve saber como fazer a mesma tarefa
  com tecnologias diferentes
• Sempre dar atenção aos conceitos básicos e fundamentos
• Há diferenças de conceitos, nomenclaturas, siglas, especificações e
  peculiaridades para cada BD. Ex: Log, configurações, opções de
  crescimento, etc
• Foco não é comparação entre bancos de dados. Artigo “Comparando a
  dificuldade nos bancos de dados” na SQL Magazine 75
  http://migre.me/ahnEF
• EULA impede comparações de desempenho com alguns BDs
• Há testes padrões do mercado como o TPC (http://tpc.org)
• Não perca muito tempo discutindo funcionalidades ou comparando.
  Conheça suas opções e parta para o trabalho!                        6
Conceitos comuns (2)
• Alguns fornecedores se preocupam mais com interoperabilidade no BD
  do que outros
• Procure por recursos que vão além de importação/exportação

• Procure evitar formatos intermediários

• Há sempre a questão da segurança e confidencialidade

• Geralmente é preciso contar com tecnologias externas para
  conectividade: ODBC, JDBC, OLE Db, drivers específicos e conectores
• Dependendo do contexto pode ser interessante recorrer a ferramentas
  ETL do próprio fabricante ou de terceiros. Sugestões:
   –   Microsoft SQL Server Integration Server (SSIS http://migre.me/ahoeL)
   –   Oracle Database Utilities http://migre.me/ahoiZ
   –   PDI (antigo Kettle) http://kettle.pentaho.com/
   –   Talend open Studio http://migre.me/ahooW


                                                                              7
Interoperabilidade na administração (1)
• Todos os BDs possuem ferramentas de console (shell) que permitem
  trabalhar com scripts e arquivos individuais

• Fornecem boa produtividade, porém tem péssima usabilidade para
  tarefas administrativas. Não há recursos de interoperabilidade além do
  que o SO fornece (pipes)

• Tarefas administrativas podem ser realizadas por script, mas há
  ferramentas com GUI. Exemplos:
  Management Studio                   Oracle Enterprise Manager




                                                                      8
Interoperabilidade na administração (2)
  MySQL Workbench      PgAdmin




RockMongo
                       Futon




                                          9
Interoperabilidade na administração (3)
        DBArtisan da Embarcadeiro http://migre.me/ahqN9




•    Ferramentas com GUI auxiliam muito certas tarefas administrativas
•    Porém praticamente não há recursos de interoperabilidade entre dados, objetos
     e tarefas administrativas
•    Para monitoria: artigo “Monitoramento de Base de Dados” da SQL Mag. 54
     http://migre.me/ahqXE.
•    Soluções agregadoras: Nagios (http://www.nagios.org/), System Center (
                                                                               10
     http://migre.me/ahr5Y) e FogLight (http://migre.me/ahrgP)
Trocando objetos, dados e instruções (1)
•   Alguns bancos de dados possuem recursos para acessar objetos entre
    diferentes BDs junto com as instruções SQL

•   O SQL Server possui o conceito de servidores linkados: requer ODBC, provider
    OLE DB ou provider .NET

•   O Oracle possui o recurso chamado Database Link Heterogeneous Services
    (DB-LINK). Acesso a fontes de dados ODBC. http://migre.me/ahv1o
•   Linked servers e DB-Link fornecem algo do tipo:

           SELECT * FROM {FONTE_REMOTA}…{OBJETO}
•   PostgreSQL também possui DBLink mas apenas entre servidores PostgreSQL. Projetos
    alternativos:
     –   DBLink-ODBC: http://sourceforge.net/projects/dblink-odbc/
     –   DBLink-TDS: http://pgfoundry.org/projects/dblink-tds/

•   O MySQL não possui recurso semelhante. Mas há o Storage Engine FEDERATED que
    permite acessar tabelas de outro MySQL remotamente http://migre.me/ahv9e

•   Bancos NoSQL e newSQL não possuem recursos de interoperabilidade direta em
    instruções
                                                                                 11
Trocando objetos, dados e instruções (2)
•   Todos os BDs possuem recursos para importar e exportar dados. Geralmente
    no formato CSV (Comma-separated values) ou XML
•   Replicação heterogência envolve BDs de diferentes fornecedores
•   Há recursos para implementar replicação de dados síncrona, assíncrona ou
    multi-síncrona entre diferentes BDs
•   Cuidado: não confudir replicação com tecnologias para escalabilidade
    (sharding), alta disponibilidade (cluster) ou disaster e recovery
•   Deve-se planejar muito bem como será a replicação. Aspectos principais:
     –   Papéis (masters ou slaves) e locais de replicação
     –   Latência e disponibilidade
     –   Conversão de tipos de dados
     –   Fluxo de dados (direção) e forma de replicação
     –   Conflitos
     –   Objetos, filtros, índices full-text e outros elementos do banco de dados

•   Geralmente a replicação é uma maravilha quando tudo funciona bem
•   Mas quando algum problema aparece a situação vira um inferno
•   Alguns fornecedores de BD provém replicação heterogênea. Espere apenas recursos
    básicos neste contexto
•   Há diversas ferramentas de terceiros para replicações heterogêneas
•   Importante: replicar dados NÃO faz com que sistemas sejam multi-banco           12
Trocando objetos, dados e instruções (3)
•   SQL Server (> 2000) pemite replicação nativa apenas para Oracle
•   Há como montar solução utilizando servidores linkados+view+triggers
•   Oracle possui dois recursos: view materializada e Oracle Streams para
    qualquer fonte ODBC
•   PostgreSQL, MySQL, DB2, NoSQL e newSQL não possuem recursos para
    replicar dados para BD de outros fabricantes. Alternativas de terceiros:

•   Código livre:
     –   Tungsten Replicator (http://migre.me/ahvKy): replicação JDBC em linha de comando
     –   SymmetricDS (http://migre.me/ahvRw): sincronia de tabelas
     –   DBReplicator (http://dbreplicator.org/): replicação JDBC com GUI
     –   Daffodil Replicator (http://migre.me/ahwdR): versão enterprise e open source

•   Proprietárias:
     –   DBMoto (http://migre.me/ahw2g)
     –   SharePlex for Oracle (http://migre.me/ahw84)
     –   ObjectMMRS (http://migre.me/ahwnI)
     –   InfoSphere Data Replication (http://migre.me/ahww6)

•   Nota: algumas ferramentas ETL também fazem replicação heterogênea
                                                                                     13
Trocando objetos, dados e instruções (4)
•   Em muitas situações desejamos converter uma instrução SQL de um banco
    para outro
•   Formatador on-line de SQL: http://migre.me/ahwIi
•   Testadores de SQL: SQLFiddle (http://sqlfiddle.com/) e Ideone (
    http://t.co/1VqDRoZs) e Try MongoDB (http://try.mongodb.org/)
•   SwisSQL Console (http://migre.me/ahxef) separação e conversão de instruções




                                                                           14
Trocando objetos, dados e instruções (5)
•   SQL Translator (http://migre.me/ahxjR) scripts do Linux para conversão de
    instruções SQL

•   SQL Injection Knowledge Base: http://t.co/Hc6PLWdE

•   Tabelas, guias e posters de conversões de sintaxe SQL e NoSQL. Nota:
    atualmente há muitas linguagens *QL de acordo com cada produto

•   Site com lista de Cheat-Sheets: http://www.cheat-sheets.org/

•   Diversas APIs, bibliotecas, frameworks, camadas, components, design patters e
    arquiteturas para trabalhar com sistemas multi-banco

•   Exemplo: SwisSQL API (http://migre.me/ahxIL)

•   Muitos são ORM e servidores de cache também! Cuidado com soluções que
    prometem interoperabilidade e na verdade substituiem o seu BD por outro
•   Há soluções amálgamas e com alguma compatibilidade entre BDs
     – Fyracle (Oracle-mode Firebird) http://migre.me/ahoy0
     – DotNetFirebird (Access, MSDE e Firebird) http://migre.me/ahzHG
     – SQLite (SQL Server) http://www.sqlite.org/ e SharpHSQL               15
        (http://www.codeplex.com/sharphsql)
Conclusão
   Ambiente multi-banco e diferentes abordagens (SQL, NoSQL,
    newSQL) convivendo junto
   Conceitos e tecnologias comuns x Novas idéias
   Sofware proprietário com mais recursos de interoperabilidade
   Poucos recursos      para   interoperabilidade   de    tarefas
    administrativas
   Muitos recursos para troca de dados, instruções e objetos
    entre BDs diferentes
   Ainda estamos na era da especialização e divergência
   Novas e interessantes possibilidades para avanços nas área
    de   interoperabilidade,    usabilidade,  comunicação    e
    compatibilidade entre BDs diferentes
                                                               16

Contenu connexe

Tendances

MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL Brasil
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Brasil
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLOrlando Vitali
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
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
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbfabio perrella
 
Exemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosExemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosLuis Borges Gouveia
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SORaul Oliveira
 
Desenvolvendo uma Aplicação Javascript Fulll
Desenvolvendo uma Aplicação Javascript FulllDesenvolvendo uma Aplicação Javascript Fulll
Desenvolvendo uma Aplicação Javascript FulllDjanilson Alves
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento websilvio_sas
 

Tendances (20)

Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
SQLite
SQLiteSQLite
SQLite
 
MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicações
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
 
Aula 8 sql introdução
Aula 8   sql introduçãoAula 8   sql introdução
Aula 8 sql introdução
 
2012 - Veris - DBA Career and Oracle Database
2012 - Veris - DBA Career and Oracle Database2012 - Veris - DBA Career and Oracle Database
2012 - Veris - DBA Career and Oracle Database
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
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
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodb
 
Exemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosExemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dados
 
Introdução ao NoSql
Introdução ao NoSqlIntrodução ao NoSql
Introdução ao NoSql
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SO
 
Desenvolvendo uma Aplicação Javascript Fulll
Desenvolvendo uma Aplicação Javascript FulllDesenvolvendo uma Aplicação Javascript Fulll
Desenvolvendo uma Aplicação Javascript Fulll
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
 

Similaire à Interoperabilidade entre BDs

Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensAlessandro Binhara
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceLuis Borges Gouveia
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Thiago de Azeredo
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQLCleber Dantas
 
Bancodedadosesgbds 140326151327-phpapp01
Bancodedadosesgbds 140326151327-phpapp01Bancodedadosesgbds 140326151327-phpapp01
Bancodedadosesgbds 140326151327-phpapp01Sugizo Akino
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA CareerMarcus Vinicius Miguel Pedro
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 

Similaire à Interoperabilidade entre BDs (20)

Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Trabalho de sgbd
Trabalho de sgbdTrabalho de sgbd
Trabalho de sgbd
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open source
 
Mongo db
Mongo dbMongo db
Mongo db
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL
 
TA1 - Slides Acessibilidade.pdf
TA1 - Slides Acessibilidade.pdfTA1 - Slides Acessibilidade.pdf
TA1 - Slides Acessibilidade.pdf
 
C # banco de dados
C # banco de dadosC # banco de dados
C # banco de dados
 
NoSQL & SQL
NoSQL & SQLNoSQL & SQL
NoSQL & SQL
 
Bancodedadosesgbds 140326151327-phpapp01
Bancodedadosesgbds 140326151327-phpapp01Bancodedadosesgbds 140326151327-phpapp01
Bancodedadosesgbds 140326151327-phpapp01
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 

Plus de pichiliani

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentadapichiliani
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona víruspichiliani
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...pichiliani
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teachingpichiliani
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robôpichiliani
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientistapichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningpichiliani
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowpichiliani
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLpichiliani
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka? pichiliani
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualpichiliani
 
SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?pichiliani
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastpichiliani
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015pichiliani
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...pichiliani
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...pichiliani
 
Como lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLComo lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLpichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Applicationpichiliani
 

Plus de pichiliani (20)

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona vírus
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teaching
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robô
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientista
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learning
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka?
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtual
 
SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCast
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
 
Como lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLComo lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQL
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Application
 

Interoperabilidade entre BDs

  • 1. Interoperabilidade entre banco de dados Msc. Mauro C. Pichiliani (mauro@pichiliani.com.br) @pichiliani 1
  • 2. Sobre mim • Mestre e doutorando em computação pelo ITA • Escritor da SQL Magazine, Fórum Access, Java Magazine, SQLServerCentral.com e outras • Colaborador do iMasters há 10 anos • Autor do livro “Conversando sobre banco de dados” (http://migre.me/ahlSY) • Co-autor do @databasecast • Blog: http://pichiliani.com.br 2
  • 3. Roteiro • Cenário multi-banco • Conceitos comuns • Interoperabilidade na administração • Trocando objetos, dados e instruções • Conclusão 3
  • 4. Cenário multi-banco (1) • Ambientes, plataformas e bancos de dados diferentes são uma realidade • O banco de dados nunca trabalha sozinho: – ERP, PDV, CMS, Controle de acesso, IRPF, Intranet – Sistemas customizados e desenvolvimento interno – Sistemas multi-banco • Principais SGBDR: SQL Server, Oracle, MySQL, PostgreSQL e DB2 • Novo talento no pedaço: NoSQL e newSQL • Não esqueça dos BDs na núvem… • Profissionais de desenvolvimento, administração e infra devem dominar individualmente os bancos de dados • E também saber como eles devem unir forças e trabalhar junto • Tarefas comuns: montar um ambiente de testes/homologação, transferir dados, criar uma solução de replicação, analisar, comparar e estudar o desempenho de tarefas semelhantes em diferentes bancos de dados, etc 4
  • 5. Cenário multi-banco (2) - Planejamento • A maioria dos sistemas e aplicações trabalha com apenas um BD • Suporte a diferentes BDs sub-utiliza recursos do mesmo. Mas fornece algum tipo de escolha para o cliente • Geralmente software livre não se preocupa em ser multi-banco. E aplicações web também não • Aplicação multi-banco requer desenvolvimento adicional e camadas adicionais de software • Há também cenários de dados não estruturados, arquivos texto e bancos de dados embarcados • Em cenário multi-plataforma (desktop, web, app. móveis, etc) tendência é centralizar informações em um único BD • Planejamento da interoperabilidade: – Documentação (diagramas, especificação, fluxo de dados, etc) – Saiba até onde é possível ir – Avalie com cuidado troca de BDs para consolidar dados – Mudar banco de dados de aplicação existente tem impacto profundo 5
  • 6. Conceitos comuns (1) • SGBDR (e alguns NoSQL) sofrem pressão do mercado para suportar recursos similares: SQL, backup, segurança, tabelas, constraints, programação, etc • A execução e suporte de diversas tarefas comuns se torna um commodity. E o profissional deve saber como fazer a mesma tarefa com tecnologias diferentes • Sempre dar atenção aos conceitos básicos e fundamentos • Há diferenças de conceitos, nomenclaturas, siglas, especificações e peculiaridades para cada BD. Ex: Log, configurações, opções de crescimento, etc • Foco não é comparação entre bancos de dados. Artigo “Comparando a dificuldade nos bancos de dados” na SQL Magazine 75 http://migre.me/ahnEF • EULA impede comparações de desempenho com alguns BDs • Há testes padrões do mercado como o TPC (http://tpc.org) • Não perca muito tempo discutindo funcionalidades ou comparando. Conheça suas opções e parta para o trabalho! 6
  • 7. Conceitos comuns (2) • Alguns fornecedores se preocupam mais com interoperabilidade no BD do que outros • Procure por recursos que vão além de importação/exportação • Procure evitar formatos intermediários • Há sempre a questão da segurança e confidencialidade • Geralmente é preciso contar com tecnologias externas para conectividade: ODBC, JDBC, OLE Db, drivers específicos e conectores • Dependendo do contexto pode ser interessante recorrer a ferramentas ETL do próprio fabricante ou de terceiros. Sugestões: – Microsoft SQL Server Integration Server (SSIS http://migre.me/ahoeL) – Oracle Database Utilities http://migre.me/ahoiZ – PDI (antigo Kettle) http://kettle.pentaho.com/ – Talend open Studio http://migre.me/ahooW 7
  • 8. Interoperabilidade na administração (1) • Todos os BDs possuem ferramentas de console (shell) que permitem trabalhar com scripts e arquivos individuais • Fornecem boa produtividade, porém tem péssima usabilidade para tarefas administrativas. Não há recursos de interoperabilidade além do que o SO fornece (pipes) • Tarefas administrativas podem ser realizadas por script, mas há ferramentas com GUI. Exemplos: Management Studio Oracle Enterprise Manager 8
  • 9. Interoperabilidade na administração (2) MySQL Workbench PgAdmin RockMongo Futon 9
  • 10. Interoperabilidade na administração (3) DBArtisan da Embarcadeiro http://migre.me/ahqN9 • Ferramentas com GUI auxiliam muito certas tarefas administrativas • Porém praticamente não há recursos de interoperabilidade entre dados, objetos e tarefas administrativas • Para monitoria: artigo “Monitoramento de Base de Dados” da SQL Mag. 54 http://migre.me/ahqXE. • Soluções agregadoras: Nagios (http://www.nagios.org/), System Center ( 10 http://migre.me/ahr5Y) e FogLight (http://migre.me/ahrgP)
  • 11. Trocando objetos, dados e instruções (1) • Alguns bancos de dados possuem recursos para acessar objetos entre diferentes BDs junto com as instruções SQL • O SQL Server possui o conceito de servidores linkados: requer ODBC, provider OLE DB ou provider .NET • O Oracle possui o recurso chamado Database Link Heterogeneous Services (DB-LINK). Acesso a fontes de dados ODBC. http://migre.me/ahv1o • Linked servers e DB-Link fornecem algo do tipo: SELECT * FROM {FONTE_REMOTA}…{OBJETO} • PostgreSQL também possui DBLink mas apenas entre servidores PostgreSQL. Projetos alternativos: – DBLink-ODBC: http://sourceforge.net/projects/dblink-odbc/ – DBLink-TDS: http://pgfoundry.org/projects/dblink-tds/ • O MySQL não possui recurso semelhante. Mas há o Storage Engine FEDERATED que permite acessar tabelas de outro MySQL remotamente http://migre.me/ahv9e • Bancos NoSQL e newSQL não possuem recursos de interoperabilidade direta em instruções 11
  • 12. Trocando objetos, dados e instruções (2) • Todos os BDs possuem recursos para importar e exportar dados. Geralmente no formato CSV (Comma-separated values) ou XML • Replicação heterogência envolve BDs de diferentes fornecedores • Há recursos para implementar replicação de dados síncrona, assíncrona ou multi-síncrona entre diferentes BDs • Cuidado: não confudir replicação com tecnologias para escalabilidade (sharding), alta disponibilidade (cluster) ou disaster e recovery • Deve-se planejar muito bem como será a replicação. Aspectos principais: – Papéis (masters ou slaves) e locais de replicação – Latência e disponibilidade – Conversão de tipos de dados – Fluxo de dados (direção) e forma de replicação – Conflitos – Objetos, filtros, índices full-text e outros elementos do banco de dados • Geralmente a replicação é uma maravilha quando tudo funciona bem • Mas quando algum problema aparece a situação vira um inferno • Alguns fornecedores de BD provém replicação heterogênea. Espere apenas recursos básicos neste contexto • Há diversas ferramentas de terceiros para replicações heterogêneas • Importante: replicar dados NÃO faz com que sistemas sejam multi-banco 12
  • 13. Trocando objetos, dados e instruções (3) • SQL Server (> 2000) pemite replicação nativa apenas para Oracle • Há como montar solução utilizando servidores linkados+view+triggers • Oracle possui dois recursos: view materializada e Oracle Streams para qualquer fonte ODBC • PostgreSQL, MySQL, DB2, NoSQL e newSQL não possuem recursos para replicar dados para BD de outros fabricantes. Alternativas de terceiros: • Código livre: – Tungsten Replicator (http://migre.me/ahvKy): replicação JDBC em linha de comando – SymmetricDS (http://migre.me/ahvRw): sincronia de tabelas – DBReplicator (http://dbreplicator.org/): replicação JDBC com GUI – Daffodil Replicator (http://migre.me/ahwdR): versão enterprise e open source • Proprietárias: – DBMoto (http://migre.me/ahw2g) – SharePlex for Oracle (http://migre.me/ahw84) – ObjectMMRS (http://migre.me/ahwnI) – InfoSphere Data Replication (http://migre.me/ahww6) • Nota: algumas ferramentas ETL também fazem replicação heterogênea 13
  • 14. Trocando objetos, dados e instruções (4) • Em muitas situações desejamos converter uma instrução SQL de um banco para outro • Formatador on-line de SQL: http://migre.me/ahwIi • Testadores de SQL: SQLFiddle (http://sqlfiddle.com/) e Ideone ( http://t.co/1VqDRoZs) e Try MongoDB (http://try.mongodb.org/) • SwisSQL Console (http://migre.me/ahxef) separação e conversão de instruções 14
  • 15. Trocando objetos, dados e instruções (5) • SQL Translator (http://migre.me/ahxjR) scripts do Linux para conversão de instruções SQL • SQL Injection Knowledge Base: http://t.co/Hc6PLWdE • Tabelas, guias e posters de conversões de sintaxe SQL e NoSQL. Nota: atualmente há muitas linguagens *QL de acordo com cada produto • Site com lista de Cheat-Sheets: http://www.cheat-sheets.org/ • Diversas APIs, bibliotecas, frameworks, camadas, components, design patters e arquiteturas para trabalhar com sistemas multi-banco • Exemplo: SwisSQL API (http://migre.me/ahxIL) • Muitos são ORM e servidores de cache também! Cuidado com soluções que prometem interoperabilidade e na verdade substituiem o seu BD por outro • Há soluções amálgamas e com alguma compatibilidade entre BDs – Fyracle (Oracle-mode Firebird) http://migre.me/ahoy0 – DotNetFirebird (Access, MSDE e Firebird) http://migre.me/ahzHG – SQLite (SQL Server) http://www.sqlite.org/ e SharpHSQL 15 (http://www.codeplex.com/sharphsql)
  • 16. Conclusão  Ambiente multi-banco e diferentes abordagens (SQL, NoSQL, newSQL) convivendo junto  Conceitos e tecnologias comuns x Novas idéias  Sofware proprietário com mais recursos de interoperabilidade  Poucos recursos para interoperabilidade de tarefas administrativas  Muitos recursos para troca de dados, instruções e objetos entre BDs diferentes  Ainda estamos na era da especialização e divergência  Novas e interessantes possibilidades para avanços nas área de interoperabilidade, usabilidade, comunicação e compatibilidade entre BDs diferentes 16