15
www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante 1 Firebird 3.0 O que podemos esperar Carlos H. Cantu Baseado nos slides criados por Dmitry Yemanov

Cantu - Firebird 3

Embed Size (px)

Citation preview

Page 1: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante1

Firebird 3.0O que podemos esperar

Carlos H. CantuBaseado nos slides criados por Dmitry Yemanov

Page 2: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante2

Relembrando

● Idéia original:FB 3 = Merge do Firebird 2 com o Vulcan

● O que acabou acontecendo:- Firebird 2.1, 2.5...- Vulcan descartado, usado somente como fonte de “idéias”- Não houve merge de código

Page 3: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante3

Arquiteturas atuais

● SuperServer – cache compartilhado, multi-threaded

● Classic – múltiplos processos (um por conexão), cache individual

● SuperClassic – multi-threaded com cache individual

Page 4: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante4

Caches

● Cache de metadata - Contem informações sobre a estrutura do banco de dados (tabelas, relacionamentos, constraints, etc.) armazenadas na memória.

● Cache de páginas – Armazena na memória páginas do BD recentemente acessadas.

Page 5: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante5

Prioridades de desenvolvimento

● Objetivos principais Engine multi-threaded 100% compatível com SMP

e multi-core, com cache compartilhado. Arquitetura renovada para as futuras versões.

● Objetivos secundários

Performance e escalabilidade melhoradas Mais recursos de segurança Melhor otimizador de queries Extensão das habilidades de monitoramento Melhorias na SQL

Page 6: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante6

Cache compartilhado

● Com certeza Cache compartilhado com sincronização escalável Suporte para travas entre threads e processos

● Se for possível

Plano A: cache de metadados compartilhado, cache de comandos compilados compartilhado

Plan B: cache de metadados não compartilhado, mas com redução no uso de memória(liberação das requisições de cache assim que desejável)

Page 7: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante7

Arquitetura

● Unificada, mas flexível Biblioteca da engine suportando uma única ODS +

executável do servidor (network listener) lendo a biblioteca da engine

● Acesso exclusivo ou compartilhado aos bancos de dados, configurado por banco através do firebird.conf

● Modelos de execução disponíveis para acesso compartilhado e configurado por servidor através de parâmetros de linha de comando:

– Baseado em processos (Classic)– Baseado em threads (SuperClassic)

● Acesso pelo embedded pode também ser compartilhado ou exclusivo

Page 8: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante8

Arquitetura

Banco de dados

Thread1

Thread2

Thread3

Cachecompartilhado

Processo 1

Thread1

Thread2

Thread3

Cachecompartilhado

Processo 2

Thread1

Thread2

Thread3

Cachecompartilhado

Processo N

Trava Trava

Page 9: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante9

Arquitetura

Legacy engineprovider

ODS11database

V3.0 engineprovider

Remote redirectorprovider

Dispatcher(Y-valve)

ODS12database

Server(network listener)

Network

Network

Page 10: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante10

ODS 12

● Estrutura física

Flag para marcar páginas de dados livres de lixo(melhora a performance do sweep)

Inventário de páginas ↔ SCN relationships(melhoria na velocidade do backup incremental)

Melhoria na compressão RLE, passando de blocos de 128 bytes para 32K (menos espaço ocupado por campos grandes que não estejam totalmente utilizados)

● Estrutura lógica

Novas tabelas de sistema e monitoramento Metadata armazenada em UTF8 ao invés de

UNICODE_FSS

Page 11: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante11

Segurança

● No nível de rede Plugins de autenticação (API pública, plugin

customizável) Criptografia dos dados trafegados

● No nível do banco de dados

Autenticação por BD (usuários armazenados no BD) Criptografia de páginas GRANT ROLE TO ROLE Roles implícitos (ex: grupos de usuários) Permissões para operações de DDL

Page 12: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante12

Otimização

● Geral

Baseada em “custo”, sempre que possível “Joins” mais eficazes em streams contendo

agregações, unions e procedures Hash joins, outer merge joins, cached invariant

subqueries, etc Exibição avançada dos planos (muito mais detalhada)

● Estatísticas

Informações a nível de tabelas e índices, histogramas com distribuição dos valores dos campos

Refresh total ou parcial, automático

Page 13: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante13

Exibição de PLANos avançadaSELECT statement

-> First [10]-> Sort [SUM desc, O_ORDERDATE asc]-> Aggregate-> Sort [L_ORDERKEY, O_ORDERDATE, O_SHIPPRIORITY]-> Inner Loop Join-> Filter-> Table [ORDERS] Access By ID-> Bitmap-> Index [ORDERS_ORDERDATE] Range Scan

-> Filter-> Table [CUSTOMER] Access By ID-> Bitmap-> Index [CUSTOMER_PK] Unique Scan

-> Filter-> Table [LINEITEM] Access By ID-> Bitmap-> Index [LINEITEM_PK] Unique Scan

Page 14: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante14

Recursos do SQL

● Já implementados Procedures, funções e triggers externos Funções escalares em PSQL PSQL packages (similar ao Oracle) Triggers DDL Identity columns Funções de janela (Window functions) Cursores bi-direcionais no PSQL Exceções parametrizadas definidas pelo usuário

Page 15: Cantu - Firebird 3

www.FirebirdDevelopersDay.com.br © 2010 – nome_palestrante15

FIM

Duvidas?