3. 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.
4. Open Source
Lincenças
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.
6. 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
8. 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;
10. PostgreSQL
Histó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.
11. 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...)
12. PostgreSQL
Apresentação
● Banco de dados Objeto-Relacional
○ Herança;
○ Tipos de dados complexos;
○ Funções;
13. PostgreSQL
Linguagem - Desenvolvimento
A principal liguagem utilizada para desenvolver o
PostgreSQL é o ANSI C, porem são utilizadas algumas
outras linguagens conforme podemos ver abaixo.
14. 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
15. PostgreSQL
Arquitetura
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.
17. PostgreSQL
Administraçã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, ...
19. PostgreSQL
Administraçã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.
20. PostgreSQL
Replicação
● Replicação
○ Hot Standby, Streaming Replication
21. 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;
22. 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.
23. 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);
24. PostgreSQL
Trigger - 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;
25. 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
26. PostgreSQL
Stored Procedure
//Criar
create or replace function alunosAprovados()returns setof aluno
as
select * from aluno where situacao = ''aprovado'';
language 'sql';
//Executar
select alunosAprovados();
27. PostgreSQL
View - 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)
31. NoSQL
A B
C A
I S
D E
Basic
a
icity Avaia lly
Atom ency ble
ist Even Soft Stat
Cons tion tually e
Isola lity Cons
isten
bi cy
Dura
32. 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)
33. 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
35. 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;
36. 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)
38. 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;
39. 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