SQLite

Software screenshot:
SQLite
Dettagli del software:
Versione: 3.24.0 Aggiornato
Data di caricamento: 22 Jun 18
Sviluppatore: D. Richard Hipp
Licenza: Libero
Popolarità: 82

Rating: 5.0/5 (Total Votes: 1)

SQLite è una libreria C open source, multipiattaforma, gratuita e di piccole dimensioni che implementa un motore di database SQL autonomo, integrabile, transazionale, senza server e con configurazione zero. È il motore di database SQL più usato del mondo.


Caratteristiche a colpo d'occhio

Le funzionalità principali includono il supporto per transazioni isolate, atomiche, durevoli e coerenti, implementazione SQL92, i file di database possono essere liberamente condivisi tra computer, supporta database fino a 2 terabyte, supporto per blob e stringhe di dimensioni gigabyte, ingombro di codice ridotto, come come un'API (Application Programming Interface) di facile utilizzo e molto semplice.

Inoltre, SQLite non richiede la configurazione iniziale o l'ulteriore amministrazione, consente agli sviluppatori di archiviare un database completo in un unico file su disco multipiattaforma, perfetto per l'utilizzo di formati di file applicativi, senza dipendenze esterne e dotato di in TCL (Tool Command Language) binding e documentazione completa.

I binding per numerosi altri linguaggi di programmazione sono disponibili separatamente. Il suo codice sorgente è ben commentato e viene fornito con un client CLI (Command-Line Interface) indipendente che è stato progettato dall'offset da utilizzare per l'amministrazione dei database SQLite.


Per cosa posso usarlo?

Il motore di database SQLite può essere utilizzato per qualsiasi scopo, personale o commerciale. Gli usi suggeriti per SQLite includono database per gadget, database del sito Web, supporto per un RDBMS aziendale (sistema di gestione del database relazionale), nonché il formato del file dell'applicazione.


Sotto il cofano e sistemi operativi supportati

La distribuzione SQLite viene fornita con un programma di accesso da riga di comando (sqlite) autonomo che può essere utilizzato per amministrare un database SQLite e che funge da esempio di come utilizzare la libreria SQLite. È scritto interamente nel linguaggio di programmazione ANSI-C.

I sistemi operativi desktop supportati includono GNU / Linux, Mac OS X e Microsoft Windows. I sistemi operativi mobili supportati includono Android e iOS. È stato testato con successo con piattaforme hardware a 32 e 64 bit e può essere facilmente trasferito su altri sistemi operativi.

Novità in questa versione:

  • I punti salienti di questa versione includono il supporto per UPSERT in stile PostgreSQL e prestazioni migliorate, specialmente per le query ORDER BY LIMIT.

Novità della versione nella versione:

  • Sfrutta le funzionalità di scrittura atomica nel filesystem F2FS quando disponibile, per un overhead delle transazioni notevolmente ridotto. Attualmente richiede l'opzione di compilazione SQLITE_ENABLE_BATCH_ATOMIC_WRITE.
  • Consenti ai comandi ATTACH e DETACH di lavorare all'interno di una transazione.
  • Consenti alle tabelle virtuali ROWID di essere modificabili se la PRIMARY KEY contiene esattamente una colonna.
  • Il & quot; fsync () & quot; che si verifica dopo che l'intestazione è stata scritta in un reset WAL ora utilizza le impostazioni di sincronizzazione per i checkpoint. Ciò significa che utilizzerà un & quot; fullfsync & quot; su Mac se PRAGMA checkpoint_fullfsync è impostato su
  • La funzione sqlite3_sourceid () prova a rilevare se il codice sorgente è stato modificato da ciò che è controllato nel controllo della versione e se ci sono modifiche, gli ultimi quattro caratteri dell'hash della versione sono mostrati come & quot; alt1 & quot; o & quot; alt2 & quot ;. L'obiettivo è di rilevare modifiche accidentali e / o incuranti. Un falsario può sovvertire questa funzione.
  • Migliorato il de-quoting dei nomi delle colonne per le istruzioni CREATE TABLE AS con una query aggregata sul lato destro.
  • Meno & quot; stat () & quot; chiamate di sistema emesse dal VFS unix.
  • Ottimizzazione dell'ottimizzazione LIKE in modo che funzioni con una clausola ESCAPE.
  • Enhanced PRAGMA integrity_check e PRAGMA quick_check per rilevare oscure corruzioni di riga che in precedenza erano mancanti. Aggiorna anche entrambi i pragma in modo che restituiscano il testo di errore piuttosto che SQLITE_CORRUPT quando incontrano corruzione nei record.
  • Ora il pianificatore di query preferisce implementare le subquery FROM-clause utilizzando le co-routine piuttosto che l'ottimizzazione della conversione della trasparenza della query. Il supporto per l'uso di co-routines per sottoquery potrebbe non essere più disabilitato.
  • Passare informazioni sui vincoli! =, IS, IS NOT, NOT NULL e IS NULL nel metodo xBestIndex delle tabelle virtuali.
  • Migliorata la tabella virtuale CSV in modo che accetti l'ultima riga di input se manca il carattere di nuova riga finale.
  • Rimuovi il raramente usato & quot; scratch & quot; allocatore di memoria. Sostituiscilo con l'impostazione di configurazione SQLITE_CONFIG_SMALL_MALLOC che dà a SQLite un suggerimento che le allocazioni di memoria di grandi dimensioni dovrebbero essere evitate quando possibile.
  • Aggiunta la tabella virtuale dello sciame all'estensione del tavolo virtuale union esistente.
  • Aggiunta la tabella virtuale sqlite_dbpage per fornire accesso diretto alle pagine del file di database. Il codice sorgente è incorporato nella fusione e viene attivato utilizzando l'opzione -DSQLITE_ENABLE_DBPAGE_VTAB in fase di compilazione.
  • Aggiungi un nuovo tipo di tabella virtuale fts5vocab - & quot; instance & quot; - che fornisce l'accesso diretto a un indice full text FTS5 al livello più basso possibile.
  • Rimuovi una chiamata a rand_s () nel VFS di Windows poiché causava problemi in Firefox su alcuni laptop più vecchi.
  • Il codice sorgente src / shell.c nella shell della riga di comando non è più sotto il controllo della versione. Quel file è ora generato come parte del processo di compilazione.
  • Microottimizzazioni varie riducono l'utilizzo della CPU di circa il 2,1%.
  • Correzioni di bug:
  • Risolve una dichiarazione assert () errata rilevata da OSSFuzz. Ticket cb91bf4290c211d
  • Correggere un'oscura perdita di memoria in sqlite3_result_pointer (). Biglietto 7486aa54b968e9b
  • Evitare un possibile errore use-after-free rinviando i reimpostazioni dello schema fino al termine dell'esecuzione del pianificatore di query. Ticket be436a7f4587ce5
  • Utilizzare solo indici su espressioni per ottimizzare ORDER BY o GROUP BY se il COLLATE è corretto. Ticket e20dd54ab0e4383
  • Risolto un errore di asserzione che si stava verificando quando l'espressione in un indice su espressioni è davvero una costante. Biglietto aa98619ad08ddca
  • Risolto un errore di asserzione che poteva verificarsi in seguito a PRIGMA reverse_unordered_selects. Ticket cb91bf4290c211d
  • Risolve un segfault che può verificarsi per query che utilizzano funzioni con valori di tabella in una sottoquery IN o EXISTS. Ticket b899b6042f97f5
  • Risolve un potenziale problema di overflow integer durante la compilazione di una particolare espressione di tabella comune orrenda. Questo era un altro problema scoperto da OSSFuzz. Effettuare il check-in 6ee8cb6ae5.
  • Risolve una potenziale lettura fuori limite quando si esegue una query su un file di database corrotto, un problema rilevato da Natalie Silvanovich di Google Project Zero. Check-in 04925dee41a21f.

Novità nella versione 3.20.1:

  • La versione patch 3.20.1 modifica due righe di codice nell'interfaccia sqlite3_result_pointer () per correggere una perdita di memoria rara.

Novità nella versione 3.9.2:

  • SQLite versione 3.9.2 è una versione di patch che risolve due bug oscuri.

Novità della versione 3.8.9:

  • Le nuove funzionalità di questa versione includono il comando PRAGMA index_xinfo, l'interfaccia sqlite3_status64 () e il comando ".dbinfo" della shell della riga di comando.

Novità nella versione 3.8.8.2:

  • La versione di patch 3.8.8.2 corregge un singolo problema minore: assicura che l'operazione sqlite3_wal_checkpoint (TRUNCATE) tronchi sempre il log write-ahead anche se il log era già stato ripristinato e non conteneva nuovi contenuti. Non è chiaro se si tratta di una correzione di bug o di una nuova funzionalità.
  • Qualcosa del genere andrebbe normalmente nella prossima versione pianificata regolarmente, ma un utente di SQLite di primo piano aveva bisogno del cambiamento in fretta, quindi siamo stati felici di farlo uscire con questa patch.
  • Non c'è alcun motivo per eseguire l'aggiornamento a meno che non sia effettivamente necessario il comportamento migliorato di sqlite3_wal_checkpoint (TRUNCATE).

Novità nella versione 3.8.8.1:

  • Risolto un bug nella logica di ordinamento, presente dalla versione 3.8.4, che può far apparire l'output nell'ordine sbagliato nelle query che contengono una clausola ORDER BY, una clausola LIMIT e che hanno circa 60 o più colonne in il set di risultati. Ticket f97c4637102a3ae72b79.
  • SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
  • SHA1 per sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e

Novità della versione 3.8.8:

  • Nuove funzionalità:
  • Aggiunto il comando PRAGMA data_version che può essere utilizzato per determinare se un file di database è stato modificato da un altro processo.
  • Aggiunta l'opzione SQLITE_CHECKPOINT_TRUNCATE all'interfaccia sqlite3_wal_checkpoint_v2 (), con i corrispondenti miglioramenti a wal_checkpoint di PRAGMA.
  • Aggiunta dell'interfaccia sqlite3_stmt_scanstatus (), disponibile solo se compilata con SQLITE_ENABLE_STMT_SCANSTATUS.
  • sqlite3_table_column_metadata () è stato migliorato per funzionare correttamente sulle tabelle WITHOUT ROWID e per verificare l'esistenza di una tabella se il parametro del nome della colonna è NULL. L'interfaccia è ora inclusa anche nella compilazione per impostazione predefinita, senza richiedere l'opzione di compilazione SQLITE_ENABLE_COLUMN_METADATA.
  • Aggiunta l'opzione di compilazione SQLITE_ENABLE_API_ARMOR.
  • Aggiunta l'opzione di compilazione SQLITE_REVERSE_UNORDERED_SELECTS.
  • Aggiunta l'opzione di compilazione SQLITE_SORTER_PMASZ e l'opzione di avvio SQLITE_CONFIG_PMASZ.
  • Aggiunta l'opzione SQLITE_CONFIG_PCACHE_HDRSZ a sqlite3_config () che semplifica le applicazioni per determinare la quantità appropriata di memoria da utilizzare con SQLITE_CONFIG_PAGECACHE.
  • Il numero di righe in una clausola VALUES non è più limitato da SQLITE_LIMIT_COMPOUND_SELECT.
  • Aggiunta l'estensione caricabile eval.c che implementa una funzione eval () SQL che valuterà ricorsivamente SQL.
  • Miglioramenti delle prestazioni:
  • Riduci il numero di operazioni memcpy () coinvolte nel bilanciamento di un albero b, per un incremento generale delle prestazioni del 3,2%.
  • Miglioramenti delle stime dei costi per l'ottimizzazione di skip-scan.
  • L'ottimizzazione dell'indicizzazione automatica è ora in grado di generare un indice parziale, se appropriato.
  • Correzioni di bug:
  • Garantire la durata dopo una perdita di alimentazione con "PRAGMA journal_mode = TRUNCATE" chiamando fsync () subito dopo aver troncato il file journal.
  • Il pianificatore di query ora riconosce che qualsiasi colonna nella tabella di destra di un SINISTRO SINISTRO può essere NULL, anche se quella colonna ha un vincolo NOT NULL. Evitare di provare a ottimizzare i test NULL in questi casi. Correzione del ticket 6f2222d550f5b0ee7ed.
  • Verifica che ORDER BY inserisca le righe in ordine crescente anche se l'operatore DISTINCT viene implementato utilizzando un indice discendente. Correzione del ticket c5ea805691bfc4204b1cb9e.
  • Correggere le gare di dati che potrebbero verificarsi in condizioni di stress durante l'esecuzione con molti thread in modalità cache condivisa in cui alcuni thread stanno aprendo e chiudendo le connessioni.
  • Correggere bug oscuri di crash trovati da American fuzzy lop. Biglietto a59ae93ee990a55.
  • aggirare un bug di GCC optimizer (per gcc 4.2.1 su MacOS 10.7) che ha causato l'estensione R-Tree per calcolare risultati errati quando compilato con -O3.
  • Altre modifiche:
  • Disabilita l'uso della routine della libreria C strchrnul () a meno che non sia specificatamente abilitato usando l'opzione -DHAVE_STRCHRNULL in fase di compilazione.
  • Miglioramenti dell'efficacia e dell'accuratezza delle funzioni di suggerimento SQL verosimili (), probabili () e improbabili ()
  • SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
  • SHA1 per sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905

Novità nella versione 3.8.7.4:

  • Questa versione corregge le aggiunte in un mutex richiesto dalle modifiche della patch 3.8.7.3 ma è stato accidentalmente omesso. Il mutex non era richiesto da nessuno dei test interni di SQLite, ma Firefox si blocca senza di esso. Sono stati aggiunti casi di test per garantire che il mutex non venga mai più perso.

Novità nella versione 3.8.7.3:

  • Correzione bug: assicurarsi che gli oggetti KeyInfo memorizzati nella cache (un'astrazione interna non visibile all'applicazione) non vadano stantii quando funzionano in modalità cache condivisa e chiudono e riapre frequentemente alcune connessioni al database lasciando aperte altre connessioni di database sulla stessa cache condivisa continuamente. Biglietto e4a18565a36884b00edf.
  • Correzione bug: riconoscere che qualsiasi colonna nella tabella di destra di un SINISTRO SINISTRA può essere NULL anche se la colonna ha un vincolo NOT NULL. Non applicare ottimizzazioni che presuppongono che la colonna non sia mai NULL. Ticket 6f2222d550f5b0ee7ed.
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
  • SHA1 per sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

Novità nella versione 3.8.7.2:

  • Il motivo principale di questa versione è di migliorare il comando ROLLBACK in modo che consenta l'esecuzione di query sulla stessa connessione di database per continuare a essere eseguito finché il ROLLBACK non modifica lo schema. In tutte le precedenti versioni di SQLite, un ROLLBACK causava l'interruzione immediata delle query in sospeso e restituiva SQLITE_ABORT o SQLITE_ABORT_ROLLBACK. Le query in sospeso continuano ad interrompersi se il ROLLBACK cambia lo schema del database, ma a partire da questa versione di patch, le query possono continuare a essere eseguite se lo schema non è modificato.
  • Oltre al potenziamento ROLLBACK, questa patch include anche correzioni per tre bug oscuri.

Novità nella versione 3.8.7.1:

  • La ragione principale di questa versione di bug-fix è di risolvere un problema con l'aggiornamento del valore dei campi alla fine di una tabella che sono stati aggiunti usando ALTER TABLE ADD COLUMN. Questo problema 1 è apparso per la prima volta nella versione 3.8.7.
  • Un'altra piccola seccatura nella versione 3.8.7 è stata il fatto che la build Android ha provato a utilizzare la funzione strchrnul () dalla libreria C standard, ma quella funzione non è disponibile su Android. Le build di Android dovevano aggiungere -DHAVE_STRCHRNUL = 0 per aggirare il problema. Questa patch risolve il problema in modo che le build di Android ora funzionino senza modifiche.
  • L'operazione di PRAGMA journal_mode = TRUNCATE è stata migliorata in modo che invochi fsync () dopo aver troncato il file journal quando PRAGMA synchronous = FULL. Ciò aiuta a preservare la durabilità delle transazioni nel caso in cui si verifichi un'interruzione dell'alimentazione subito dopo il commit.
  • Infine, sono stati risolti un paio di problemi oscuri e di lunga data associati all'aggiornamento di UPDATE e DELETE su VIEW.

Novità della versione 3.8.7:

  • La maggior parte delle modifiche apportate alla versione precedente sono state micro-ottimizzazioni progettate per aiutare SQLite a funzionare un po 'più velocemente. Ogni singola ottimizzazione ha un impatto sulle prestazioni non enormemente ridotto. Ma i miglioramenti si sommano. Misurata su un carico di lavoro ben definito (che gli sviluppatori SQLite utilizzano come proxy per un carico di lavoro tipico dell'applicazione) utilizzando cachegrind su Linux e compilato con gcc 4.8.1 e -Os su x64 linux, la versione corrente fa più del 20% di lavoro in più lo stesso numero di cicli della CPU rispetto alla versione precedente. Cachegrind non è una vera CPU e il carico di lavoro utilizzato per la misurazione è solo un proxy. Quindi la tua performance potrebbe variare. Ci aspettiamo di vedere circa la metà del miglioramento misurato e segnalato nelle applicazioni del mondo reale. Il 10% è inferiore al 20%, ma è ancora abbastanza buono, pensiamo.
  • Questa versione include un nuovo set di interfacce in linguaggio C con parametri a 64 bit senza segno anziché a 32 bit con segno. Le nuove API non forniscono nuove funzionalità. Ma rendono più facile scrivere applicazioni più resistenti alle vulnerabilità di overflow di interi.
  • Questa versione include anche un nuovo sorter che è in grado di utilizzare più thread per facilitare le operazioni di ordinamento di grandi dimensioni. (Talvolta sono necessarie operazioni di ordinamento per implementare le clausole ORDER BY e / o GROUP BY e sono quasi sempre obbligatorie per CREATE INDEX.) Il sorter multi-thread è disattivato per impostazione predefinita e deve essere abilitato utilizzando il comando SQL Thread di PRAGMA. Nota che il sorter multi-thread offre prestazioni in tempo reale più veloci per grandi tipi, ma utilizza anche più cicli della CPU e più energia.

Novità nella versione 3.8.3.1:

  • SQLite versione 3.8.3.1 corregge un bug presente nelle versioni 3.8.1, 3.8.2 e 3.8.3 che può causare query per omettere righe valide. Si consiglia di eseguire l'aggiornamento da tali versioni.
  • Il problema si presenta solo se SQLite è compilato con le opzioni di compilazione SQLITE_ENABLE_STAT3 o SQLITE_ENABLE_STAT4. In tal caso, se una query ha una clausola WHERE che contiene espressioni come questa:
  • WHERE (expr1 O expr2 OR ... O exprN) E colonna NON È NULL
  • Dove tutti gli espr1 da exprN sono adatti per gli indici, quindi durante la pianificazione delle query SQLite potrebbe erroneamente convertire il termine "colonna NON NULLA" in "colonna & gt; NULL". Ma il secondo termine non è mai vero, e quindi la query non restituirebbe righe.

Novità della versione 3.8.3:

  • Aggiunto il supporto per le espressioni di tabella comuni e la clausola WITH.
  • Aggiunta la funzione SQL printf ().
  • Aggiunto SQLITE_DETERMINISTIC come bit opzionale nel 4o argomento di sqlite3_create_function () e interfacce correlate, fornendo alle applicazioni la possibilità di creare nuove funzioni che possono essere prese in considerazione dai loop interni quando hanno argomenti costanti.
  • Aggiungi codice di errore SQLITE_READONLY_DBMOVED, restituito all'inizio di una transazione, per indicare che il file di database sottostante è stato rinominato o spostato da sotto SQLite.
  • Permetti espressioni arbitrarie, incluse chiamate di funzioni e sottoquery, nell'argomento filename ad ATTACH.
  • Permetti di utilizzare una clausola VALUES ovunque sia valida un'istruzione SELECT.
  • Rileva il PRNG usato da sqlite3_randomness (N, P) quando invocato con N == 0. Ripeti automaticamente dopo un fork () su unix.
  • Migliora la tabella virtuale spellfix1 in modo che possa cercare in modo efficiente con rowid.
  • Miglioramenti delle prestazioni.
  • Miglioramenti ai commenti nella visualizzazione del codice byte VDBE durante l'esecuzione di EXPLAIN.
  • Aggiungi la direttiva "% token_class" al generatore di parser LEMON e usala per semplificare la grammatica.
  • Modificare il codice sorgente LEMON per evitare di chiamare funzioni di libreria C che OpenBSD considera pericolose. (Es: sprintf).
  • Correzione bug: nella funzione di importazione CSV della shell della riga di comando, non terminare un campo quando si verifica una doppia virgoletta con escape alla fine di una riga CRLN.
  • SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
  • SHA1 per sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee

Programmi simili

ArangoDB
ArangoDB

17 Feb 15

Berkeley DB
Berkeley DB

27 Apr 17

deltasql
deltasql

19 Feb 15

DB2
DB2

19 Feb 15

Commenti a SQLite

I commenti non trovato
Aggiungi commento
Accendere le immagini!