Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Remodelar layout, revisão de conteúdo

Pagetitle
SQLITEDB
SQLITEDB

Introdução 

Damos o nome de SQLITEDB para a utilização do 

Inclusão de trecho
SQLite
SQLite
nopaneltrue
como Banco de Dados principal de um ambiente, onde é possível acessar os dados do
Inclusão de trecho
sqlite
sqlite
nopaneltrue
 através da RDD TOPCONN e demais funções específicas do 
Inclusão de trecho
DBAccess
DBAccess
nopaneltrue
(TC_*). Na prática, você pega um programa originalmente escrito para trabalhar com um SGDB homologado pelo
Inclusão de trecho
tecen:DBAccess
tecen:DBAccess
nopaneltrue
, e configura o seu ambiente no 
Inclusão de trecho
Application Server
Application Server
nopaneltrue
para usar o 
Inclusão de trecho
SQLITE
SQLITE
nopaneltrue
como banco de dados, e internamente o Driver/RDD TOPCONN e as funções de execução de instruções e queries ( TCSqlExec, TCGenQry... ) usam internamente o
Inclusão de trecho
SQLITE
SQLITE
nopaneltrue
, como se ele estivesse sendo acessado por um 
Inclusão de trecho
DBAccess
DBAccess
nopaneltrue
 – mas sem a necessidade deste, afinal o 
Inclusão de trecho
SQLite
SQLite
nopaneltrue
já está dentro do
Inclusão de trecho
Application Server
Application Server
nopaneltrue

Nota
  • O uso do SQLITEDB foi projetado para aplicações de instância única e mono-usuário, devido a restrições implícitas do DBAccess 

Configuração 

Basta partir de um ambiente com RPODB=SQL ( TTT?.RPO), e trocar a configuração de RPODB=SQL para RPODB=SQLITE, e acrescentar as configurações abaixo, com os valores estipulados abaixo na seção de configuração do ambiente:

Sem Formato
DBDataBase=SQLITE


DBServer=localhost


DBPort=7890


DBALIAS=SYSTEM

Comportamentos e detalhes técnicosDesta forma, neste

  • Neste ambiente a utilização da RDD "TOPCONN" para a criação e abertura de tabelas vai internamente usar o 
    Inclusão de trecho
    SQLITE
    SQLITE
    nopaneltrue
    como Banco de Dados, sem precisar de um
    Inclusão de trecho
    DBAccess
    DBAccess
    nopaneltrue
    .
  • A maioria das funções específicas do
    Inclusão de trecho
    DBAccess
    DBAccess
    nopaneltrue
    , como TCLink(), TCCanOpen(), TCDelFile() entre outras são utilizadas da mesma forma, porém o Banco de Dados em uso será o
    Inclusão de trecho
    SQLite
    SQLite
    nopaneltrue
    .
  • Algumas funcionalidades não foram implementadas, como por exemplo as funções para stored procedures e virtualização de índices. A função TCLink() deve ser chamada como se o Banco de Dados em uso fosse acessado pelo 
    Inclusão de trecho
    tecen:DBAccess
    tecen:DBAccess
    nopaneltrue
    , embora internamente não existe uma conexão TCP, mas sim um contexto de uso equivalente a uma conexão.
  • A função 
    Inclusão de trecho
    teces:AdvPL
    teces:AdvPL
    nopaneltrue
      TCGetDB() neste ambiente retorna a string "SQLITE"
  • O arquivo em disco que será usado como o Banco do 
    Inclusão de trecho
    SQLite
    SQLite
    nopaneltrue
     chama-se "system.db", e será criado automaticamente em uma pasta chamada DB_SYS, criada também automaticamente a partir do RootPath do ambiente.
  • Também será criada uma pasta adicional chamada "db_tmp" a partir do RootPath, para uso de arquivos temporários do do 
    Inclusão de trecho
    SQLite
    SQLite
    nopaneltrue
    .
  • Podemos alterar as pastas acima através das configurações DBSysPath DBTmpPath – que devem informar um caminho completo de onde os arquivos de dados devem ser criados, e estas pastas podem ser especificadas fora do RootPath do ambiente – MAS nenhuma outra instância de 
    Inclusão de trecho
    Application Server
    Application Server
    nopaneltrue
    deve ser configurada para acessar os mesmos arquivos da mesma pasta, sob pena de corrompimento dos dados e comportamentos inesperados.
  • Uma base do 
    Inclusão de trecho
    SQLite
    SQLite
    nopaneltrue
    somente pode ser acessada por um serviço do
    Inclusão de trecho
    Application Server
    Application Server
    nopaneltrue
    , e sempre apontando para um PATH na máquina local, jamais para um compartilhamento de rede.


Informações
titleCheckpoint

Na mesma pasta onde fica o arquivo de dados do 

Inclusão de trecho
SQLite
SQLite
nopaneltrue
(arquivo system.db) são criados dois arquivos auxiliares para uso do "core" do
Inclusão de trecho
SQLite
SQLite
nopaneltrue
. Um deles possui a extensão "WAL" (Write Ahead Log). Este arquivo contém as inclusões e alterações feitas no Banco de dados mas ainda não efetivadas para  o arquivo de dados oficial. A cada sequencia de operações durante o uso do sistema é feita uma "rápida parada" para efetivar o log transacional. Estas paradas são chamadas de "Checkpoint". Sempre que o serviço do 
Inclusão de trecho
Application Server
Application Server
nopaneltrue
for finalizado, ou nenhum outro processo 
Inclusão de trecho
teces:AdvPL
teces:AdvPL
nopaneltrue
possua alguma tabela ou conexão aberta, um checkpoint é implicitamente executado ara efetivar os dados do arquivo, removendo ele do disco naturalmente. 

Restrições


Algumas restrições de funcionalidade e comportamentos aplicam-se a este ambiente, a saber:


  • Acesso concorrente : A
A
  • implementação do SQLITEDB suporta multi-thread – múltiplos processos executando operações na mesma base de dados. Porém, o 
Inclusão de trechoSQLiteSQLitenopaneltrue
  • possui limitações implícitas para operações de DDL – como por exemplo alteração de estrutura de tabelas, criar e apagar tabelas e índices, onde o nível de bloqueio é mais restritivo do que um Banco de Dados relacional — operações de alteração de definição e de objetos no 
Inclusão de trechoSQLiteSQLitenopaneltrue
  • não podem ser feitas concorrentemente com outras operações quaisquer, exigindo acesso exclusivo. Neste contexto, como o encapsulamento de acesso ao Banco de Dados feito pelo 
Inclusão de trechoApplication ServerApplication Servernopaneltrue
  • fecha internamente as tabelas e queries em execução, de forma transparente, para conseguir realizar a operação, e restaura sob demanda os contextos de execução. 

Restrições

Algumas restrições de funcionalidade e comportamentos aplicam-se a este ambiente, a saber:

  • Transacionamento 
Embora
  • Transacionamento : Embora as funções de transacionamento esteja disponíveis, internamente elas estão configuradas por default para não
transacionar o Inclusão de trechoSQLiteSQLitenopaneltrue
  • serem executadas. É possível habilitar o suporte a transacionamento explícito
para Inclusão de trechoSQLiteSQLitenopaneltrue
  • , porém isso somente é recomendável se a aplicação em
uso
  • questão usar apenas um contexto de conexão e
em
  • apenas uma processo
Inclusão de trechoteces:AdvPLteces:AdvPLnopaneltrue
  • . Uma vez que exista uma transação aberta, nenhum outro processo consegue abrir outra transação, ou realizar qualquer instrução de DDL no
    Inclusão de trecho
SQLite
  • SQLITE
SQLite
  • SQLITE
    nopaneltrue
    – como por exemplo criar ou apagar uma tabela ou índice. 
  • Integração com DBAccess
Como
  • : Como a configuração do ambiente indica
ao Inclusão de trechoApplication ServerApplication Servernopaneltrue que
  • que a RDD TOPCONN e funções TC* devem usar o internamente o 
    Inclusão de trecho
SQLiteSQLitenopaneltrueembutido no
  • SQLITE
    SQLITE
Inclusão de trechoApplication ServerApplication Server
  • nopaneltrue
    , este ambiente não carrega a biblioteca cliente
do  
  • do 
    Inclusão de trecho
tecen:
  • DBAccess
tecen:
  • DBAccess
    nopaneltrue
 
  •   (DBAPI), e portanto (ainda) não é capaz de conectar com um
SGDB via Inclusão de trechotecen:DBAccesstecen:DBAccessnopaneltrue enquanto
  • outro SGDB enquanto utilizar o ambiente RPODB=SQLITE.
Por hora, se houver a necessidade de ler ou gravar dados entre tabelas Inclusão de trechoSQLiteSQLitenopaneltruee tabelas de um SGDB acessado pelo do   Inclusão de trechotecen:DBAccesstecen:DBAccessnopaneltrue, isto somente é possível criando dois ambientes, um para o Inclusão de trechoSQLiteSQLitenopaneltruee outro para o do   Inclusão de trechotecen:DBAccesstecen:DBAccessnopaneltrue, e criando um processo em cada ambiente para a troca de informações – usando IPC por exemplo. 
  • Tabelas Temporárias 
O
  •  
  • Tabelas Temporárias : O
Inclusão de trechotecen:DBAccesstecen:DBAccessnopaneltrue
  • possui um mecanismo de criação de tabelas temporárias nos bancos de dados homologados, e a mesma API e endereçamento foram implementadas também para
o
  • Inclusão de trecho
    SQLite
    SQLite
    nopaneltrue
    como Base de Dados principal. Porém, (ainda) não é permitido fazer uma query de uma tabela da base de dados com um JOIN de uma tabela temporária, bem como rodar queries sobre uma tabela temporária. Por hora sua implementação atende apenas aos requisitos de acesso em modo ISAM – usando as funções
Inclusão de trechoteces:AdvPLteces:AdvPLnopaneltrue
  • endereçando a tabela temporária
com a
  • através da RDD TOPCONN
.


Aviso
titleAcesso por ferramentas externas
O formato de um Database
Inclusão de trechoSQLiteSQLitenopaneltrue
é aberto e multi-plataforma, e existem diversas ferramentas de consulta e DDL/DML que atuam sobre estes tipos de arquivo. Sendo assim, existem várias ferramentas externas suportam manipular este tipo de arquivo. Porém, nenhuma deve ser usada para algo diferente de CONSULTAR informações. Fazer DDL ou DML nas bases de dados
Inclusão de trechoSQLiteSQLitenopaneltrue
é uma prerrogativa da implementação do
Inclusão de trechoApplication ServerApplication Servernopaneltrue
, mesmo tais operações sejam realizadas em uma cópia da tabela, apartada e acessada em modo exclusivo. Se utilizadas ferramentas externas para consulta de dados, evite utilizar a ferramenta de consulta enquanto a base
Inclusão de trechoSQLiteSQLitenopaneltrue
em questão está sendo usada pelo
Inclusão de trechoApplication ServerApplication Servernopaneltrue
, pois a aplicação externa pode interferir e prejudicar a operação do 
Inclusão de trecho
Application Server
SQLITE
Application Server
SQLITE
nopaneltrue