TXB
I file con estensione TXB (Tassistro dataBase) sono nati con l'obiettivo di creare una semplice base dati con dizionario, facile da creare e leggere su ogni piattaforma.
Gli obiettivi sono:
- Tabella
Il file deve essere una tabella composta in righe (record) con descrizione dettagliata dei campi: tipo, lunghezza.
- Editabile
Il file deve essere editabile da un comune text editor.
- Semplice
Il file non deve essere strutturato ma una semplice tabella, tipo un CSV.
- Compatto
Il file deve contentere gli stretti caratteri necessari per separari i dati. A differenza di un XML che volumizza in modo esagerato.
- Facile da creare e da leggere
Il file deve essere facile da creare indipendentemente dal linguaggio usato e dalla piattaforma su cui gira.
- Veloce
Per la loro semplice struttura sono velocissimi da trattare e da creare.
Come sono fatti
Il file è un semplice file di testo a 8bit senza intestazione
BOM.
Il TXB ha un intestazione che permette di stabilire in
primis il tipo di encoding del file e i due delimitatori di riga e colonna.
- Encoding
Gli encoding possibili sono ASCII, ANSI,ISO (Latin-1) e UTF8.
- Delimitatori
I delimitatore è il carattere (solitamente un carattere ma se ne possono usare anche più di uno) che delimita la colonna e la riga.
Di default si usa il \1 (ASCII 1) per le colonne e il \2 (ASCII 2) per le righe.
Difficilmente vengono usati questi due caratteri, nemmeno nelle codificazione come l'UTF8.
Se il carattere viene usato all'interno di una stringa della tabella è necessario cambiaro (Es \3 e \4). In caso contrario si ha un crash del files.
La prima riga dell'header deve finire con CRLF.
Seguono l'elenco delle righe separate in colonne e righe usando i delimitatori.
La prima riga però deve essere la definizione del dizionario; cioè deve contenere una definizione per ogni colonna del nome e tipo di campo, separata come separatore di colonna e finire con il separatore di riga.
Il campo è cosi descritto:
[Nome del campo], [Tipo - 1 byte][Lunghezza 3 byte][Extra info 1 byte]
E' possibile anche non indicare nel dettaglio la tipologia, per esempio (si vuol far presto) si può indicare solo il Nome seguito da ",A" e 4 spazi. Tutti i campi verranno trattati come un alfanumerico.
I tipi gestiti sono:
- A : Alfanumerico
- N : Numerico
- D : Data (scritto yyyymmdd)
- B : Boolean
- I : Intero (16bit)
- L : Intero (32bit)
- + : Campo numerico ad autoincremento (id)
Se la lunghezza massima può essere 999 e deve essere allineata a destra.
Indicare 0 per i campi a lunghezza dimanica (Es. TEXT/BLOB).
L'ultimo carattere info indica:
- Negli alfanumerici se sono case sensitive.
- Nei numerici il numero di decimali.
Es. alfanumerico di 10 byte
ISOCODE,A 100
<TXB><VER>2.0</VER><ENCODING>UTF-8</ENCODING><COLSEP></COLSEP><ROWSEP>
</ROWSEP></TXB>
ISOCODE,A 100NAME,A 800NAME_P,A1000ISOPARENT,A 100ISO3,A 30ISONUM,A 50GPS,A 500TIPO,L 00DESC_IT,A 00DESC_EN,A 00DESC_FR,A 00DESC_DE,A 00DESC_ES,A 00DESC_RU,A 00DESC_CN,A 00PREFIX,A 100
ADANDORRAAndorraAND200AndorraAndorraAndorreAndorraAndorraÐндорра安é“å°”
I limiti
Ogni scelta di performance e compattezza, in programmazione si paga sempre con i limiti, e TXB non ne fa eccezione.
- Non permette la condivisione
Il file viene normalmente letto e gestito in memoria e poi scritto totalmente.
- Non è strutturato
Il file è una semplice tabella, non è possibile creare strutture annidate o ad albero. Per quello esistono formati come XML e JSON.
- Sola lettura
Solitamente per la non condivisione il file viene usato come sola lettura o come scambio dati. Spesso come output dati via Web, preferibile per compattezza e minor influsso sul consumo di banda (band-width) a xml o json.