bancos de dados open source

43
Banco de Dados Open Source Brenno Ayres / Rodrigo Aurélio TBD

Upload: rodrigo-aurelio

Post on 20-Jan-2015

305 views

Category:

Education


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Bancos de dados open source

Banco de DadosOpen SourceBrenno Ayres / Rodrigo Aurélio

TBD

Page 2: Bancos de dados open source

Sumário

1. Conceito Open Source

2. Banco de Dados Open Source

3. PostgreSQL

4. NoSQL

Page 3: Bancos de dados open source

Open SourceDefiniçã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.

Page 4: Bancos de dados open source

General Public License (Licença Pública Geral): A GPL é a licença com maior utilização por parte de projetos de software livre, em grande parte devido à sua adoção para o projeto GNU e o sistema operacional GNU/Linux.

Licença Apache é uma licença para software livre (open source) de autoria da Apache Software Foundation (ASF). Todo software produzido pela ASF ou qualquer um dos seus projetos e sub-projetos é licenciado de acordo com os termos da licença Apache.

BSD permite que o software distribuído sob a licença, seja incorporado a produtos proprietários. Trabalhos baseados no material podem até ser liberados com licença proprietária. Alguns exemplos notáveis são: o uso de có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 Apple Computer.

Open SourceLincenças

Page 5: Bancos de dados open source

Banco de dados Open Source

Page 6: Bancos de dados open source

MySQLHistó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

Page 7: Bancos de dados open source

MySQLCases de Sucesso

Page 8: Bancos de dados open source

FirebirdHistó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;

Page 9: Bancos de dados open source

PostgreSQL

Page 10: Bancos de dados open source

PostgreSQLHistória

O PostgreSQL é um dos resultados de uma ampla evolução que se iniciou com o projeto Ingres, desenvolvido na Universidade de Berkeley, Califórnia.

Stonebraker um dos pioneiros dos bancos de dados relacionais deixou a faculdade em 1982 para vender o Ingres, porém retornou logo em seguida.

Em 1985 Stonebraker deu inicio ao projeto pós-Ingres patrocinado pela DARPA(*Defense Advanced Research Projects Agency) e pelo ARO (Army Research Office) construíram um banco que pudesse compreender tipos de dados, que hoje nós conhecemos como objetos.

O projeto resultante, chamado Postgres, era orientado a introduzir a menor quantidade possível de funcionalidades para completar o suporte a tipos.

Page 11: Bancos de dados open source

PostgreSQLApresentaçã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...)

Page 12: Bancos de dados open source

PostgreSQLApresentação

● Banco de dados Objeto-Relacional

○ Herança;

○ Tipos de dados complexos;

○ Funções;

Page 13: Bancos de dados open source

A principal liguagem utilizada para desenvolver o PostgreSQL é o ANSI C, porem são utilizadas algumas outras linguagens conforme podemos ver abaixo.

PostgreSQLLinguagem - Desenvolvimento

Page 14: Bancos de dados open source

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

Page 15: Bancos de dados open source

PostgreSQLArquitetura

O PostgreSql utiliza o modelo cliente/servidor e sua sessão

consiste 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.

Page 16: Bancos de dados open source

PostgreSQLArquitetura

Page 17: Bancos de dados open source

PostgreSQLAdministração

Existem várias ferramentas para administrar o PostgreSQl

que vão de aplicações multiplataforma, Linux e outras para

Windows.

● Multiplataforma○ PGAccess, phpPGAdmin, PGAdmin III, OpenOffice.org, ...

● Linux○ pgFouine, Red Hat, TOra, ...

● Windows○ Embarcadero, PGExplorer, DBTools,Pg Manager, ...

Page 18: Bancos de dados open source

PostgreSQLAdministração

Page 19: Bancos de dados open source

PostgreSQLAdministração

Backups

Método SQL-Dump: gera um arquivo de texto contendo instruções SQL para serem processadas pelo servidor para recriar o Banco conforme o arquivo.

Cópia de Segurança: copiar diretamente os arquivos que o PostgreSQL usa para armazenar o Banco.

Cópia de Segurança em linha: o PostgreSQL mantém o registro de escrita prévia (WAL = write ahead log) no subdiretório pg_xlog do diretório de dados do agrupamento.

Page 20: Bancos de dados open source

PostgreSQLReplicação

● Replicação

○ Hot Standby, Streaming Replication

Page 21: Bancos de dados open source

● 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;

PostgreSQLPerformance/Recursos

Page 22: Bancos de dados open source

● 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.

PostgreSQLPerformance/Recursos

Page 23: Bancos de dados open source

PostgreSQLTriggers

● 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);

Page 24: Bancos de dados open source

PostgreSQLTrigger - Implementação

CREATE 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;

Page 25: Bancos de dados open source

● 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

PostgreSQLProcedures - Implementação

Page 26: Bancos de dados open source

PostgreSQLStored Procedure

//Criarcreate or replace function alunosAprovados()returns setof aluno as

select * from aluno where situacao = ''aprovado'';

language 'sql';

//Executarselect alunosAprovados();

Page 27: Bancos de dados open source

PostgreSQLView - Implementação

CREATE 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 2\pset title 'Visão juntando tabela permanente com temporária'

SELECT * 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)

Page 28: Bancos de dados open source

PostgreSQLPatrocinadores

Page 29: Bancos de dados open source

PostgreSQLCases de Sucesso

Page 30: Bancos de dados open source

Banco de dados OSNoSQL

Page 31: Bancos de dados open source

NoSQL

B A S E

A C I D

Atomicity

Consistency

Isolation

Durability

BasicallyAvaiableSoft StateEventually Consistency

Page 32: Bancos de dados open source

● 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)

NoSQL

Page 33: Bancos de dados open source

● 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

Page 34: Bancos de dados open source

Document BasedExemplo Mongo

darthVader = {nome: "Anakin Skywalker",politica: Sith,universo: "Star Wars",arma: "Estrela da morte"

}db.starwars.save(darthVader)

Page 35: Bancos de dados open source

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;

Page 36: Bancos de dados open source

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)

Page 37: Bancos de dados open source

Column BasedExemplo

Page 38: Bancos de dados open source

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;

Page 39: Bancos de dados open source

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

Page 40: Bancos de dados open source

TitanGrafos dos Deuses

Page 41: Bancos de dados open source

TitanBreve implementação

● Criando uma instância do bancogremlin> 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

Page 42: Bancos de dados open source

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 ;

Page 43: Bancos de dados open source

Dúvidas!?