• Like
  • Save
Bancos de dados open source
Upcoming SlideShare
Loading in...5
×
 

Bancos de dados open source

on

  • 487 views

Seminário apresentado na cadeira de Tecnologia de Banco de Dados, na faculdade Estácio Idez/PB

Seminário apresentado na cadeira de Tecnologia de Banco de Dados, na faculdade Estácio Idez/PB

Autores: Brenno Ayres e Rodrigo Aurélio Targino

Statistics

Views

Total Views
487
Views on SlideShare
487
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Bancos de dados open source Bancos de dados open source Presentation Transcript

    • Banco de Dados Open Source Brenno Ayres / Rodrigo Aurélio TBD
    • Sumário1. Conceito Open Source2. Banco de Dados Open Source3. PostgreSQL4. NoSQL
    • Open Source Definição● A definição de Open Source foi criada pela OSI (Open Source Iniciative) a partir do texto original Debian Free Software Guidelines (DFSG) e determina que um software de código aberto deve garantir;● Distribuição livre, código fonte, trabalhos derivados, integridade do autor, não discriminar pessoas e áreas de atuação, distribuição da licença.
    • Open Source LincençasGeneral Public License (Licença Pública Geral): A GPL é a licença com maiorutilização por parte de projetos de software livre, em grande parte devido à suaadoção para o projeto GNU e o sistema operacional GNU/Linux.Licença Apache é uma licença para software livre (open source) de autoria daApache Software Foundation (ASF). Todo software produzido pela ASF ouqualquer um dos seus projetos e sub-projetos é licenciado de acordo com ostermos da licença Apache.BSD permite que o software distribuído sob a licença, seja incorporado aprodutos proprietários. Trabalhos baseados no material podem até serliberados com licença proprietária. Alguns exemplos notáveis são: o uso decódigo do BSD (funções de rede de computadores) em produtos da Microsoft,e o uso de muitos componentes do FreeBSD no sistema Mac OS X da AppleComputer.
    • Banco de dados Open Source
    • MySQL História/Características● Partindo da necessidade de usar o mSQL para conectar tabelas utilizando ISAM, e visto que isso não tinha performance considerável. Foi criado uma nova abordabem da API do mSQL, nascendo assim o MySQL;● Consome poucos recursos de hardware, controle trasancional, triggers, stored procedures, cursors, muito utilizado em hospedagens, dentre outros
    • MySQLCases de Sucesso
    • Firebird História/Características● O Código fonte do Interbase foi liberado pela Borland em 2000, dando assim subsídio para que a comunidade pudesse construir o firebird;● Ele dá suporte à ACID, MVCC, triggers, procedures, dentre outros;
    • PostgreSQL
    • PostgreSQL HistóriaO PostgreSQL é um dos resultados de uma ampla evolução que se iniciou como projeto Ingres, desenvolvido na Universidade de Berkeley, Califórnia.Stonebraker um dos pioneiros dos bancos de dados relacionais deixou afaculdade em 1982 para vender o Ingres, porém retornou logo em seguida.Em 1985 Stonebraker deu inicio ao projeto pós-Ingres patrocinado pelaDARPA(*Defense Advanced Research Projects Agency) e pelo ARO (ArmyResearch Office) construíram um banco que pudesse compreender tipos dedados, que hoje nós conhecemos como objetos.O projeto resultante, chamado Postgres, era orientado a introduzir a menorquantidade possível de funcionalidades para completar o suporte a tipos.
    • PostgreSQL Apresentação● Utiliza a licença BSD;● Suporte para os sistemas operacionais mais utilizados (Linux, Unix-Like e Windows);● Implementa todos os conceitos de ACID● Além dos tipos de dados do SQL também suporta objetos binários(Fotos, Vídeos...)
    • PostgreSQL Apresentação● Banco de dados Objeto-Relacional ○ Herança; ○ Tipos de dados complexos; ○ Funções;
    • PostgreSQL Linguagem - DesenvolvimentoA principal liguagem utilizada para desenvolver oPostgreSQL é o ANSI C, porem são utilizadas algumasoutras linguagens conforme podemos ver abaixo.
    • PostgreSQL● Limites PostgreSQL ○ Banco de dados: Ilimitado ○ Tabela: 32 TB ○ Linha: 1.6 TB ○ Campos: 1GB ○ Linhas por tabela: Ilimitado ○ Colunas por tabela: 250 - 1600 (Conforme tipo) ○ Índices por tabela: Ilimitado
    • PostgreSQL ArquiteturaO PostgreSql utiliza o modelo cliente/servidor e sua sessãoconsiste nos seguintes processos cooperando entre si. ○ O primeiro processo fica ativo no servidor que por sua vez gerencia arquivos e aceita conexões do clientes e executa as ações em nome dos clientes. ○ O segundo processo é o aplicativo cliente do usuário (frontend) que deseja executar operações de banco de dados.
    • PostgreSQL Arquitetura
    • PostgreSQL AdministraçãoExistem várias ferramentas para administrar o PostgreSQlque vão de aplicações multiplataforma, Linux e outras paraWindows.● Multiplataforma ○ PGAccess, phpPGAdmin, PGAdmin III, OpenOffice.org, ...● Linux ○ pgFouine, Red Hat, TOra, ...● Windows ○ Embarcadero, PGExplorer, DBTools,Pg Manager, ...
    • PostgreSQL Administração
    • PostgreSQL AdministraçãoBackups Método SQL-Dump: gera um arquivo de texto contendo instruções SQLpara serem processadas pelo servidor para recriar o Banco conforme oarquivo. Cópia de Segurança: copiar diretamente os arquivos que o PostgreSQLusa para armazenar o Banco. Cópia de Segurança em linha: o PostgreSQL mantém o registro de escritaprévia (WAL = write ahead log) no subdiretório pg_xlog do diretório de dadosdo agrupamento.
    • PostgreSQL Replicação● Replicação ○ Hot Standby, Streaming Replication
    • PostgreSQL Performance/Recursos● Two Phase Commit (2PC) ○ Surgiu para controlar e monitorar as atividades de commit e rollback das transações em ambientes de bases de dados distribuídos, ele garante a integridade entre as bases permitindo que a transação seja segura e íntegra.● Performance ○ Com um grande poder de processamento, o PostgreSQL é capaz de resolver consultas complexas em milisegundos; ○ Para tal, ele consome recursos computacionais consideráveis;
    • PostgreSQL Performance/Recursos● MVCC (controle de concorrência de multi-versão); ○ Diferentemente dos sistemas gerenciadores de banco de dados tradicionais, que usam bloqueios para realizar o controle de concorrência, o PostgreSQL mantém a consistência dos dados utilizando o modelo MVCC. Este modelo impede que a transação enxergue dados inconsistentes ou seja a informação que estão aparecendo são de algum tempo atrás.
    • PostgreSQL Triggers● Triggers ○ Before/After ○ NEW ■ INSERT: Valores inseridos; ■ UPDATE: Novos valores; ○ OLD ■ DELETE: Dados que estão sendo excluídos; ■ UPDATE: Valores sobrescritos; ○ Existem várias liguagens para a implementação (PL/pgSQL, PL/Perl, PL/Python, PL/Java, entre outras);
    • PostgreSQL Trigger - ImplementaçãoCREATE FUNCTION valida_dados_funcionario() RETURNS TRIGGER AS $valida_dados_funcionario$BEGIN IF NEW.NOME IS NULL THEN RAISE EXCEPTION Por Favor, digite o nome do funcionario!; END IF; IF NEW.IDADE IS NULL THEN RAISE EXCEPTION Por favor, informe a idade!; END IF; IF NEW.IDADE < 0 THEN RAISE EXCEPTION Desculpe, o funcionario não pode ter % anos, NEW.IDADE; END IF; RETURN NEW;END;$valida_dados_funcionario$LANGUAGE plpgsql;
    • PostgreSQL Procedures - Implementação● Stored Procedures ○ Função que retonar um valor ○ Pode ser implementada em várias linguagens ○ Divide-se em: ■ Procedurais ■ Não procedurais ■ Linguagem específica
    • PostgreSQL Stored Procedure//Criarcreate or replace function alunosAprovados()returns setof alunoas select * from aluno where situacao = aprovado;language sql;//Executar select alunosAprovados();
    • PostgreSQL View - ImplementaçãoCREATE VIEW vis_permanente_temporaria AS SELECT id_perm, nome_perm, nome_temp FROM tbl_permanente INNER JOIN tbl_temporaria ON (id_perm = id_temp);INSERT INTO tbl_permanente VALUES (1,nome permanente 1);INSERT INTO tbl_permanente VALUES (2,nome permanente 2);INSERT INTO tbl_temporaria VALUES (1,nome temporario 1);INSERT INTO tbl_temporaria VALUES (2,nome temporario 2);pset border 2pset title Visão juntando tabela permanente com temporáriaSELECT * FROM vis_permanente_temporaria; Visão juntando tabela permanente com temporária+---------+-------------------+-------------------+| id_perm | nome_perm | nome_temp |+---------+-------------------+-------------------+| 1 | nome permanente 1 | nome temporario 1 || 2 | nome permanente 2 | nome temporario 2 |+---------+-------------------+-------------------+(2 linhas)
    • PostgreSQL Patrocinadores
    • PostgreSQL Cases de Sucesso
    • Banco de dados OS NoSQL
    • NoSQLA BC AI SD E Basic a icity Avaia lly Atom ency ble ist Even Soft StatCons tion tually e Isola lity Cons isten bi cy Dura
    • NoSQL● Motivação ○ O fluxo gigantesco de dados em prazos mínimos de tempo, em um determinado contexto; ○ A crescente de serviços que necessitam de uma arquitetura que ofereça escalabilidade horizontal; ○ A necessidade de manusear ambiente semi- estruturados e até mesmo não estruturados;● Modelos ○ Documento (Riak, MongoDB, CouchDB) ○ Chave-Valor (Amazon s3, Redis, Voldemort) ○ Colunas (Cassandra, HBase, Hyperbase) ○ Grafos (Neo4j, Titan, InfoGrid)
    • Document Based● Principais caracteristicas ○ Comum a todas implementações é o conceito de "Document"; ○ Document trata-se do encapsulamento e o encoding dos dados em arquivos de vários tipos (XML, JSON, BSON, até mesmo arquivos binários como PDF, DOC). ○ Em comparativo com o modelo relacional, internamente, um document pode ser tratado como uma tupla, porém de maneira mais flexível ○ A organização se dá de vários modos: Coleções, Tags, Hierarquias de diretórios, entre outras
    • Document Based Exemplo MongodarthVader = { nome: "Anakin Skywalker", politica: Sith, universo: "Star Wars", arma: "Estrela da morte"}db.starwars.save(darthVader)
    • Key - Value● Conceito Básico ○ "O dados é geralmente consistido de uma string que representa a chave e o atual dado que é considerado o value"; ○ O dados podem ser de tipos primitivos, como também objetos empacotados como utilizados na Orientação a Objetos;
    • Column Based● Conceitos ○ Em face dos SGBDs row-oriented, que os dados são serializados em uma organização de linhas, o column based oferece tal organização em forma de colunas. Onde cada campo é armazenado em uma coluna;● Beneficios ○ Empacotamento de dados. Onde os dados semelhantes e de mesmo formato estão sendo armazenados próximo; ○ Melhor utilização em sistemas OLAP (On-LIne Analytical processing)
    • Column Based Exemplo
    • Graph● Breve introdução ○ Estrutura baseada na teoria dos gráficos; ○ Emprega conceitos como "Vertices/Nodes", "Edges" e "Properties"; ○ Nodes e propriedades assemelham-se ao conceito utilizados em POO; ○ Não depende de esquemas ou de uma estruturação nos dados;
    • Titan● Graph database● Suporta Milhares de usuários concorrentes● Escalabilidade linear● Multi-datacenter● Suporte ACID e consistência eventual● Persistência ○ Cassandra, HBase, Oracle BerkleyDB● Produtos voltado para grafos ○ Gremlin, Rexster, Blueprints
    • TitanGrafos dos Deuses
    • Titan Breve implementação● Criando uma instância do banco gremlin> g = GraphOfTheGodsFactory.create(/tmp/titan) ==>titangraph[local:/tmp/titan]● Consultasgremlin> saturn = g.V(name,saturn).next()==>v[4]gremlin> saturn.map()==>name=saturn==>age=10000==>type=titangremlin> saturn.in(father).in(father).name==>hercules
    • Query Methods● Document Based ○ Dynamic Object-based, MapReduce, XQuery;● Wide Columns ○ MapReduce, HQL;● Key-Value ○ MR Inside Value, MapReduce, NewSQL;● Graphs ○ SparQL, Gremlin, JRuby, Java, Web UI ;
    • Dúvidas!?