SlideShare uma empresa Scribd logo
1 de 31
Entenda como as grandes empresas
utilizam múltiplas abordagens de
armazenamento de dados de forma
eficiente
Olá!
Eu sou Leonardo Farias
Tech Manager no Banco Inter, Msc em
Informática Aplicada pela UFRPE,
consultor, professor universitário na AESO
e palestrante.
leoroberto@gmail.com
leonardofarias.pro.br
Vocês podem me encontrar em:
Conceitos e um pouco de história
BDs Relacionais
🔑
Confiáveis
Consolidados
Linguagem
Padrão/DOC
Transações
ACID
Armazenam
Muitos dados
Livre de
Modelagem
Performático
Integração
Ling. Prog.
Boa Execução
Em Clusters
Escalável e
Consistênte
Open Source
BDsNoSQL
“
Geralmente quando falamos
em NoSQL, o que normalmente
pensamos?
Banco de dados
de Documentos
Banco de dados
de Chave e Valor
Banco de dados
de Grafos
Banco de dados
de Família de
Coluna
Conjunto de dados (Interação Unidade)
Agrupados como devem ser acessados
Facilitam o Gerenciamento em clusters
Utilizado pelos BDS: chave e valor,
documentos e família de colunas
Orientação a Agregados
Vamos fazer
um paralelo
com a vida
real!
BD Relacional
BD NoSQL (Agregados)
Armazena documentos (XML, JSON, etc)
Consulta dados dentro dos atributos.
Agregados / Visões materializadas
Banco de Dados de Documentos
Casos apropriados para
uso
Registro de eventos (log)
Gerenciamento de Conteúdo (CMS), plataformas
de blog
Análises web ou em tempo real (analytics)
Aplicativos de e-commerce (Esquemas flexíveis
para produtos e pedidos)
Quando não usar
Transações complexas que abranjam diferentes
operações (em multiplos documentos)
Consultas em estruturas agregadas variáveis.
Banco de Dados de Documentos
É uma Tabela hash simples.
Acesso é feito por meio da chave primária.
Altamente escalável
Banco de Dados Chave e Valor
🔑
🔑
🔑
🔑
Casos apropriados para uso
Armazenando informações de sessão.
Perfis de usuários, preferências.
Dados de carrinhos de compras.
Quando não usar
Relacionamento entre dados.
Transações com múltiplas operações.
Consulta por dados nos valores.
Operações por conjuntos.
Banco de Dados Chave e Valor
🔑
Banco de Dados Família de Colunas
Armazena em linha, pares de chave e valor
Grupos de dados acessados em conjunto
Mantém dados relacionados juntos
👪
🔑
🔑
🔑
Banco de Dados Família de Colunas
👪
👪
Casos apropriados
para uso
Registro de eventos (log)
Gerenciamento de Conteúdo (CMS),
plataformas de blog
Quando não usar
Quando necessário uso de transações
ACID (consultas com SUM e AVG).
Alto custo para alterar/mudar as
consultas CQL
Banco de Dados Família de Coluna
👪
Banco de Dados Grafos
Possibilita encontrar padrões
Podemos percorrer como quiser
Dados interpretados de várias formas
Significância direcional arestas
👪
👪
👪
👪
Banco de Dados Grafos
Casos apropriados
para uso
Dados conectados (Qualquer domínio rico
em links)
Roteamento, envio e serviços baseados
em localização
Mecanismos de recomendações
Quando não usar
Atualizações em lote (grande número de
entidades atualizadas de uma vez)
Banco de Dados de Grafos
Não existe a
melhor
ferramenta!
Qual o melhor Banco de Dados?
A melhor
ferramenta
para o
problema!
Cada BD tem sua característica
+1 BD pode
ser a solução
Depende do
cenário um
BD pode ser
melhor que o
outro
BDs
Relacionais
devem ser
considerados
“
Martin Fowler
present
“
Martin Fowler
Uso de várias tecnologias de armazenamento de dados,
escolhidas com base na maneira como os dados estão
sendo usados por aplicativos individuais.
Caso de Uso
- Parte mais pesada da App
- Produtos possuem atributos diferentes
- Consultas rápidas
BD de Documentos
- Eliminar joins e inner joins
- Consultas mais rápidas
(agregados)
- Estrutura elástica
- Sessão temporária (cód produto)
- Deixa de existir no final
- Não precisa persistir o dado
- Dados simples, podem ficam na
memória.
BD Chave-valor
- Não gera I/O disco
- Mantem os dados na memória
- ID da sessão e um dicionário
(produtos e qtds)
Catálogo de
Produto Carrinho de
Compras
Recomendações
De Produtos
Dados dos clientes e
Pagamentos
- Recomendações de outros
baseado em outros usuários e
outros parâmetros.
- “Seus amigos compraram esse
produto”
- Parte mais crítica e sensível dos dados
- Possui muitos relacionamentos
BD de Grafos
- Comportamentos são
armazenados e servirão de
indicação posterior.
BD Relacional
- Amplamente utilizado
- Geralmente homologados
e certificados.
Dicas de como escolher o BD
Dica 1
Dividir para conquistar... Selecione
cenários mais comuns, dependentes
de desempenho e que não parecem
se adaptar ao modelo atual.
Dica 2
Observe os recursos atuais e veja
como o uso dos dados é apropriado.
Dica 3
Faça experiências criando um
software, experimente os BDs (BDs
relacionais devem ser
considerados)!
Dica 4
A única forma pela qual você pode
avaliar o desempenho
apropriadamente é criando algo,
executando e testando!
Dica 5
Você precisará criar cargas e
volumes de dados representativos.
Dica 6
Se necessário, permaneça com o
padrão.
Obrigado!
Vocês podem me encontrar em:
leoroberto@gmail.com
leonardofarias.pro.br

Mais conteúdo relacionado

Semelhante a Entenda como as grandes empresas utilizam múltiplas abordagens de armazenamento de dados de forma eficiente

Big Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesBig Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesCaio Louro
 
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...Amazon Web Services LATAM
 
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas ColaborativosApresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas ColaborativosMozart Dornelles Claret
 
Master Data Management & Virtualização de Dados em SOA
Master Data Management & Virtualização de Dados em SOAMaster Data Management & Virtualização de Dados em SOA
Master Data Management & Virtualização de Dados em SOARicardo Ferreira
 
Bdii aula01 apresentacao
Bdii aula01 apresentacaoBdii aula01 apresentacao
Bdii aula01 apresentacaosamuel1562314
 
Pg20235 rf20222vp20208
Pg20235 rf20222vp20208Pg20235 rf20222vp20208
Pg20235 rf20222vp20208rikardojsf
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoAmbiente Livre
 

Semelhante a Entenda como as grandes empresas utilizam múltiplas abordagens de armazenamento de dados de forma eficiente (20)

TA1 - Slides Acessibilidade.pdf
TA1 - Slides Acessibilidade.pdfTA1 - Slides Acessibilidade.pdf
TA1 - Slides Acessibilidade.pdf
 
Big Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesBig Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory Databases
 
Pesquisa sobre no sql
Pesquisa sobre no sqlPesquisa sobre no sql
Pesquisa sobre no sql
 
Banco aula 01
Banco aula 01Banco aula 01
Banco aula 01
 
Banco aula 01
Banco aula 01Banco aula 01
Banco aula 01
 
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
 
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas ColaborativosApresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
 
Texto complementar
Texto complementarTexto complementar
Texto complementar
 
Ingestão de Dados
Ingestão de DadosIngestão de Dados
Ingestão de Dados
 
Master Data Management & Virtualização de Dados em SOA
Master Data Management & Virtualização de Dados em SOAMaster Data Management & Virtualização de Dados em SOA
Master Data Management & Virtualização de Dados em SOA
 
Bdii aula01 apresentacao
Bdii aula01 apresentacaoBdii aula01 apresentacao
Bdii aula01 apresentacao
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
BDI_1_conceitos
BDI_1_conceitosBDI_1_conceitos
BDI_1_conceitos
 
Bancodedados
BancodedadosBancodedados
Bancodedados
 
Pg20235 rf20222vp20208
Pg20235 rf20222vp20208Pg20235 rf20222vp20208
Pg20235 rf20222vp20208
 
BANCO DE DADOS.pptx
BANCO DE DADOS.pptxBANCO DE DADOS.pptx
BANCO DE DADOS.pptx
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
ILM com PostgreSQL
ILM com PostgreSQLILM com PostgreSQL
ILM com PostgreSQL
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
 
Simplifique o seu BI com a AWS
Simplifique o seu BI com a AWSSimplifique o seu BI com a AWS
Simplifique o seu BI com a AWS
 

Entenda como as grandes empresas utilizam múltiplas abordagens de armazenamento de dados de forma eficiente

  • 1. Entenda como as grandes empresas utilizam múltiplas abordagens de armazenamento de dados de forma eficiente
  • 2. Olá! Eu sou Leonardo Farias Tech Manager no Banco Inter, Msc em Informática Aplicada pela UFRPE, consultor, professor universitário na AESO e palestrante. leoroberto@gmail.com leonardofarias.pro.br Vocês podem me encontrar em:
  • 3. Conceitos e um pouco de história
  • 5. Livre de Modelagem Performático Integração Ling. Prog. Boa Execução Em Clusters Escalável e Consistênte Open Source BDsNoSQL
  • 6. “ Geralmente quando falamos em NoSQL, o que normalmente pensamos?
  • 7. Banco de dados de Documentos Banco de dados de Chave e Valor Banco de dados de Grafos Banco de dados de Família de Coluna
  • 8. Conjunto de dados (Interação Unidade) Agrupados como devem ser acessados Facilitam o Gerenciamento em clusters Utilizado pelos BDS: chave e valor, documentos e família de colunas Orientação a Agregados
  • 12. Armazena documentos (XML, JSON, etc) Consulta dados dentro dos atributos. Agregados / Visões materializadas Banco de Dados de Documentos
  • 13. Casos apropriados para uso Registro de eventos (log) Gerenciamento de Conteúdo (CMS), plataformas de blog Análises web ou em tempo real (analytics) Aplicativos de e-commerce (Esquemas flexíveis para produtos e pedidos) Quando não usar Transações complexas que abranjam diferentes operações (em multiplos documentos) Consultas em estruturas agregadas variáveis. Banco de Dados de Documentos
  • 14. É uma Tabela hash simples. Acesso é feito por meio da chave primária. Altamente escalável Banco de Dados Chave e Valor 🔑 🔑 🔑 🔑
  • 15. Casos apropriados para uso Armazenando informações de sessão. Perfis de usuários, preferências. Dados de carrinhos de compras. Quando não usar Relacionamento entre dados. Transações com múltiplas operações. Consulta por dados nos valores. Operações por conjuntos. Banco de Dados Chave e Valor 🔑
  • 16. Banco de Dados Família de Colunas Armazena em linha, pares de chave e valor Grupos de dados acessados em conjunto Mantém dados relacionados juntos 👪 🔑 🔑 🔑
  • 17. Banco de Dados Família de Colunas 👪
  • 18. 👪
  • 19. Casos apropriados para uso Registro de eventos (log) Gerenciamento de Conteúdo (CMS), plataformas de blog Quando não usar Quando necessário uso de transações ACID (consultas com SUM e AVG). Alto custo para alterar/mudar as consultas CQL Banco de Dados Família de Coluna 👪
  • 20. Banco de Dados Grafos Possibilita encontrar padrões Podemos percorrer como quiser Dados interpretados de várias formas Significância direcional arestas 👪 👪 👪 👪
  • 21. Banco de Dados Grafos
  • 22. Casos apropriados para uso Dados conectados (Qualquer domínio rico em links) Roteamento, envio e serviços baseados em localização Mecanismos de recomendações Quando não usar Atualizações em lote (grande número de entidades atualizadas de uma vez) Banco de Dados de Grafos
  • 23. Não existe a melhor ferramenta! Qual o melhor Banco de Dados?
  • 25. Cada BD tem sua característica +1 BD pode ser a solução Depende do cenário um BD pode ser melhor que o outro BDs Relacionais devem ser considerados
  • 27. “ Martin Fowler Uso de várias tecnologias de armazenamento de dados, escolhidas com base na maneira como os dados estão sendo usados por aplicativos individuais.
  • 28.
  • 29. Caso de Uso - Parte mais pesada da App - Produtos possuem atributos diferentes - Consultas rápidas BD de Documentos - Eliminar joins e inner joins - Consultas mais rápidas (agregados) - Estrutura elástica - Sessão temporária (cód produto) - Deixa de existir no final - Não precisa persistir o dado - Dados simples, podem ficam na memória. BD Chave-valor - Não gera I/O disco - Mantem os dados na memória - ID da sessão e um dicionário (produtos e qtds) Catálogo de Produto Carrinho de Compras Recomendações De Produtos Dados dos clientes e Pagamentos - Recomendações de outros baseado em outros usuários e outros parâmetros. - “Seus amigos compraram esse produto” - Parte mais crítica e sensível dos dados - Possui muitos relacionamentos BD de Grafos - Comportamentos são armazenados e servirão de indicação posterior. BD Relacional - Amplamente utilizado - Geralmente homologados e certificados.
  • 30. Dicas de como escolher o BD Dica 1 Dividir para conquistar... Selecione cenários mais comuns, dependentes de desempenho e que não parecem se adaptar ao modelo atual. Dica 2 Observe os recursos atuais e veja como o uso dos dados é apropriado. Dica 3 Faça experiências criando um software, experimente os BDs (BDs relacionais devem ser considerados)! Dica 4 A única forma pela qual você pode avaliar o desempenho apropriadamente é criando algo, executando e testando! Dica 5 Você precisará criar cargas e volumes de dados representativos. Dica 6 Se necessário, permaneça com o padrão.
  • 31. Obrigado! Vocês podem me encontrar em: leoroberto@gmail.com leonardofarias.pro.br

Notas do Editor

  1. Boa tarde pessoal, hoje vou falar sobre... Como escolher quais bancos de dados usar em uma determinada solução de armazenamento poliglota? Vamos iniciar falando sobre as diferenças entre BDs Relacionais e NoSQL Essa palestra é fruto de um estudo que ainda está em andamento e baseando em minha experiência profissional.
  2. Banco de dados NoSQL são bases de dados que foram criados para manipular dados semi e não estruturados, com velocidade, flexibilidade e escalabilidade. Eles foram criados para suprir uma demanda na qual os bancos de dados relacionais não foram capazes de atender. O acrônimo NoSQL quer dizer “Not Only SQL” (Não apenas NoSQL) e por muito tempo acreditou-se que esta sigla estava ligada a expressão No SQL (Não SQL) na qual passava a ideia de que os bancos de dados NoSQL vieram para tomar o lugar dos bancos de dados relacionais. Porém diferentemente disso, os bancos de dados NoSQL podem ser encarados como mais uma ferramenta que pode ser agregada as demais existentes.
  3. os bancos de dados NoSQL se dividem em 4 categorias: documentos, chave e Valor, família de colunas e grafos. Cada banco de dados NoSQL foi criado para resolver um determinado tipo de problema, manipulando e armazenando os dados de formas distintas, porém com características comuns: Ausência de modelagem: Estes bancos de dados dispensam modelagem prévia dos seus dados, permitindo a inclusão dos dados de forma livre, sem mudança prévia na sua estrutura; Escalável e consistente: bancos NoSQL foram criados especialmente para trabalharem de forma escalável, diferentemente do modelo relacional que apenas escalam de forma horizontal, as bases de dados NoSQL podem escalar de forma vertical, isso quer dizer que é totalmente possível adicionar servidores em paralelo para aumentar a disponibilidade e velocidade, além do mais os bancos de dados NoSQL dispõem de dispositivos que fazem com que os dados sejam consistente mesmo com o uso de vários servidores em paralelo.
  4. Bancos de dados NoSQL são livres de modelagem por necessidade, porém a não modelagem reflete na necessidade mínima de organização das informações para trafegá-las entre aplicação e base de dados NoSQL. O modelo de agregados é uma forma de organizar o conjunto de informações que serão trafegados entre a aplicação e os bancos de dados de documentos, chave e valor e família de colunas. O agregado é um conjunto de dados que devemos considerar como uma unidade. Agregado é um conjunto de objetos relacionados tratados como uma unidade. Trabalhar com agregados revela-se útil principalmente em execução em um cluster, já que dados representados por modelos agregados se constitui em unidade natural para replicação e fragmentação.
  5. Vamos fazer um paralelo com um exemplo do mundo real. Imagine que estamos acessando uma tela web no qual temos as informações de um usuário, os itens de sua última compra e método de pagamento.
  6. Ao consultar em um banco relacional, essas informações estarão em tabelas separadas e serão recuperadas pelo SGBD através de junções dessas informações e posteriormente envio destas de forma agrupada. O mesmo ocorre na inclusão dessas informação no banco de dados relacional, os dados chegam agrupados e devem ser quebrados para serem inseridos em suas respectivas tabelas. Em ambos os casos o SGDB teve um custo de processamento alto para realizar as respectivas junções e as quebras das informações.
  7. Vamos fazer um paralelo com um exemplo do mundo real. Imagine que estamos acessando uma tela web no qual temos as informações de um usuário, os itens de sua última compra e método de pagamento. Ao consultar em um banco relacional, essas informações estarão em tabelas separadas e serão recuperadas pelo SGBD através de junções dessas informações e posteriormente envio destas de forma agrupada. O mesmo ocorre na inclusão dessas informação no banco de dados relacional, os dados chegam agrupados e devem ser quebrados para serem inseridos em suas respectivas tabelas. Em ambos os casos o SGDB teve um custo de processamento alto para realizar as respectivas junções e as quebras das informações.
  8. Os bancos de dados baseados em documentos são bases de dados que armazenam coleções de documentos no formato JSON, XML, BSON entre outros. Estes documentos possuem propriedades do tipo (chave : valor), onde os valores da propriedade podem ser de tipos variados (texto, inteiro, etc). Os documentos que são armazenados nesse banco de dados agrupam informações de um mesmo assunto e devem possuir todas as informações necessárias do assunto tratado, ou seja, não dependendo de outro documento para montar o conjunto de informação final, com isso é normal existir repetições de informações dentro do mesmo documento. Tem como características a possibilidade de armazenar documentos que não possuem a mesma estrutura e também permitir a consulta de dados dentro pelos seus atributos. Um exemplo bastante citado é o armazenamento de produtos de uma loja virtual, no qual podemos armazenar diversos produtos com características distintas. No exemplo ao lado temos dois documentos que fazem parte da mesma coleção, porém que possuem atributos distintos.
  9. Os bancos de dados NoSQL baseados em documentos são indicados para uso de aplicações ou parte destas que precisem armazenar dados com esquema flexível e com dados que precisem de atualização e ou consultas constantes. Estes bancos de dados não são indicados para uso quando necessários realizar consultas em vários documentos para realização de relacionamentos entre os documentos.
  10. Os bancos de dados NoSQL de chave e valor armazenam os seus dados de forma muito simples. De forma direta eles são divididos em registros que possuem uma chave (identificador único) e esse id está ligado diretamente ao um valor especifico. Este valor armazenado pode conter qualquer tipo de dados, desde JSON, números, cadeia de caracteres, entre outros. Diferentemente dos bancos de dados de documentos, as bases de dados de chave e valor não manipulam diretamente os dados contidos nos valores, ou seja, não é possível consultar os dados pelo valor ou parte dele. As pesquisas são feitas diretamente pela chave do registro e o valor como um todo é retornado. Outra característica importante dos bancos de dados de chave e valor é que eles podem armazenar os dados tanto em disco quanto em memória, este segundo pode melhorar consideravelmente a performance na manipulação dos dados.
  11. Por serem extremamente rápidos eles são indicados para se trabalhar com dados de carrinho de compras de uma loja virtual (onde os produtos adicionados estão ligados ao id do usuário), informações da sessão/ perfil do usuário, entre outros. Este bd não é indicado se for necessário: Relacionar os dados entre os registros; Consultar por dados nos valores; Entre outros.
  12. Os bancos de dados de família de colunas são bases de dados que salvam as suas informações em colunas que são totalmente independentes umas das outras, diferentemente dos bancos de dados relacionais em que as colunas estão contidas dentro de uma tabela específica. As colunas dos BDs de família de colunas estão agrupadas por uma chave que forma um registro, por sua vez um conjunto de registros formam as famílias de colunas. As principais diferenças entre este tipo de banco de dados em relação ao modelo relacional são: Os registros da família de colunas não precisam possuir os mesmos números/tipos de colunas; A consulta buscam diretamente as colunas necessárias evitando o carregamento da tabela por inteiro (como o modelo relacional faz). Possuem vários benefícios como: Indexação das colunas, melhorando a performance das consultas, capacidade de atualização de uma colunas sem a necessidade de atualizar as demais.
  13. Estes BDs podem ser utilizados para trabalhar com logs de eventos, blogs e CMS e devem ser evitados caso o use para poucas informações ou que haja mudanças frequentes na aplicação devido ao alto custo para mudan;ca nas consultas.
  14. Os bancos de dados de grafos é um tipo de bd muito interessante, no qual trabalha muito fortemente as relações entre os dados. Ele possui esse nome por que os dados são armazenados em nós que se conectam através de arestas formando um grafo. Os nós e as arestas podem conter propriedades que armazenam informações e as arestas possuem direção, dando sentido aos relacionamentos. O banco de dados de grafo possibilita encontrar padrões, permitindo percorre-lo da forma que quisermos interpretando os dados de várias formas. Esses bds são muito usados em aplicações de redes sociais, recomendações de produtos e de navegação.
  15. No exemplo do grafo ao lado é possível encontrar facilmente qual o restaurante japonês em NY baseado no gosto de amigos. Este tipo de banco de dados foi criado para trabalhar muito bem com dados relacionados, tendo uma performance alta quando necessário percorrer os relacionamentos. Devido as essas características os casos indicados para uso desses bancos de dados devem observar se os dados que serão armazenados são ricos em relacionamentos como aplicações que usam rotas, localização ou mecanismos de recomendação. Evitar usar bds de grafos caso seja necessário trabalhar com um grande número de atualizações nas relações.