Derbas bibe bo naverokê

Nûvekirin bê dawiya benda

Quireyê ji aliyê xwe ve bê dawiya benda nûve bike.

Wêne bide wek Markdown

Riyên di docs/architecture/23-ops.md beş 7 û docs/architecture/07-data.md beş 4.1 de ne. Ev procedûr e.

Peşdengiya ku ew belaş dike

Wêşana R bi mîgarê R û mîgara R mînus yekem biçe rast. Her guhertina mîgarê tê dabeşkirin bi berdezandin, valabin û kêmkirin:

  1. Berdezandin: ûstûn, tablo an indekseke nû zêde bike. Koda kevn wê nadi ser.
  2. Valabin, ji kêmtirî ji bo wêşanek: kodê nû herdu şîlê dinivîse û yê nû dixwîne; erengek ku diceribîne rizên kevn tîne paş.
  3. Kêmkirin: şîla kevn rake, di wêşanekî din ve, bi tenê.

Ji ber vê di her demê nûvekirina bilind de, prosesên kevn û nû dikarin danegirşekî parve bikin. Guhertinên vegerandin tune: guherdinek ku saetekê berê ûstûnek rakiye nikare rizên ku di wê saetê de hatine nivîsandin vegerîne.

Erenga CI ya schema-compat peşdengiyê di her wêşanê de bi xebitandina ceribandinên wêşana berê li ser mîgarê nû çawas dike.

Berî dest pêkê

  1. Tomarkên wêşanê bixwîne. Wêşanekê ku pencereyeke parastinê pêwîst e wê dibêje, bi nirxandinek; bi kêmtirî yek ji bo her wêşanê.
  2. Ceribandina sererastkirinê bixebitîne, an piştrîne ku ji bo vê wêşanê bi rengê sabit qedandîye (backup-restore.md). Ceribandeke serket nûvekirinê digire.
  3. Veparîstineke bingehî bike: docker compose -f docker/compose.yaml --profile backup run --rm backup.

Docker Compose, serverekî

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

Rêz qet bikûtî ye:

  1. Berê biguhere, di gava wêşana kevn trafîk dipeşîne. Guhertinên berdezandin ji wê nedîtin.
  2. Navûpa web paşî. Bi SIGTERM her proseseke web /readyz veke draining, daxwazên di nava de di 30 deqîqe de temam dike, streamek bi tîpa girêdanê dide û derdike. stop_grace_period 40 deqîqe ye ji ber vê Compose her dem daxistineke sag nakete.
  3. Worker herî dawî, ta şîla roodûyê ya herî nû berî ku kişîbûya herî nû pêwîst bike bê avakirin. Worker bi tenê bandor dikin û 120 deqîqe digirin; erengek ku nayê temamkirin di cîgeke din de diceribînin, ku belaş e ji ber ku her erengek idempotent e. Planer bi dema xwe pêşvebirî veşîne.

Li serverekê, Compose her konteynerek bi niştekirî veşarî dike, ji ber vê ji bo her xizmetek dergekî kurt heye. Ji bo bêdergebûnî, navûpa web wek du konteyner li paş proxea xwe bixebitîne (doseyeke override ku xizmeta weba duyem bi portekî belavkirî nake zêde dike), û wan carekê veşarî bike, li bendê wê her yek raporkirina sag bisekinîne ber yekê.

Pir server an orchestrateke

Heman rêz bikar bîne: carekê ji erengekî cuda biguherîne, paş navûpa web bi surge yek û unavailable sifir biçe ser, paş worker. Sondên amadebûnê biçe /readyz û sondên zindîyê biçe /healthz.

Bi danegirşên tenantê yên taybet, gava migrate herduyan dike: berê danegirşa kontrolê biguherîne, paş her danegirşek li ops.tenant_database vedihîlîne, carekê, her yek bi kilîta xwe. Sernekatek di danegirşek tenantê de neyan nayê rawestîn. Gava her danegirş temam bibe, defterên guhertinê veñave û neadil derdike ger her danegirş bi qet guhertinên ku danegirşa kontrolê biye nebîne, bi navdan her yek ku pêş an paş e. Heman ferman qadên kuyê di her danegirşê de saz dike, ji ber ku worker erengên tenantekî veşartî di kêyê ku hatine nivîsandin bikare.

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

Her danegirşê taybet bi navê ku qeyd kirîye tê gihiştin. Danegirşek ku wek env:QUIRE_DB_NORTHWIND_URL qeyd kirîye pêwîst e:

Guhertoy Ji bo
QUIRE_DB_NORTHWIND_URL Rolê nivîsbariyê, ji bo navûpa web û worker
QUIRE_DB_NORTHWIND_URL_MIGRATOR Rolê migrator, ji bo vê fermanê û ji bo veşartîn
QUIRE_DB_NORTHWIND_URL_SUPERUSER Ikhtîyarî: bootstrap (rol, şema, alîkar) dîsa biye berî guhertinê

Danegirşek qeydkirî bê girêtiya _MIGRATOR wek serneket raport dibe, her tim neyê derxistin. Navûpa web dikare biçe ser gava danegirşa kontrolê temam bibe. Danegirşek tenant ku saetekî paş e hişyar dike; bi rojek tê peyam.

pgvector

Ji guhertinê 0264 korpusa bingehî indekseke pgvector HNSW bikar tîne li kêyê ku server ezkê heye; xizmeta postgres a Compose bi wê hatiye biafirîn (docker/postgres.Dockerfile). migrate ya yekem dûpiştî biguherîna wêneyan ezke bi rêkî bootstrap a superuser eszkê çêdike, û 0264 paş ûstûnekî vektoryal ku tê avakirin zêde dike û indekês biafirîne. Zêdekirina ûstûlê app.ai_chunk carekê bi kilîtekî tenepêş nûve dike, ji ber vê daxwazên bingehî li bendê wan dîsikînin; tiştî din ê vî tabloyê ne tînin.

Li serverek bê pgvector, 0264 tiştekî tê nivîsandin û tiştek nayê biguherîn, û vegertin rast nîvdeke. Bi pgveyekî kevntr ji 0.8 ûstûl û indekês tên biafirîn lê vegertin heta nûvekirina ezke rast nîvdeke (alter extension vector update), ji ber ku lîska HNSW a sûzkirî li lîskên 0.8ê dihêjin. Ji bo çalakirina wê paşî li serverek bê wê, ezke saz bike, bootstrap ji nû ve bixebitîne (an create extension vector wek superuser), paş wek quire_migrator:

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

Idempotent e û enabled an unavailable dide vegere. Wê li her danegirşî tenantê taybet jî bixebitîne.

Vegerandin

Vegerandina kodê her tim berdest e: QUIRE_RELEASE bi taga berêtî saz bike û up -d ji nû ve bixebitîne. Ew karekî dike ji ber ku mîgar di nava wêşanekê de bi her du alîyan hevpeyman e.

Vegerandina mîgarê pêşkêş nake. Çi nikare vegere, û çawa ji wê ve tê sererastkirin:

Ne vegerandî Sererastkirin
Guherdineke contract ku ûstûnek rakiye Sererastkirina bi dema bi nokte bo berî daxistinê bo danegirşekî nû, hiştartin, hevkêşin
Guhertineke datayê li shûn Heman tişt, paş renskirina nivîsandinên ji wê ve
Webhook û roodûyên hatiye şandin Roodûyên derfetan, her tim ne rakirin
E-poşta hatiye şandin Mirovek dibivîse
Zencîra heşa denetinê Her tim nayê nûvekirin; tiştekî rastîrkirîl tê zêdekirin

Ji ber vê guhertineke contract bi tenê tê berdan: sererastkirin lewra sînorê pak heye.

Çawaskirina nûvekirinê

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
Rêvenîşan

Ji bo lêgerdin binivîse…

↑↓ bigere↵ hilbijêreEsc bigire