Histórico da Página
Pagetitle | ||||
---|---|---|---|---|
|
Introdução
Damos o nome de
...
SQLiteDB para a utilização
...
do
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
Através da configuração adequada,
...
é possível acessar os dados
...
armazenados pelo
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
...
do
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
...
Para isto, basta ajustar o ambiente configurado no
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
...
. Internamente, a RDD "TOPCONN" e as funções TC* passam a utilizar o
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
...
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:
DBDataBase=SQLITE
DBServer=localhost
DBPort=7890
DBALIAS=SYSTEM
Comportamento
...
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
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
|
Configuração
Partindo de um ambiente com a chave RPODB configurada como SQL, troque sua configuração para SQLITE e acrescentar as configurações exibidas no trecho abaixo, respeitando os valores definidos para cada chave:
Sem Formato |
---|
[Environment]
RPODB=SQLITE
DBDataBase=SQLITE
DBServer=localhost
DBPort=7890
DBALIAS=SYSTEM |
Comportamentos e detalhes técnicos
- Neste ambiente a utilização da RDD "TOPCONN" para a criação e abertura de tabelas vai internamente
...
- utilizar o
como Banco de Dados, sem precisar de umInclusão de trecho SQLITE SQLITE nopanel true
.Inclusão de trecho DBAccess DBAccess nopanel true - A maioria das funções específicas do
...
(TCLink(), TCCanOpen(), TCDelFile(), entre outras) são utilizadas da mesma forma, porém o Banco de Dados em uso será oInclusão de trecho DBAccess DBAccess nopanel true
...
.Inclusão de trecho SQLite SQLite nopanel true - 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
, embora internamente não existe uma conexão TCP, mas sim um contexto de uso equivalenteInclusão de trecho tecen:DBAccess tecen:DBAccess nopanel true
...
- à uma conexão.
- A função TCGetDB() neste ambiente retorna a string "SQLITE"
- O arquivo em disco que será
...
- utilizado como o banco do
chama-se "system.db", e será criado automaticamente em uma pasta chamada DB_SYSInclusão de trecho SQLite SQLite nopanel true
...
- (também criada
...
- automaticamente a partir do RootPath do ambiente).
...
- Adicionalmente, será criada uma pasta
...
- chamada
...
- DB_
...
- TMP a partir do RootPath, para uso de arquivos temporários do
...
.Inclusão de trecho SQLite SQLite nopanel true - É possível alterar as pastas citadas acima através das
...
- configurações DBSysPath e DBTmpPath, que devem informar um
...
- caminho completo de onde os arquivos de dados devem ser criados
...
- .
Informações |
---|
Estas pastas podem ser especificadas fora do RootPath do |
...
ambiente, mas nenhuma outra instância de |
...
|
- Uma base
...
- do
somente pode ser acessada por um serviço doInclusão de trecho SQLite SQLite nopanel true
...
Inclusão de trecho Application Server Application Server
...
e sempre apontando para um PATH na máquina local, jamais para um compartilhamento de rede.nopanel true
LocalFiles
O driver de arquivos locais – referenciado em AdvPL como "DBFCDX" – pode ser configurado neste cenário também para o SQLITE. Porém, esta configuração ( LOCALFILES=SQLITE) usa o SQLITE como um porte de acesso de RDD de disco em modo de compatibilidade ISAM, sendo assim cada arquivo criado com a RDD DBFCDX será um arquivo SQLITE no disco a partir do Rootpath do ambiente. Dadas as restrições naturais de processo e contexto únicos impostos pelo uso do RPODB=SQLITE neste ambiente, a configuração LOCALFILES=SQLITE é naturalmente adequada para este cenário.
...
Informações | ||
---|---|---|
| ||
Na mesma pasta onde fica o arquivo de dados |
...
do
|
...
Um deles possui a extensão "WAL" (Write Ahead Log). |
...
Dadosm 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. Sempre que o serviço |
...
do
|
...
processo
|
...
para efetivar |
...
a gravação dos dados do arquivo, removendo ele do disco naturalmente. |
...
Restrições
Algumas restrições de funcionalidade e comportamentos aplicam-se a este ambiente, são elas:
- Acesso concorrente:
Comportamento - Multi-Thread
- A implementação do SQLITEDB suporta multi-
...
- thread – múltiplos processos executando operações na mesma base de dados. Porém, o
...
- 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
...
- não podem ser feitas concorrentemente com outras operações quaisquer, exigindo acesso exclusivo. Neste contexto,
...
- o encapsulamento de acesso ao Banco de Dados feito
...
- internamente pelo
fecha tabelas e queries em execução, de forma transparente, para conseguir realizar a operação, e restaura sob demanda os contextos de execução.Inclusão de trecho application server application server nopanel true
...
Restrições - Transacionamento
...
- Transacionamento: Embora as funções de transacionamento esteja disponíveis, internamente elas estão configuradas por default para não
...
- serem executadas. É possível habilitar o suporte a transacionamento explícito
...
- , porém isso somente é recomendável se a aplicação em
...
- questão usar apenas um contexto de conexão e
...
- apenas uma
...
- processo. Uma vez que exista uma transação aberta, nenhum outro processo consegue abrir outra transação, ou realizar qualquer instrução de DDL no
...
– como por exemplo criar ouInclusão de trecho SQLITE SQLITE nopanel true
...
- apagar uma tabela ou índice.
...
- Integração com DBAccess
...
- : Como a configuração do ambiente indica
...
- que a RDD TOPCONN e funções TC* devem usar o
...
- internamente o
, este ambiente não carrega a bibliotecaInclusão de trecho SQLITE SQLITE nopanel true
...
- cliente do
(DBAPI), e portanto (ainda) não é capaz de conectar com um outro SGDBInclusão de trecho DBAccess DBAccess nopanel true
...
- enquanto utilizar o ambiente RPODB=
...
- SQLITE
...
- .
Restrições - Tabelas Temporárias
...
- Tabelas Temporárias : O 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
como Base de Dados principal. Porém, (ainda) não é permitido fazer umaInclusão de trecho SQLite SQLite nopanel true
...
- 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
...
- endereçando a tabela temporária
...
- através da RDD TOPCONN
...
Aviso | |
---|---|
|
| |
O formato de um Database |
...
é 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 |
...
é uma prerrogativa da implementação do |
...
, 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 |
...
em questão está sendo usada pelo |
...
, pois a aplicação externa pode interferir |
...
e prejudicar a operação |
...
do
|