Files
Baradb/docs/ar/architecture.md
T

6.2 KiB

بنية BaraDB

نظرة عامة

BaraDB هو محرك قاعدة بيانات متعدد الأنماط مكتوب بـ Nim يجمع بين تخزين المستندات (KV) والرسم البياني والمتجهي والعمودي والبحث النصي الكامل في محرك واحد مع لغة استعلام موحدة BaraQL.

البنية الطبقية

┌─────────────────────────────────────────────────────────┐
│ 1. طبقة العميل                                          │
│    البروتوكول الثنائي │ HTTP/REST │ WebSocket │ مضمن    │
├─────────────────────────────────────────────────────────┤
│ 2. طبقة الاستعلام (BaraQL)                              │
│    المحلل اللغوي → المحلل → AST → IR → المحسن → توليد الكود│
├─────────────────────────────────────────────────────────┤
│ 3. محركات التنفيذ                                       │
│    المستندات │ الرسم البياني │ المتجه │ العمودي │ FTS     │
├─────────────────────────────────────────────────────────┤
│ 4. التخزين                                              │
│    LSM-Tree │ B-Tree │ WAL │ Bloom │ الضغط │ الذاكرة المؤقتة│
├─────────────────────────────────────────────────────────┤
│ 5. الموزع                                               │
│    توافق Raft │ التجزئة │ النسخ │ Gossip                 │
└─────────────────────────────────────────────────────────┘

الطبقة 1: طبقة العميل

  • البروتوكول الثنائي: بروتوكول ثنائي فعال big-endian
  • HTTP/REST: واجهة REST مبنية على JSON
  • WebSocket: دفق ثنائي الاتجاه كامل
  • المدمج: وصول مباشر داخل العملية

الطبقة 2: طبقة الاستعلام (BaraQL)

  1. المحلل اللغوي (query/lexer.nim): أكثر من 80 نوع رمز
  2. المحلل (query/parser.nim): محلل تنازلي تكراري
  3. AST (query/ast.nim): أكثر من 25 نوع عقدة
  4. IR (query/ir.nim): تمثيل وسيط
  5. المحسن (query/adaptive.nim): تحسين عبر الأنماط
  6. توليد الكود (query/codegen.nim): ترجمة إلى عمليات التخزين
  7. المنفذ (query/executor.nim): تنفيذ متوازي

الطبقة 3: محركات التنفيذ

محرك المستندات/KV

  • LSM-Tree (storage/lsm.nim): MemTable، WAL، SSTables

المحرك المتجهي (vector/)

  • فهرس HNSW (vector/engine.nim): رسم بياني صغير قابل للملاحة هرمي
  • فهرس IVF-PQ: ملف مقلوب مع تكميم المنتج
  • عمليات SIMD (vector/simd.nim): محسّن بـ AVX2

محرك الرسم البياني (graph/)

  • BFS، DFS، Dijkstra، PageRank
  • Louvain: كشف المجتمع

البحث النصي الكامل (fts/)

  • الفهرس المقلوب، BM25، TF-IDF
  • متعدد اللغات: tokenizers لـ EN، BG، DE، FR، RU

الطبقة 4: التخزين

  • LSM-Tree: MemTable، WAL، SSTable، Bloom Filter
  • ذاكرة الصفحة: ذاكرة مؤقتة LRU
  • I/O المعينة: وصول قائم على mmap
  • الاستعادة: إعادة تشغيل WAL

الطبقة 5: الموزع

  • توافق Raft (core/raft.nim): انتخاب القائد، نسخ السجل
  • التجزئة (core/sharding.nim): hash، range، تجزئة متسقة
  • النسخ (core/replication.nim): متزامن، غير متزامن، شبه متزامن
  • بروتوكول Gossip (core/gossip.nim): مثل SWIM

قرارات التصميم الرئيسية

  1. Nim نقي: بدون تبعيات Cython أو Python أو Rust
  2. تخزين موحد: محرك واحد لـ KV والرسم البياني والمتجة وFTS والعمودي
  3. الوضع المدمج: يمكن تشغيله كمكتبة أو خادم
  4. البروتوكول الثنائي: بروتوكول سلكي فعال مخصص
  5. MVCC: تحكم في التزامن متعدد الإصدارات
  6. المخطط أولاً: نظام مخطط مكتوب بشدة مع الوراثة
  7. عبر الأنماط: لغة استعلام واحدة عبر جميع نماذج البيانات
  8. التحقق الرسمي: الخوارزميات الموزعة الأساسية محددة في TLA+ ومتحقق منها مع TLC

إحصائيات الوحدات

الفئة الوحدات أسطر الكود الغرض
Core 16 ~4,200 الخادم، البروتوكولات، المعاملات، الموزع
Storage 7 ~3,100 LSM، B-Tree، WAL، bloom، الضغط، mmap
Query 7 ~2,800 المحلل اللغوي، المحلل، AST، IR، المحسن، توليد الكود
Vector 3 ~1,200 HNSW، IVF-PQ، التكميم، SIMD
Graph 3 ~1,000 قائمة الجوار، الخوارزميات، كشف المجتمع
FTS 2 ~900 الفهرس المقلوب، BM25، غامض، متعدد اللغات
Protocol 7 ~2,400 Wire، HTTP، WebSocket، pool، auth، حد السعر، SSL
Schema 1 ~600 الأنواع، الروابط، الوراثة
Client 2 ~800 عميل Nim الثنائي
CLI 1 ~400 صدفة BaraQL التفاعلية
المجموع 49 ~14,100