Quando se fala em banco de dados, ou SQL, vem logo a mente grandes SGBDs como Oracle, PostgreSQL, MySQL e SQL Server. Mas o SQLite por ser facilmente portavel para qualquer plataforma(movel ou nao), compacto, eficiente e confiavel. Tornou-o a engine de banco mais usada no mundo.As principais caracteristicas do SQLite sao:Serverless - Nao precisa-se de um banco de dados servidor de banco de dados para se trabalhar com SQLite ja que ele fica e apenas um arquivo e fica incorporado ao seu projeto.Zero Configuration - Nenhuma configuracao ou administracao e necessaria.Cross-Platform - O SQLite foi projetado para ser facilmente portavel. Podemos citar como sistemas com suporte a ele: Windows, Linux, BSD, Mac OS X, Solaris, HPUX, AIX. Plataformas embarcadas como o QNX(que sera base para o novo BBOS), VXWorks, Symbian, Palm OS, Windows CE, iOS, Android, Meego, Windows Phone 7 e tantos outros...Self-Contained - Nao ha dependencias externas para que se possa compila-lo.Small Runtime Footprint - A implementacao padrao toma menos de 1MB de codigo, e apenas alguns megabytes de memoria. Com alguns ajustes o tamanho da biblioteca e o uso de memoria podem ser reduzidos significativamente.Transactional - As transacoes do SQLite sao ACID(atomicas, consistentes, isoladas e duraveis). Mesmo que as transacoes sejam interrompidas por um problema no programa, ou falha do sistema operacional ou uma falha de energia do computador.Full-Featured - O banco de dados suporta grande parte da query language do padrao SQL92(SQL2). O comando VACUUM recontroi a estrutura da base de dados. Ha varias razoes para um aplicativo pode fazer isso:A menos que SQLite esteja sendo executado em modo "auto_vacuum = FULL". Quando uma grande quantidade de dados e excluido da base de dados, deixa-se um grande espaco vazio, ou paginas "livres" na base de dados. Isso pode causar uma base de dados ocupando mais espaco em disco do que o estritamente necessario.Executando VACUUM para reconstruir a base de dados recupera-se este espaco e reduz o tamanho do ficheiro de base de dados.Insercoes, atualizacoes e exclusoes frequentes podem causar um arquivo de banco de dados fragmentado - onde os dados de uma unica tabela ou indice estara espalhado em todo o arquivo de banco de dados.Execucao do comando VACUUM garantimos que cada tabela e indice serao armazenados de forma continua dentro do arquivo de banco de dados. Em alguns casos, VACUUM pode tambem reduzir o numero de paginas parcialmente cheios no banco de dados, reduzindo o tamanho da base de dados adicionalmente.Normalmente, o page_sizer e o suporte(ou nao) ao auto_vacuum devem ser configurados antes do arquivo de banco de dados ser criado. Entretanto, quando o modo write-ahead log nao esta habilitado, as opcoes page_size e/ou auto_vacuum de um arquivo de banco de dados ja existente podem ser modificados usando as PRAGMAS e logo em seguida o arquivo sofrera o VACUUM.Caso a propriedade write-ahead log esta habilitada apenas a funcionalidade de auto_vacuum pode ser modificada usando o VACUUM.O comando VACUUM pode alterar os IDs das celulas que nao possuirem uma INTEGER PRIMARY KEY explicita.O VACUUM falhara caso exista alguma transaction aberta, ou se houver uma ou mais instancias do