2009-05-20 11 views
14

sqlite utilizza qualcosa che gli autori chiamano "Manifest Typing", che in pratica significa che sqlite è digitato in modo dinamico: è possibile memorizzare un valore varchar in una colonna "int" se si desidera.Quando è utile digitare manifest di sqlite?

Questa è una decisione di progettazione interessante, ma ogni volta che ho usato sqlite, l'ho usato come un RDMS standard e ho trattato i tipi come se fossero statici. In effetti, non ho mai nemmeno desiderato colonne dinamiche durante la progettazione di database in altri sistemi.

Quindi, quando è utile questa funzione? Qualcuno ne ha trovato un valido utilizzo nella pratica che non avrebbe potuto essere svolto altrettanto facilmente con colonne tipizzate staticamente?

risposta

5

Semplicemente rende i tipi più facili da usare. Non è necessario preoccuparsi di quanto è grande questo campo deve essere a livello di database più o quanti numeri può essere il tuo interger. Più o meno è un "perché no?" cosa.

Dall'altro lato, la tipizzazione statica in SQL Server consente al sistema di cercare e indicizzare meglio, in alcuni casi molto meglio, ma per metà di tutte le applicazioni, dubito che i miglioramenti delle prestazioni del database siano importanti o che le loro prestazioni siano " povero "per altri motivi (le tabelle temporanee vengono create ogni selezione, le selezioni esponenziali, ecc.).

Uso SqLite sempre per i miei progetti .NET come cache client perché è troppo semplice anche l'uso. Ora, se riescono a far funzionare solo GUID come il server SQL, sarei un campeggiatore felice.

+2

Questo è un buon punto su, ad esempio, i campi varchar non sono più limitati a un certo numero di caratteri, che è qualcosa che mi ha sempre infastidito sui RDMS tradizionali. –

+0

Ho pensato che ci sarebbero state almeno altre "risposte" oltre alla mia. Questa è solo una prova ulteriore del fatto che abbiamo bisogno di ottenere SqLite.NET ancora di più. È COSÌ facile da usare e distribuire in luoghi in cui non * è necessario * SQL Server o Express. – JasonRShaver

4

La digitazione dinamica è utile per memorizzare cose come le impostazioni di configurazione. Prendi il registro di Windows, per esempio. Ogni chiave è molto simile a una tabella SQLite del modulo:

TABELLA CREATE Impostazioni (Nome TESTO PRIMARIO TASTO, Valore);

dove Valore può essere NULL (REG_NONE) o un INTEGER (REG_DWORD/REG_QWORD), TEXT (REG_SZ) o BLOB (REG_BINARY).

Inoltre, dovrò concordare con Jason sull'utilità di non applicare una dimensione massima per le stringhe. Poiché la maggior parte del tempo, questi limiti sono puramente arbitari, è possibile trovare un giorno la ricerca di una stringa da 32 byte che deve essere archiviata nel VARCHAR (30).