12. Liite: Tietokannan skeema
blunderDB-tietokanta on yksinkertainen SQLite-tiedosto (pääte .db). Ilman blunderDB:tä se voidaan siten avata ja tarkastella millä tahansa SQLite-editorilla tai -tiedostoselaimella.
12.1. Versiointi ja migraatiot
Tietokannan skeema on versioitu. Skeeman nykyinen versio on 2.14.0; se on riippumaton sovelluksen versiosta ja sitä kasvatetaan vain, kun sisäinen rakenne muuttuu. Avatun tietokannan skeeman versio näkyy Metatiedot-paneelissa (komento meta).
Tärkeä
Varmuuskopioi aina .db-tiedostosi ennen kuin avaat aiemmalla blunderDB:n versiolla luodun tietokannan.
Muista
Versiosta 0.10.0 alkaen kaikki skeeman migraatiot suoritetaan automaattisesti tietokantaa avattaessa. Manuaalista migraatiokomentoa ei tarvita. Migraatio tehdään paikan päällä: uudempaan skeemaan migroitua tietokantaa ei enää voi avata blunderDB:n vanhemmilla versioilla, mistä johtuu etukäteisvarmuuskopioinnin tärkeys.
12.2. Päätaulut
Nykyinen skeema rakentuu seuraavien taulujen ympärille:
Asemat ja analyysit:
position(asemat, deduplikoituina),analysis(niihin liittyvät analyysitiedot) jacomment(kommentit).Ottelut:
match,game,movejamove_analysistallentavat tuodut ottelut, niiden pelit, siirrot ja kunkin siirron analyysin.Kokoelmat:
collectionjacollection_position(liitostaulu) ryhmittelevät manuaalisesti valittuja asemia.Turnaukset:
tournamentryhmittelee otteluita turnauksiksi.Välitoisto (Anki):
anki_deck,anki_cardjaanki_review_loghallitsevat pakkoja, kortteja ja kertausten lokia (FSRS-algoritmi).Historia ja muut:
command_historyjasearch_historysäilyttävät komentojen ja hakujen historian,filter_librarysuodatinkirjaston jametadatatietokannan metatiedot (mukaan lukien skeeman version).
12.3. Suunnitteluperiaatteet
Skeemasta 2.0.0 alkaen useat suunnitteluratkaisut nopeuttavat hakua ja pienentävät tiedoston kokoa:
Asemien deduplikointi: jokaisella asemalla on Zobrist-tiiviste ja uniikki indeksi, joten sama asema, joka kohdataan useissa tuonneissa, tallennetaan vain kerran.
Denormalisoidut suodatussarakkeet: usein haetut kriteerit (päätöstyyppi, nopat, pip-ero, pelistä poistetut nappulat, takana olevat nappulat, siirto- tai kuutiovirhe, voiton mahdollisuudet…) esilasketaan omiin sarakkeisiinsa nopeaa suodatusta varten.
Esisuodatus bitboardeilla: miehityssarakkeet ja pistemaskisarakkeet mahdollistavat erittäin nopean kokonaislukupohjaisen esisuodatuksen rakennemotiivien hakujen aikana.
Kompakti tallennus: asemat koodataan kompaktisti ja analyysitiedot pakataan (zlib), mikä pienentää tiedoston kokoa merkittävästi.
WAL-lokitus: WAL-tila ja säädetyt PRAGMA:t parantavat luku- ja kirjoitussuorituskykyä.