StoreContent/analyiticsは通常のSQLiteデータベースです:
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
ここにはドキュメント定義——クエリ、そのテーブルと結合、レポートのセクションと要素、およびデータベースのスキーマスナップショット——が格納されます。Core DataモデルはMAD/MAD.xcdatamodelであり、そのエンティティにはすべてRptqプレフィックスが付いています(RptqDocument、RptqQuery、RptqDocumentElement、RptqDocumentSectionなど)。
このストアには、ポータビリティ上極めて重要な2つの性質があります:
-walおよび-shmファイルがアーカイブ内に同梱されています。analyiticsのみを展開してWALを無視するリーダーは、最大で1チェックポイント分古いデータベースを読むことになります。Musicサンプルでは、516 KBのメインファイルに対してWALが313 KBを占めており、これは理論上のリスクではなく現実の問題です。ストア移行(docs/project/MAD_STORE_MIGRATION.md)以降、ドキュメントの定義は独自設計のポータブルSQLiteストアに格納されています。そのスキーマは手動管理されるMADStoreSchemaディスクリプタ(MAD/Source/rptq/store/)によって記述され、-createSchemaSQLによって生成され、MADStoreTestsによってコンパイル済みモデルと照合検証されます。ストアはPRAGMA user_versionにスキーマバージョンを記録します。バージョン1は初期出荷時のスキーマ(未設定または0)、バージョン2ではユーザーが貼り付けたSQLをそのまま保持するRptqQuery.sqlSourceText(docs/project/MAD_SQL_ENTRY.md §8)が追加されており、MADStoreはオープン時に未適用のマイグレーションステップを適用します。RptqQueryテーブルのフィールドは以下の通りです:
| カラム | 型 | 備考 |
|---|---|---|
identifier |
INTEGER | 行キー(主キー) |
cachedText |
TEXT | |
override |
INTEGER | |
overrideText |
TEXT | |
sqlSourceText |
TEXT | 最後に正常適用された貼り付けSQL文(原文のまま)。それ以外はNULL |
inDatabase_identifier |
INTEGER | RptqDatabaseへの外部キー |
このページは英語原文の日本語翻訳です。内容に相違がある場合は、英語原文が優先されます。