StoreContent/analyitics ist eine gewöhnliche SQLite-Datenbank:
StoreContent/analyitics: SQLite 3.x database, last written using SQLite version 3043002,
writer version 2, read version 2, file counter 52, database pages 126, cookie 0x6e,
schema 4, largest root page 113, UTF-8, vacuum mode 1, version-valid-for 52
Er enthält die Dokumentdefinition: die Abfrage, ihre Tabellen und Joins, die
Bereiche und Elemente des Berichts sowie den Schema-Snapshot der Datenbank. Das
Core-Data-Modell ist MAD/MAD.xcdatamodel; alle seine Entitäten tragen das
Präfix Rptq (RptqDocument, RptqQuery, RptqDocumentElement,
RptqDocumentSection, …).
Zwei Eigenschaften dieses Speichers sind entscheidend für die Portabilität:
-wal und -shm werden zusammen mit der
Hauptdatenbank im Archiv ausgeliefert. Ein Leser, der nur analyitics
extrahiert und das WAL ignoriert, liest eine Datenbank, die bis zu einem
Checkpoint veraltet ist. Im Music-Beispiel ist das WAL 313 KB groß bei
einer Hauptdatei von 516 KB – das ist kein theoretisches Risiko.Seit der Speichermigration (docs/project/MAD_STORE_MIGRATION.md) lebt die
Definition eines Dokuments in einem portablen SQLite-Speicher eigener Bauart.
Sein Schema wird durch die handgepflegten MADStoreSchema-Deskriptoren
(MAD/Source/rptq/store/) beschrieben, von -createSchemaSQL erzeugt und von
MADStoreTests gegen das kompilierte Modell abgeglichen. Der Speicher führt
seine Schemaversion in PRAGMA user_version: Version 1 ist das ausgelieferte
Schema (fehlend oder 0), Version 2 ergänzt RptqQuery.sqlSourceText – das vom
Benutzer eingefügte SQL, unverändert aufbewahrt (docs/project/MAD_SQL_ENTRY.md
§8) –, und MADStore wendet beim Öffnen die fehlenden Schritte an. Die Felder der
Tabelle RptqQuery:
| Spalte | Typ | Hinweise |
|---|---|---|
identifier |
INTEGER | der Zeilenschlüssel |
cachedText |
TEXT | |
override |
INTEGER | |
overrideText |
TEXT | |
sqlSourceText |
TEXT | die zuletzt erfolgreich angewendete eingefügte Anweisung, unverändert; andernfalls NULL |
inDatabase_identifier |
INTEGER | Fremdschlüssel auf RptqDatabase |
Diese Seite ist eine deutsche Übersetzung des englischen Originals; bei Abweichungen ist der englische Originaltext maßgeblich.