Files
OmniRoute/docs/i18n/km/docs/ops/SQLITE_RUNTIME.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

12 KiB

SQLite Runtime Resolution (ខ្មែរ)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


OmniRoute កំណត់កម្មវិធីបញ្ជា SQLite របស់វានៅពេលចាប់ផ្ដើម តាមរយៈខ្សែសង្វាក់បម្រុង 5 ជំហាន៖

  1. better-sqlite3 ដែលបានរួមបញ្ចូល (តាមរយៈ dependencies ក្នុង package.json) — លឿនបំផុត ប្រើឯកសារគោលពីរដើម ហើយត្រូវបានដំឡើងដោយ npm install នៅពេលមានឧបករណ៍ build។

  2. better-sqlite3 ដែលបានដំឡើងនៅពេលដំណើរការ (ក្នុង ~/.omniroute/runtime/) — ត្រូវបានដំឡើងនៅពេលត្រូវប្រើជាលើកដំបូង ដោយ scripts/build/postinstall.mjs → scripts/postinstall.mjs។ វាផ្ទៀងផ្ទាត់ magic bytes របស់ឯកសារ .node គោលពីរដើម (ELF / Mach-O / PE) មុនពេលផ្ទុក ដើម្បីការពារពីឯកសារគោលពីរដែលខូច ឬមិនត្រូវនឹងវេទិកា។

  3. node:sqlite (បណ្ណាល័យស្តង់ដារ Node ≥22.5) — មិនត្រូវការ build គោលពីរដើមទេ ហើយត្រូវបានប្រើនៅពេល ផ្លូវ better-sqlite3 ទាំងពីរបរាជ័យ។ មានសំណុំមុខងារមានកម្រិត។

  4. sql.js (WASM) — ជម្រើសបម្រុងចុងក្រោយ។ ដំណើរការបានគ្រប់ទីកន្លែង ប៉ុន្តែយឺតជាង ហើយសរសេរទិន្នន័យតាមចន្លោះពេល ជំនួសឱ្យការសរសេរធ្វើសមកាលកម្ម។

ហេតុអ្វីបានជាត្រូវការភាពស្មុគស្មាញនេះ?

  • Windows EBUSYnpm install -g omniroute@latest អាចបរាជ័យ ប្រសិនបើ better_sqlite3.node របស់កំណែមុនត្រូវបានចាក់សោដោយដំណើរការដែលកំពុងដំណើរការ។ ការដំឡើងពេលដំណើរការ ក្នុង ~/.omniroute/runtime/ ជៀសវាង cache npm សកល។
  • គ្មានឧបករណ៍ build៖ បរិស្ថានមួយចំនួន (Windows របស់សាជីវកម្មដែលគ្មាន VS Build Tools និង image Docker ទំហំតូចបំផុត) មិនអាច compile better-sqlite3 បានទេ។ កម្មវិធីដំឡើងពេលដំណើរការ ស្វែងរកឯកសារគោលពីរដែលបាន build រួចពីបញ្ជីឈ្មោះ npm ហើយកម្មវិធីបញ្ជាបម្រុង ធានាថា OmniRoute នៅតែអាចចាប់ផ្ដើមបាន ទោះបីវាបរាជ័យក៏ដោយ។
  • ប្រព័ន្ធផ្ដាច់ចេញពីបណ្ដាញ៖ ប្រសិនបើមិនអាចចូលប្រើបញ្ជីឈ្មោះ npm បាន node:sqlitesql.js ធានានូវមុខងារមូលដ្ឋាន។

ការផ្ទៀងផ្ទាត់ magic-byte

មុនពេលផ្ទុកឯកសារ .node ដែលបានដំឡើងនៅពេលដំណើរការ OmniRoute អាន 8 byte ដំបូង ហើយផ្គូផ្គងវាជាមួយ magic ដែលស្គាល់សម្រាប់វេទិកានីមួយៗ៖

វេទិកា Byte (hex) ស្លាក
Linux 7F 45 4C 46 elf
macOS 64-bit BE FE ED FA CF macho
macOS 64-bit LE CF FA ED FE macho-le
macOS fat (universal) CA FE BA BE macho-fat
Windows 4D 5A (MZ) pe

magic ដែលមិនផ្គូផ្គង → ឯកសារត្រូវបានមិនអើពើ ហើយដំណើរការបម្រុងបន្តទៅជំហានបន្ទាប់។

ការពិនិត្យមើលកម្មវិធីបញ្ជាដែលសកម្ម

import { getDriverInfo } from "@/lib/db/core";

const info = getDriverInfo();
// { ប្រភព: "bundled" | "runtime" | "runtime-installed-now" | "node-sqlite" | "sql-js",
//   ប្រភេទ: "better-sqlite3" | "node-sqlite" | "sql-js" }

ការគ្រប់គ្រងដោយដៃ

# រំលងការកម្ដៅ postinstall ជាមុន (សម្រាប់ការដំឡើង CI រហ័ស)
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute

# បង្ខំឱ្យដំឡើង better-sqlite3 ពេលដំណើរការឡើងវិញ
rm -rf ~/.omniroute/runtime
omniroute  # នឹងដំឡើងឡើងវិញនៅពេលចាប់ផ្ដើមលើកបន្ទាប់

# ពិនិត្យមើលថាកម្មវិធីបញ្ជាណាមួយកំពុងសកម្ម
omniroute config db-info  # (ប្រសិនបើមានពាក្យបញ្ជា CLI)

ឯកសារយោង

ការអនុវត្ត៖

  • bin/cli/runtime/magicBytes.mjs — មុខងារជំនួយសម្រាប់ផ្ទៀងផ្ទាត់ magic-byte របស់ឯកសារគោលពីរ
  • bin/cli/runtime/sqliteRuntime.mjs — កម្មវិធីដោះស្រាយពេលដំណើរការ 5 ជំហាន + កម្មវិធីដំឡើងនៅពេលត្រូវប្រើ
  • bin/cli/runtime/index.mjs — កម្មវិធីសម្របសម្រួលការចាប់ផ្ដើម (warmUpRuntimes())
  • scripts/postinstall.mjs — hook ក្រោយការដំឡើង npm (ការកម្ដៅជាមុនដែលមិនបង្កឱ្យបរាជ័យ)
  • src/lib/db/core.ts — ការនាំចេញ ensureDbInitialized() / getDriverInfo()

ទម្រង់ single-writer (មិនគាំទ្រ HA)

ខ្សែសង្វាក់កម្មវិធីបញ្ជាបម្រុងខាងលើនៅតែដំណើរការក្នុង ដំណើរការតែមួយ។ តាមលំនាំដើម SQLite របស់ OmniRoute គឺជា អ្នកសរសេរតែមួយ

  • កុំភ្ជាប់ replica OmniRoute ពីរទៅឯកសារ storage.sqlite ដូចគ្នា។
  • ការចាប់ផ្ដើម container ឡើងវិញ ការ deploy បែប Recreate ការ kill ដោយ OOM ឬការចាប់ផ្ដើមឡើងវិញដោយ HEALTHCHECK នឹងផ្ដាច់ session SSE ទាំងអស់ដែលកំពុងដំណើរការ។ មិនមានការបង្ហូរ session នៅលើផ្លូវស្តង់ដារទេ។
  • ការពិនិត្យ liveness របស់ orchestrator ដែលចាត់ទុក /healthz យឺតថាបានស្លាប់ នឹងបញ្ឈប់ replica តែមួយគត់។ គួរប្រើ TCP liveness + HTTP /healthz readiness។ សូមមើល មគ្គុទ្ទេសក៍ Docker — ភាពអាចប្រើបាន និង អនុសាសន៍សម្រាប់ probe របស់ Kubernetes