بازدان بۆ ناوەڕۆک

نوێکردنەوە بەبێ وەستان

Quireی خۆبەڕێوەبەر بەبێ وەستان نوێ بکەرەوە.

بینین وەک Markdown

ڕێساکان لە docs/architecture/23-ops.md بەشی 7 و docs/architecture/07-data.md بەشی 4.1ن. ئەمە ڕێکاری کارەکەیە.

ئەو دڵنیاییەی ئەمە سەلامەت دەکات

وەشانی R لەگەڵ schemaی R و schemaی یەک وەشان پێشی بە دروستی کار دەکات. هەر گۆڕانکارییەکی schema بە سێ قۆناغدا دەبێت: فراوانکردن، گواستنەوە و بەستنی کۆتایی:

  1. فراوانکردن: ستوون، خشتە یان پێڕستە نوێکە زیاد بکە. کۆدی کۆن پشتگوێی دەخات.
  2. گواستنەوە، لانیکەم بۆ یەک وەشان: کۆدی نوێ هەردوو شێوەکە دەنووسێت و نوێکەیان دەخوێنێتەوە؛ کاری دووبارەدەستپێکراو ڕیزە کۆنەکان پڕدەکاتەوە.
  3. بەستنی کۆتایی: شێوەی کۆن لە وەشانێکی دواتر و بە تەنها لادەبرێت.

بۆیە لە هەموو کاتێکی نوێکردنەوەی خولییدا، پرۆسەی کۆن و نوێ دەتوانن هەمان بنکەدراوە بەکاربهێنن. کۆچکردنی دواوەمان نییە: کۆچکردنێک کە یەک کاتژمێر پێش ئێستا ستوونێکی سڕیوەتەوە ناتوانێت ڕیزەکانی نووسراو لەو کاتژمێرەدا بگەڕێنێتەوە.

کاری CIی schema-compat لە هەر وەشانێکدا ئەم دڵنیاییە دەپشکنێت بە تاقیکردنەوەکانی وەشانی پێشوو لەسەر schemaی نوێ.

پێش دەستپێکردن

  1. تێبینییەکانی وەشانەکە بخوێنەوە. وەشانێک پێویستی بە کاتی چاکسازییەوە هەبێت دەڵێت، لەگەڵ خەمڵاندنی کات؛ لە هەر وەشانێکدا زۆرترین یەک جار.
  2. کاری مانەوەی پاڵپشتی جێبەجێ بکە، یان دڵنیا ببەوە لەم وەشانەدا بە سەرکەوتوویی جێبەجێ کراوە (backup-restore.md). سەرنەکەوتنی ئەم کارە نوێکردنەوە ڕادەگرێت.
  3. پاڵپشتیی بنەڕەت وەربگرە: docker compose -f docker/compose.yaml --profile backup run --rm backup.

Docker Compose، یەک میواندار

export QUIRE_RELEASE=2026.10.0            # or set it in docker/.env
docker compose -f docker/compose.yaml pull   # or build
docker compose -f docker/compose.yaml run --rm migrate
docker compose -f docker/compose.yaml up -d --no-deps web content collab
docker compose -f docker/compose.yaml up -d --no-deps worker scheduler

ڕیزبەندییەکە هۆکاری هەیە:

  1. سەرەتا کۆچ بکە، لەو کاتەی وەشانی کۆن هێشتا خزمەت دەکات. کۆچکردنی فراوانکردن بۆی دیار نییە.
  2. پاشان توڕی وێب. کاتی SIGTERM هەر پرۆسەی وێب /readyz دەگۆڕێت بۆ draining، داواکارییە دەستیپێکردووەکان لە 30 چرکەدا تەواو دەکات، ڕەوتەکان بە ئاماژەی پەیوەندیی دووبارە دادەخاتەوە و دەردەچێت. stop_grace_period 40 چرکەیە بۆ ئەوەی Compose هەرگیز کاری ڕاگرتنی تەندروست پچڕ نەکات.
  3. لە کۆتاییدا workerەکان، بۆ ئەوەی شێوەی نوێی ڕووداو پێش چاوەڕوانیی بەکارهێنەری نوێ دروست بکرێت. workerەکان یەکسەر وەرگرتنی کار ڕادەگرن و 120 چرکەیان هەیە؛ ئەگەر کارێک تەواو نەبێت لە شوێنێکی تر دووبارە وەردەگیرێت، کە سەلامەتە چونکە هەر کارێک idempotentە. scheduler لە خاڵی داهاتوودا ڕابەرایەتی دەگوازێتەوە.

لە یەک میوانداردا Compose هەر قاچاخانەیەک بە نۆرە جێگۆڕکێ دەکات، بۆیە بۆ هەر خزمەتگوزارییەک کەلێنێکی کورت هەیە. بۆ کەلێنی سفر، توڕی وێب وەک دوو قاچاخانە لە پشت proxyی خۆتدا بەڕێوە ببە (فایلێکی جێگرەوە کە خزمەتگوزارییەکی دووەمی web بەبێ پۆرتی بڵاوکراو زیاد بکات)، و یەک بە یەک دووبارە دروستیان بکەوە و پێش دەستپێکردنی دووەم چاوەڕێ بکە هەر یەکێک تەندروست بێت.

چەند میواندار یان orchestrator

هەمان ڕیزبەندی بەکاربهێنە: جارێک لە کارێکی تاکەوە کۆچ بکە، پاشان توڕی وێب بە زیادەی یەک و نەبوونی خزمەتگوزاریی ناتەندروست بگێڕەوە، پاشان workerەکان. پشکنینی ئامادەیی بۆ /readyz و ژیانی خزمەتگوزاری بۆ /healthz ئاماژە پێ بدە.

لەگەڵ بنکەدراوە تایبەتەکانی tenant، هەنگاوی migrate هەردووکیان دەکات: سەرەتا بنکەدراوەی کۆنترۆڵ کۆچ دەکات، پاشان هەر بنکەدراوەیەک لە ops.tenant_databaseدا لیست کراوە یەک بە یەک و هەر یەک لەژێر قوفڵی خۆیدا. شکست لە بنکەدراوەی tenantێک ئەوانی تر ناوەستێنێت. کاتێک هەموو بنکەدراوەکان تەواو بوون، لیستی کۆچکردنەکان بەراورد دەکات و بە ژمارەی سفر دەرناچێت مەگەر هەموو بنکەدراوەکان هەمان کۆچکردنی بنکەدراوەی کۆنترۆڵیان جێبەجێ کردبێت؛ هەر یەک کە دواوە یان پێشەوەیە ناو دەبات. هەمان فەرمان خشتەکانی queue لە هەر بنکەدراوەیەک دادەمەزرێنێت، چونکە worker کارەکانی tenantێکی جێگیرکراو لەو شوێنەوە وەردەگرێت کە نووسراون.

bun apps/worker/src/migrate.ts   # what the Compose step runs
bun run db:migrate:all                            # the same, from a checkout

هەر بنکەدراوەیەکی تایبەت لە ڕێگەی ئەو ناوەی تۆمار کراوە دەستپێی دەگات. بنکەدراوەیەک بە env:QUIRE_DB_NORTHWIND_URL تۆمارکرابێت ئەمانەی پێویستن:

گۆڕاو بۆچی بەکاردێت
QUIRE_DB_NORTHWIND_URL ڕۆڵی بەرنامە، بۆ توڕی وێب و worker
QUIRE_DB_NORTHWIND_URL_MIGRATOR ڕۆڵی کۆچکەر، بۆ ئەم فەرمانە و بۆ گواستنەوەکان
QUIRE_DB_NORTHWIND_URL_SUPERUSER ئیختیاری: دووبارە جێبەجێکردنی بنەمای دەستپێک (ڕۆڵ، schema و یاریدەدەر) پێش کۆچکردن

بنکەدراوەی تۆمارکراو بەبێ پەیوەندی _MIGRATOR وەک شکست ڕاپۆرت دەکرێت، هەرگیز پشتگوێ ناخڕێت. توڕی وێب کاتێک دەتوانێت بگێڕدرێتەوە کە بنکەدراوەی کۆنترۆڵ تەواو بێت. دواخستنی کاتژمێرێک لە بنکەدراوەی tenant ئاگادارییە؛ دواخستنی ڕۆژێک ئاگادارکردنەوەی گەورە دەبات.

pgvector

لە کۆچکردنی 0264ەوە کۆگای grounding پێڕستی pgvector HNSW بەکار دەهێنێت ئەگەر ڕاژەکە extensionەکەی هەبێت؛ خزمەتگوزاریی Composeی postgres لەگەڵی بنیادنراوە (docker/postgres.Dockerfile). یەکەم migrate دوای گۆڕینی وێنەکان extensionەکە بە بنەمای superuser دادەمەزرێنێت، پاشان 0264 ستوونی vectorی دروستکراو زیاد دەکات و پێڕستەکە دروست دەکات. زیادکردنی ستوون جارێک app.ai_chunk لەژێر قوفڵی تایبەتدا دووبارە دەنووسێتەوە، بۆیە داواکاریی grounding چاوەڕێی دەکات؛ هیچ شتێکی تر دەستی بەم خشتەیەوە ناگات.

لەسەر ڕاژەیەک کە pgvectorی نییە، 0264 ئاگادارکردنەوە تۆمار دەکات و هیچ شتێک ناگۆڕێت؛ گەڕانەوە بە وردی بەردەوام دەبێت. لەگەڵ pgvectorی کۆنتر لە 0.8 ستوون و پێڕستەکە دروست دەبن بەڵام گەڕانەوە بە وردی دەمێنێتەوە تا extensionەکە نوێ دەکەیتەوە (alter extension vector update)، چونکە پشکنینی HNSWی پاڵێوراو پێویستی بە iterative scanی 0.8ە. بۆ چالاککردنی دواتری لە ڕاژەیەک کە نییە، extensionەکە دابمەزرێنە، bootstrap دووبارە جێبەجێ بکە (یان وەک superuser create extension vector بکە)، پاشان وەک quire_migrator:

set maintenance_work_mem = '1GB';  -- the HNSW build is much faster in memory
select ops.ai_chunk_enable_vector_index();

ئەمە idempotentە و enabled یان unavailable دەگەڕێنێتەوە. لە هەر بنکەدراوەی tenantی تایبەتیشدا جێبەجێی بکە.

گەڕانەوە

گەڕاندنەوەی کۆد هەمیشە بەردەستە: QUIRE_RELEASE بۆ تاگی پێشوو دابنێ و دیسان up -d بکە. ئەمە کار دەکات چونکە لەناو وەشانێکدا schema لە هەردوو ئاراستەیەوە سازگارە.

گەڕاندنەوەی schema پێشکەش ناکرێت. ئەوەی ناگەڕێندرێتەوە و چۆنیەتی چاککردنەوەی:

ناتوانرێتەوە چاککردنەوە
کۆچکردنی بەستنی کۆتایی ستوونێکی سڕییەوە گەڕاندنەوەی خاڵی کاتی پێش سڕینەوە بۆ بنکەدراوەیەکی نوێ، دەرکردنی داتا و تێکەڵکردن
گۆڕینی داتای ناوخۆیی هەمان شێوە، پاشان هاوسەنگکردنی نووسینەکانی دواتر
webhook و ڕووداوی نێردراو ڕووداوی جێگرەوە دروست بکە، هەرگیز مەیسڕەوە
ئیمەیڵی نێردراو مرۆڤێک پەیامی دوادا بنووسێت
زنجیرەی hashی پشکنین هەرگیز دووبارە نانووسرێتەوە؛ تۆماری چاککردنەوە زیاد بکە

بۆیە کۆچکردنی بەستنی کۆتایی بە تەنها بڵاو دەکرێتەوە: ئەوسا گەڕاندنەوە سنوورێکی ڕوونی هەیە.

پشکنینی نوێکردنەوە

docker compose -f docker/compose.yaml ps           # every service healthy
curl -fsS http://localhost:8080/readyz             # ready, and what is configured
docker compose -f docker/compose.yaml logs migrate # the migrations applied
ڕێنیشاندەر

بۆ گەڕان بنووسە…

↑↓ بۆ گەڕان↵ بۆ هەڵبژاردنEsc بۆ داخستن