A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Armazenamento de Informação em HSQL LEIC-Tagus – TDB 05/06 Bruno Azenha nº 51377.

Apresentações semelhantes


Apresentação em tema: "Armazenamento de Informação em HSQL LEIC-Tagus – TDB 05/06 Bruno Azenha nº 51377."— Transcrição da apresentação:

1 Armazenamento de Informação em HSQL LEIC-Tagus – TDB 05/06 Bruno Azenha nº 51377

2 Tópicos Introdução Introdução Interacção dos componentes Interacção dos componentes Suporte físico Suporte físico Tabelas Tabelas Conteúdo das tabelas Conteúdo das tabelas Armazenamento e acesso a dados Armazenamento e acesso a dados Acessos em memória Acessos em memória Metadados e scripts Metadados e scripts Tipos dados especiais Tipos dados especiais Aplicações Práticas Aplicações Práticas

3 Introdução SGBD implementado em Java que corre numa JVM SGBD implementado em Java que corre numa JVM Ligações ao SGBD através de interface JDBC Ligações ao SGBD através de interface JDBC OpenSource OpenSource Suporta um grande conjunto dos standards SQL 92 e 200n, acrescentado algumas extensões proprietárias Suporta um grande conjunto dos standards SQL 92 e 200n, acrescentado algumas extensões proprietárias Três modos de operação: “in-memory”, “standalone” e “client/server” Três modos de operação: “in-memory”, “standalone” e “client/server”

4 Interacção dos componentes As aplicações do utilizador só podem aceder através de uma interface JDBC As aplicações do utilizador só podem aceder através de uma interface JDBC Características dos modos de operação: Características dos modos de operação: Aplicação e BD na mesma JVM Aplicação e BD na mesma JVM Ligação HTTP através da Internet com recurso a um WebServer ou a uma Servlet Ligação HTTP através da Internet com recurso a um WebServer ou a uma Servlet Ligação TCP/IP (Intranet) usando um servidor dedicado Ligação TCP/IP (Intranet) usando um servidor dedicado

5 Suporte físico Cada BD consiste num conjunto de ficheiros: Cada BD consiste num conjunto de ficheiros: teste.properties – propriedades genéricas da BD teste.properties – propriedades genéricas da BD teste.script – contêm a definição em SQL das tabelas, dos dados e de outros objectos da BD, para as tabelas em memória teste.script – contêm a definição em SQL das tabelas, dos dados e de outros objectos da BD, para as tabelas em memória teste.log – contém as alterações recentes à BD teste.log – contém as alterações recentes à BD teste.data – contém os dados para as tabelas em disco teste.data – contém os dados para as tabelas em disco teste.backup – é uma cópia de segurança comprimida do último estado consistente conhecido para o ficheiro “.data” teste.backup – é uma cópia de segurança comprimida do último estado consistente conhecido para o ficheiro “.data” teste.lck – é usado para assinalar que a BD está aberta teste.lck – é usado para assinalar que a BD está aberta

6 Tabelas (1/3) O HSQL suporta tabelas temporárias (TEMP) e 3 tipos de tabelas persistentes: em memória (MEMORY) e em disco (CACHED) e de texto (TEXT) O HSQL suporta tabelas temporárias (TEMP) e 3 tipos de tabelas persistentes: em memória (MEMORY) e em disco (CACHED) e de texto (TEXT) As tabelas temporárias só duram enquanto a ligação está activa As tabelas temporárias só duram enquanto a ligação está activa Para as tabelas em memória: Para as tabelas em memória: Sempre que a BD é iniciada são lidos todos os dados existentes no ficheiro “.script” Sempre que a BD é iniciada são lidos todos os dados existentes no ficheiro “.script” Todos os dados são escritos de memória para disco quando é executado o comando de SHUTDOW Todos os dados são escritos de memória para disco quando é executado o comando de SHUTDOW Tempos de acesso menores que as tabelas em disco Tempos de acesso menores que as tabelas em disco Ideais para pequenos conjuntos de dados Ideais para pequenos conjuntos de dados

7 Tabelas (2/3) Para as tabelas em disco: Para as tabelas em disco: Os dados só são lidos do ficheiro “.data” quando a tabela é acedida Os dados só são lidos do ficheiro “.data” quando a tabela é acedida Só são mantidos em memória parte dos dados e dos índices Só são mantidos em memória parte dos dados e dos índices Ao se executar o SHUTDOW, são escritos os dados alterados e são efectuadas cópias de segurança de todas as tabelas em disco Ao se executar o SHUTDOW, são escritos os dados alterados e são efectuadas cópias de segurança de todas as tabelas em disco É possível configurar a quantidade de dados a serem mantidos em cache É possível configurar a quantidade de dados a serem mantidos em cache Ideais para tabelas contendo grandes conjuntos de dados Ideais para tabelas contendo grandes conjuntos de dados

8 Tabelas (3/3) Para as tabelas de texto: Para as tabelas de texto: Usam ficheiros CSV com fonte de dados Usam ficheiros CSV com fonte de dados O uso de memória é mais eficiente pois assenta no carregamento para memória da totalidade dos índices e apenas uma pequena parte dos dados O uso de memória é mais eficiente pois assenta no carregamento para memória da totalidade dos índices e apenas uma pequena parte dos dados Têm a vantagem da portabilidade e legibilidade do formato Têm a vantagem da portabilidade e legibilidade do formato Ficam a perder em termos de desempenho para os outros dois tipos de tabelas persistentes Ficam a perder em termos de desempenho para os outros dois tipos de tabelas persistentes

9 Conteúdo das tabelas Nome (não visível) Nome (não visível) Descrição da coluna (nome, tipo dados, …) Descrição da coluna (nome, tipo dados, …) Um ou mais índices (os túpulos só são acessíveis através de índices) Um ou mais índices (os túpulos só são acessíveis através de índices) Gestor de acesso a ficheiros se for uma tabela em disco (DataFileCache) Gestor de acesso a ficheiros se for uma tabela em disco (DataFileCache) Restrições de integridade (se existirem chaves estrangeiras) Restrições de integridade (se existirem chaves estrangeiras) Se o utilizador não criou uma chave primária, são criados automaticamente uma coluna e índices ocultos Se o utilizador não criou uma chave primária, são criados automaticamente uma coluna e índices ocultos

10 Armazenamento e acesso a dados O índice é uma AVL binary tree (uma árvore binária especial) O índice é uma AVL binary tree (uma árvore binária especial) Cada índice contém um nó raiz (que é “null” se a tabela estiver vazia) Cada índice contém um nó raiz (que é “null” se a tabela estiver vazia) Cada nó pode ter um nó pai e nós filhos esquerdo e direito Cada nó pode ter um nó pai e nós filhos esquerdo e direito Cada nó está ligado a um túpulo (a linha que contém os dados) Cada nó está ligado a um túpulo (a linha que contém os dados) Os dados são um array de objectos Os dados são um array de objectos

11 Acessos em memória A “cache” é uma hashtable A “cache” é uma hashtable Adicionalmente, os túpulos encontram-se ligados com listas duplamente ligadas Adicionalmente, os túpulos encontram-se ligados com listas duplamente ligadas Se existirem muitos registos em cache, os mais antigos são guardados (se necessário) e removidos de memória Se existirem muitos registos em cache, os mais antigos são guardados (se necessário) e removidos de memória

12 Metadados e scripts As tabelas de sistema são construídas dinâmicamente (só quando são necessárias e em memória) pela classe DatabaseInformation As tabelas de sistema são construídas dinâmicamente (só quando são necessárias e em memória) pela classe DatabaseInformation Chamadas às funções da DatabaseMetaData permitem obter dados das tabelas de sistema Chamadas às funções da DatabaseMetaData permitem obter dados das tabelas de sistema SYSTEM_CONNECTIONINFO retorna informação sobre a ligação actual SYSTEM_CONNECTIONINFO retorna informação sobre a ligação actual

13 Tipos de dados especiais Suporte para os tipos OTHER e OBJECT (são mapeados para java.lang.Object Suporte para os tipos OTHER e OBJECT (são mapeados para java.lang.Object Torna possível o armazenamento de dados binários nas colunas : fotografias, objectos Java serializados, músicas, entre outros Torna possível o armazenamento de dados binários nas colunas : fotografias, objectos Java serializados, músicas, entre outros Recurso à ferramenta “SQL Tool” e a prepared staments: Recurso à ferramenta “SQL Tool” e a prepared staments: \bl /tmp/favoritesong.mp3 \bp INSERT INTO musictbl (id, stream) VALUES(3112, ?); SELECT stream FROM musictbl WHERE id = 3112; \bd /tmp/favoritesong.mp3 O tamanho máximo do objecto é ditado pela memória disponível O tamanho máximo do objecto é ditado pela memória disponível Na prática, SGBDS de produção têm suportado com sucesso objectos até um megabyte Na prática, SGBDS de produção têm suportado com sucesso objectos até um megabyte

14 Aplicações Práticas OpenOffice.Org 2.0 OpenOffice.Org 2.0 JBoss JBoss JFox JFox Mathematica Mathematica TrackStudio TrackStudio Outros… Outros…

15 Bibliografia HSQL Development Group, Hypersonic SQL Arquitecture, www.hsqldb.org, 2005 HSQL Development Group, Hypersonic SQL Arquitecture, www.hsqldb.org, 2005www.hsqldb.org HSQL Development Group, Hsqldb User Guide, www.hsqldb.org, 2005 HSQL Development Group, Hsqldb User Guide, www.hsqldb.org, 2005 www.hsqldb.org Benoît Marchal, Hypersonic SQL: A Desktop Java Database, http://www.developer.com/db/article.php/629 261 Benoît Marchal, Hypersonic SQL: A Desktop Java Database, http://www.developer.com/db/article.php/629 261 http://www.developer.com/db/article.php/629 261 http://www.developer.com/db/article.php/629 261


Carregar ppt "Armazenamento de Informação em HSQL LEIC-Tagus – TDB 05/06 Bruno Azenha nº 51377."

Apresentações semelhantes


Anúncios Google