Zgodovina sprememb
Tabela MariaDB, ustvarjena z WITH SYSTEM VERSIONING (MariaDB 10.3 in novejše), hrani vsako starejšo različico vsake vrstice: UPDATE shrani staro različico, preden zapiše novo, DELETE pa obdrži vrstico, ki jo odstrani. NabuSQL vam omogoča pregledovanje te zgodovine.
Tako tabelo v stranski vrstici kliknite z desno tipko in izberite Zgodovina sprememb. Vnos se pojavi samo pri sistemsko verzioniranih tabelah — MySQL jih nima, zato ga na MySQL nikoli ne vidite.
Dva pogleda
| Pogled | Kaj prikaže |
|---|---|
| Vse različice vrstic | Vsako različico vsake vrstice, najnovejše najprej, vsako z obdobjem veljavnosti |
| Na določen trenutek | Tabelo natanko takšno, kot je bila ob izbranem datumu in času |
Prva dva stolpca sta Velja od in Velja do, sledijo pa stolpci tabele. Različica, ki še velja, nima konca: v stolpcu Velja do piše trenutna, vrstica pa je poudarjena.
Čas strežnika
Izbrani trenutek se bere v časovnem pasu strežnika, prav tako časi v obeh stolpcih. Če strežnik teče v drugem časovnem pasu kot vaš računalnik, vnesite čas strežnika.
Branje zgodovine
- Vrstica, spremenjena trikrat, se pojavi štirikrat — izvirnik in vsaka sprememba.
- Izbrisana vrstica je še vedno tam, s časom Velja do in brez trenutne različice.
- Stolpci
INVISIBLEostanejo skriti, kot v mreži podatkov. - Pogled je samo za branje: zgodovine ni mogoče urejati.
- Na stran se prikaže 500 različic; ‹ in › premikata med stranmi, orodna vrstica pa pokaže skupno število.
Podprte vrste verzioniranja
Prepoznane so vse tri oblike, ki jih ponuja MariaDB:
| Oblika | Kako se deklarira | Stolpci veljavnosti |
|---|---|---|
| Navadna | CREATE TABLE … WITH SYSTEM VERSIONING | Skrita stolpca MariaDB ROW_START / ROW_END |
| Lastni stolpci obdobja | … GENERATED ALWAYS AS ROW START / ROW END in PERIOD FOR SYSTEM_TIME (a, b) | Vaši stolpci, vidni ali INVISIBLE |
| Natančno po transakcijah | Stolpci obdobja vrste BIGINT UNSIGNED | ID-ji transakcij namesto časov |
Kako tabelo verzionirati
V urejevalniku SQL izvedite:
ALTER TABLE invoice ADD SYSTEM VERSIONING;Zgodovina se začne od tega trenutka; prejšnje spremembe niso bile nikoli zabeležene.
Urejevalnik strukture na verzioniranih tabelah še naprej deluje. MariaDB zavrne vsak ALTER na njih, razen če je system_versioning_alter_history nastavljen na KEEP, zato ga NabuSQL nastavi za svoje povezave; obstoječa zgodovina ostane, kot je.
Velikost in čiščenje
Zgodovina se nikoli ne odstrani sama, zato tabela, ki se pogosto spreminja, raste. Za odstranitev različic, starejših od danega trenutka:
DELETE HISTORY FROM invoice BEFORE SYSTEM_TIME '2026-01-01 00:00:00';Varnostne kopije, prenosi in preimenovanja
- Varnostna kopija ali dump vsebuje trenutne vrstice, obnovljena tabela pa je spet verzionirana — vendar se njena zgodovina začne na novo, kot pri
mysqldump. - Preimenovanje baze premakne vsako tabelo v celoti, skupaj z zgodovino.
- Prenos podatkov kopira trenutne vrstice v navadno tabelo; če ga želite tudi na cilju, pozneje dodajte
SYSTEM VERSIONING.
