NotariumҚұжаттама
Құжаттама нұсқасы: latest
KZ

File-first: файлдар — шындық көзі

Notarium-дағы деректер бірлігі — дискіңіздегі кәдімгі Markdown-файл. Бөгде дерекқордағы жол емес, меншікті пішімдегі қоймадағы блок емес, кез келген редактормен ашылатын әрі Notarium болмаса да толыққанды күйінде қала беретін файл. Бұл — file-first принципі, қалғанының бәрі содан келіп шығады.

Қайсысы «шындық», қайсысы туынды

Шындық көзі — .md-файлдардың өзі. Олардың мазмұнынан есептеп шығаруға болатынның бәрі — туынды әрі қалпына келетін дүние:

  • туынды (қайта сканерлеу арқылы нөлден жиналады): іздеу индексі, [[wikilinks]] графы, ағаш, сниппеттер. Индексті жойып жіберсеңіз де ештеңе етпейді — қозғалтқыш келесі іске қосылғанда файлдарды қайта индекстеп шығады;
  • шығарып алуға келмейтін (бөлек метадеректер дерекқорында тұрады): нұсқалар тарихы, пайдаланушылар, мүшелік және рұқсаттар. Мұны файлдардың мәтінінен қалпына келтіру мүмкін емес — сондықтан ол айқын бөлектелген бір ғана үйге шығарылған.

Бірегейлік, керісінше, файлдардың өзінде бекітілген: жазбаның notarium-id-і frontmatter-де, ал кеңістік пен жобаның идентификаторлары маркер-файлдарда (.notariummeta) тұрады. Сондықтан метадеректер дерекқорындағы кеңістіктер мен жобалар кестелері — сканмен қалпына келетін кэш қана, бірегейліктің жалғыз мекені емес: қалта Notarium-нан тыс жерде жылжытылғанда да ол аман қалады.

Бұл неге маңызды

Индексті жоғалтудан қорқудың қажеті жоқ: ол жай ғана қайта жиналады. Файлдарға бұл кезде ешқашан қол тимейді — жазу атомарлы (алдымен уақытша файлға жазылады, содан кейін аты өзгертіледі), ал сыртқы түзетулер (git, басқа редактор) қате емес, қалыпты жұмыс режимі болып саналады.

Сыртқы түзету файлдың өлшемі мен өзгерту уақыты бұрынғы күйінде қалғанның өзінде де ескерусіз қалмайды, — ал git checkout, синхрондау немесе архивтен қалпына келтіруден кейін дәл солай болады. Notarium файл метадеректеріне ғана сеніп қалмайды: соңғы сөз — мазмұнда, сондықтан туынды көріністер (тізім, іздеу, граф) ескірген нұсқада қатып қалмай, дискідегі нақты күймен үндесіп отырады.

Блок емес, файл-жазба

Принциптің шекарасы әдейі осылай жүргізілген: деректер бірлігі — тұтас файл-жазба, оның ішіндегі абзац немесе блок емес. Notarium файлдан ұсақ бөлек нысандар енгізбейді — тұтас жазба минималды бірлік болып қала береді; файлға негізделген жазба қосымшалары әдетте дәл осы тұста шындық көзі ретінде дерекқорға көшіп, портативтілігінен айырылады. Жазба файл күйінде қала береді, ал ішіндегі құрылым — жай ғана Markdown.

Рендерлеу — GitHub Flavored Markdown; қызметтік өрістер файл басындағы frontmatter-де сақталады.

Бірегейлік көшуден аман шығады

Әр жазбаның тұрақты ішкі идентификаторы бар — файл frontmatter-індегі 12 таңбалы URL-safe кілт notarium-id:

---
notarium-id: aB3kR7xQ_2mv
title: Менің жазбам
---

Жазба мәтіні — кәдімгі Markdown.

Бірегейлік тек дерекқорда емес, файлдың өзінде тұрады. Сондықтан атын өзгерту, қалталар арасында жылжыту, тіпті Notarium-нан тыс жерде орнын ауыстыру да нұсқалар тарихы мен байланыстарды жетім қалдырмайды: журнал да, сілтемелер де жолға емес, notarium-id-ге байланған. Файл аты — туынды дүние (транслитерация арқылы kebab-case, slug(title).md), бірегейлік емес.

Ешқандай lock-in жоқ

Файлдар жатқан қалтаны алып, кез келген сәтте кете беруге болады — Notarium болмаса да жазбалар оқылатын әрі толыққанды күйінде қалады. Экспортты бөлек операция ретінде жасаудың қажеті жоқ: сіз ешқашан «іште» отырған жоқсыз — деректеріңіз әрдайым дискіңізде кәдімгі файл болып жатады. git шындық көзі бола алады: қалтаны нұсқалаңыз, синхрондаңыз, тарихын әдеттегі құралдарыңызбен оқыңыз.

Дәл осы — Notarium құпиялылығының негізі: ол ұштан-ұшқа шифрлауға емес (ақылды сервер мазмұнды әдейі көреді — әйтпесе іздеу де, семантика да, агенттер де болмас еді), серверді де, файлдарды да өзіңізде ұстауыңызға сүйенеді. Толығырақ — Кеңістіктер мен жобалар және Қолжетімділік моделі бөлімдерінде.