SQLite - SQLite

SQLite
SQLite370.svg
Desenvolvedor (s) D. Richard Hipp
lançamento inicial 17 de agosto de 2000 ;
21 anos atras
 ( 17/08/2000 )
Versão estável 3.36.0  Edite isso no Wikidata(18 de junho de 2021 ; 3 meses atrás ) [±] ( 18 de junho de 2021 )
Repositório
Escrito em C
Sistema operacional Plataforma cruzada
Tamanho 699  KiB
Modelo RDBMS ( incorporado )
Licença Domínio público
Local na rede Internet sqlite .org Edite isso no Wikidata
Formato de arquivo de banco de dados SQLite
Extensão de nome de arquivo
.sqlite3, .sqlite, .db
Tipo de mídia da Internet application/vnd.sqlite3
número mágico 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00( ASCII terminado em zero "formato SQLite 3")
lançamento inicial 18/06/2004
Formato aberto ? sim ( domínio público )
Local na rede Internet www .sqlite .org / fileformat2 .html

SQLite ( / ˌ ɛ s ˌ k JU ˌ ɛ l t / , / s i k w do ə ˌ l t / ) é um sistema de gestão de base de dados relacional (RDBMS) contida em um C biblioteca . Em contraste com muitos outros sistemas de gerenciamento de banco de dados, o SQLite não é um mecanismo de banco de dados cliente-servidor . Em vez disso, está embutido no programa final.

O SQLite geralmente segue a sintaxe PostgreSQL . O SQLite usa uma sintaxe SQL de tipagem fraca e dinâmica que não garante a integridade do domínio . Isso significa que se pode, por exemplo, inserir uma string em uma coluna definida como um inteiro. O SQLite tentará converter dados entre formatos onde apropriado, a string "123" em um inteiro neste caso, mas não garante tais conversões e armazenará os dados como estão se tal conversão não for possível.

SQLite é uma escolha popular como software de banco de dados embutido para armazenamento local / cliente em software de aplicativo , como navegadores da web . É indiscutivelmente o mecanismo de banco de dados mais amplamente implantado , visto que é usado hoje por vários navegadores, sistemas operacionais e sistemas integrados (como telefones celulares), entre outros. SQLite possui ligações para muitas linguagens de programação.

Projeto

Ao contrário dos sistemas de gerenciamento de banco de dados cliente-servidor, o mecanismo SQLite não possui processos autônomos com os quais o programa de aplicação se comunica. Em vez disso, a biblioteca SQLite é vinculada e, portanto, torna-se parte integrante do programa de aplicação. A vinculação pode ser estática ou dinâmica . O programa de aplicação usa a funcionalidade do SQLite por meio de chamadas de função simples , que reduzem a latência no acesso ao banco de dados: chamadas de função dentro de um único processo são mais eficientes do que a comunicação entre processos .

O SQLite armazena todo o banco de dados (definições, tabelas, índices e os próprios dados) como um único arquivo de plataforma cruzada em uma máquina host. Ele implementa esse design simples bloqueando todo o arquivo de banco de dados durante a gravação. As operações de leitura do SQLite podem ser multitarefas, embora as gravações só possam ser realizadas sequencialmente.

Devido ao design sem servidor, os aplicativos SQLite requerem menos configuração do que os bancos de dados cliente-servidor. SQLite é chamado de zero-conf porque não requer gerenciamento de serviço (como scripts de inicialização) ou controle de acesso baseado em GRANT e senhas. O controle de acesso é feito por meio de permissões do sistema de arquivos concedidas ao próprio arquivo de banco de dados. Os bancos de dados em sistemas cliente-servidor usam permissões de sistema de arquivos que dão acesso aos arquivos de banco de dados apenas para o processo daemon.

Outra implicação do design sem servidor é que vários processos podem não ser capazes de gravar no arquivo de banco de dados. Em bancos de dados baseados em servidor, vários gravadores se conectarão ao mesmo daemon, que é capaz de lidar com seus bloqueios internamente. O SQLite, por outro lado, depende dos bloqueios do sistema de arquivos. Ele tem menos conhecimento dos outros processos que estão acessando o banco de dados ao mesmo tempo. Portanto, o SQLite não é a escolha preferida para implantações de gravação intensiva. No entanto, para consultas simples com pouca simultaneidade, o desempenho do SQLite se beneficia ao evitar a sobrecarga de passar seus dados para outro processo.

SQLite usa PostgreSQL como plataforma de referência. "O que o PostgreSQL faria" é usado para entender o padrão SQL. Um grande desvio é que, com exceção das chaves primárias , o SQLite não impõe a verificação de tipo ; o tipo de um valor é dinâmico e não estritamente restringido pelo esquema (embora o esquema acione uma conversão ao armazenar, se tal conversão for potencialmente reversível). SQLite se esforça para seguir a regra de Postel .

História

D. Richard Hipp projetou o SQLite na primavera de 2000, enquanto trabalhava para a General Dynamics em um contrato com a Marinha dos Estados Unidos . Hipp estava projetando um software usado para um sistema de controle de danos a bordo de destruidores de mísseis guiados , que originalmente usavam HP-UX com um back-end de banco de dados IBM Informix . SQLite começou como uma extensão Tcl .

Os objetivos de design do SQLite eram permitir que o programa fosse operado sem instalar um sistema de gerenciamento de banco de dados ou exigir um administrador de banco de dados . O Hipp baseou a sintaxe e a semântica nas do PostgreSQL 6.5. Em agosto de 2000, foi lançada a versão 1.0 do SQLite, com armazenamento baseado em gdbm (GNU Database Manager). O SQLite 2.0 substituiu o gdbm por uma implementação de árvore B personalizada , adicionando capacidade de transação . SQLite 3.0, parcialmente financiado pela America Online , adicionou internacionalização , digitação de manifesto e outras melhorias importantes.

Em 2011, Hipp anunciou seus planos de adicionar uma interface NoSQL (gerenciamento de documentos expressos em JSON ) aos bancos de dados SQLite e desenvolver o UnQLite , um banco de dados orientado a documentos incorporável .

SQLite é um dos quatro formatos recomendados para armazenamento de longo prazo de conjuntos de dados aprovados para uso pela Biblioteca do Congresso .

Recursos

O SQLite implementa a maior parte do padrão SQL-92 para SQL , mas carece de alguns recursos. Por exemplo, ele fornece gatilhos apenas parcialmente e não pode gravar em visualizações (no entanto, ele fornece gatilhos INSTEAD OF que fornecem essa funcionalidade). Seu suporte para instruções ALTER TABLE é limitado.

O SQLite usa um sistema de tipos incomum para um DBMS compatível com SQL: em vez de atribuir um tipo a uma coluna como na maioria dos sistemas de banco de dados SQL, os tipos são atribuídos a valores individuais; em termos de linguagem, é tipado dinamicamente . Além disso, é fracamente tipado em algumas das mesmas maneiras que o Perl : pode-se inserir uma string em uma coluna inteira (embora o SQLite tente converter a string em um inteiro primeiro, se o tipo preferido da coluna for inteiro). Isso adiciona flexibilidade às colunas, especialmente quando vinculadas a uma linguagem de script digitada dinamicamente. No entanto, a técnica não é portátil para outros produtos SQL. Uma crítica comum é que o sistema de tipos do SQLite carece do mecanismo de integridade de dados fornecido por colunas digitadas estaticamente em outros produtos. O site do SQLite descreve um modo de "afinidade estrita", mas esse recurso ainda não foi adicionado. No entanto, pode ser implementado com restrições como CHECK(typeof(x)='integer').

As tabelas normalmente incluem uma coluna de índice rowid oculta , que oferece acesso mais rápido. Se um banco de dados inclui uma coluna de chave primária inteira, o SQLite irá tipicamente otimizá-la tratando-a como um alias para rowid , fazendo com que o conteúdo seja armazenado como um inteiro assinado de 64 bits estritamente tipado e mudando seu comportamento para ser algo como um auto- incrementar coluna. Versões futuras do SQLite podem incluir um comando para introspectar se uma coluna tem um comportamento como o de rowid para diferenciar essas colunas de Chaves Inteiras Inteiras não autoincrementadas e de tipo fraco.

SQLite com função Unicode completa é opcional.

Vários processos ou threads de computador podem acessar o mesmo banco de dados simultaneamente. Vários acessos de leitura podem ser satisfeitos em paralelo. Um acesso de gravação só pode ser satisfeito se nenhum outro acesso estiver sendo atendido no momento. Caso contrário, o acesso de gravação falha com um código de erro (ou pode ser repetido automaticamente até que um tempo limite configurável expire). Essa situação de acesso simultâneo mudaria ao lidar com tabelas temporárias. Essa restrição é relaxada na versão 3.7 quando o log de gravação antecipada (WAL) está ativado, permitindo leituras e gravações simultâneas.

A versão 3.6.19 lançada em 14 de outubro de 2009 adicionou suporte para restrições de chave estrangeira.

O SQLite versão 3.7.4 viu pela primeira vez a adição do módulo FTS4 (pesquisa de texto completo), que apresenta melhorias em relação ao módulo FTS3 antigo. O FTS4 permite que os usuários realizem pesquisas de texto completo em documentos semelhantes à forma como os mecanismos de pesquisa pesquisam páginas da web. A versão 3.8.2 adicionou suporte para a criação de tabelas sem rowid , o que pode fornecer melhorias de espaço e desempenho. O suporte a expressões de tabela comuns foi adicionado ao SQLite na versão 3.8.3. 3.8.11 adicionou um novo módulo de pesquisa chamado FTS5, as mudanças mais radicais (em comparação com FTS4) exigindo um aumento na versão.

Em 2015, com a extensão json1 e novas interfaces de subtipo, o SQLite versão 3.9 introduziu o gerenciamento de conteúdo JSON .

De acordo com a versão 3.33.0, o tamanho máximo do banco de dados suportado é 281 TB.

Desenvolvimento e distribuição

O código do SQLite é hospedado no Fossil , um sistema de controle de versão distribuído que é construído sobre um banco de dados SQLite.

Um programa de linha de comando independente é fornecido na distribuição do SQLite. Ele pode ser usado para criar um banco de dados, definir tabelas, inserir e alterar linhas, executar consultas e gerenciar um arquivo de banco de dados SQLite. Também serve como exemplo para escrever aplicativos que usam a biblioteca SQLite.

O SQLite usa testes de regressão automatizados antes de cada versão. Mais de 2 milhões de testes são executados como parte da verificação de uma versão. A partir da versão de 10 de agosto de 2009 do SQLite 3.6.17, as versões do SQLite têm 100% de cobertura de teste de branch, um dos componentes da cobertura de código . Os testes e equipamentos de teste são parcialmente de domínio público e parcialmente proprietários .

Usos notáveis

Middleware

  • O adaptador ADO.NET , inicialmente desenvolvido por Robert Simpson, é mantido em conjunto com os desenvolvedores do SQLite desde abril de 2010.
  • O driver ODBC foi desenvolvido e mantido separadamente por Christian Werner. O driver ODBC de Werner é o método de conexão recomendado para acessar o SQLite do OpenOffice.org .
  • Wrapper COM ( ActiveX ) tornando SQLite acessível no Windows para linguagens de script como JScript e VBScript . Isso adiciona recursos de banco de dados SQLite a aplicativos HTML (HTA).

Navegadores da web

  • Os navegadores Google Chrome , Opera , Safari e o navegador Android permitem armazenar e recuperar informações em um banco de dados SQLite dentro do navegador, usando a tecnologia de banco de dados Web SQL , embora esteja rapidamente se tornando obsoleto (ou seja, substituído por IndexedDB ) . Internamente, esses navegadores baseados em Chromium usam bancos de dados SQLite para armazenar dados de configuração, como histórico de visitas ao site, cookies, histórico de download, etc.
  • Mozilla Firefox e Mozilla Thunderbird armazenam uma variedade de dados de configuração (favoritos, cookies, contatos, etc.) em bancos de dados SQLite gerenciados internamente. Até a versão 57 do Firefox ( "Firefox Quantum" ), havia um complemento de terceiros que usava a API que suportava essa funcionalidade para fornecer uma interface de usuário para o gerenciamento de bancos de dados SQLite arbitrários.
  • Vários complementos de terceiros podem usar APIs de JavaScript para gerenciar bancos de dados SQLite.

Estruturas de aplicativos da web

Vários

Sistemas operacionais

SQLite é incluído por padrão em:

Suporte a linguagem de programação

Existem vinculações de linguagem ao SQLite para um grande número de linguagens de programação , incluindo:

Veja também

Referências

Citações

Fontes

links externos