عن المشروع
tinySQL هو محرك قاعدة بيانات SQL قابل للتضمين مكتوب بلغة Go، مفيد لتعلم البنى الداخلية لقواعد البيانات، والأدوات المحلية، والاختبارات، وتطبيقات المتصفح/WASM، والخدمات أحادية العملية التي تحتاج إلى SQL دون تشغيل خادم قاعدة بيانات. وهو ليس بديلاً مباشراً لـ PostgreSQL أو MySQL أو قواعد البيانات الإنتاجية العنقودية.
## البدء
يتطلب Go 1.26.5+. ثبّته باستخدام `go get github.com/SimonWaldherr/tinySQL@latest`. أنشئ قاعدة بيانات في الذاكرة ونفّذ SQL عبر واجهة Go بسيطة، بما في ذلك ربط المعاملات باستخدام العناصر النائبة `?` أو `$1` أو `:1`. يتوفر أيضاً مشغّل database/sql، والبث، والنتائج العمودية، والمعاملات، ومنشئ الاستعلامات.
يتضمن المحرك نفسه في لغات أخرى عبر C ABI واحد، مع ارتباطات لـ Rust وPython وSwift وC. تعرض أمثلة Python وRust إنشاء الجداول وإدراج الصفوف والاستعلام بمعاملات مرتبطة.
## سير العمل
- الاستكشاف التفاعلي: demo أو repl أو tinysql CLI
- ملفات الاستعلام أو ترحيل البيانات: query_files أو fsql أو migrate
- تضمين خدمة SQL محلية: server أو tinysqld
- بناء تطبيقات المتصفح: query_files_wasm أو wasm_browser أو wasm_node
- التضمين في تطبيقات Swift/Xcode: حزمة Swift وApple XCFramework لـ macOS وiOS وiPadOS
- استخدام أدوات الذكاء الاصطناعي أو RAG المحلي: tinysql-mcp-server ودليل RAG
## القدرات
- **SQL**: DDL/DML، وCTEs، والربط، والتجميع، والنوافذ، وطرق العرض، والمشغلات، والدوال ذات القيم الجدولية، والإجراءات المخزنة، والمهام، وPRAGMAs الشائعة المتوافقة مع SQLite
- **البيانات**: CSV/TSV، وJSON/NDJSON، وXML، وYAML، وExcel، وGeoJSON، وTopoJSON، وKML، وOSM XML، ورسوم التوجيه، وShapefiles، وGeoPackage، وMBTiles
- **البحث**: البحث النصي الكامل، والمتجهي، والهجين، ومساعدات RAG، والتعبيرات النمطية، وJSON، وURL، وHTML، والتاريخ، والرياضيات، والبتات، ودوال التجزئة
- **النشر**: واجهة Go الصرفة المضمنة، ومشغّل database/sql، وارتباطات Rust/Python/Swift/C، وCLI، وخادم HTTP/gRPC، وبنى المتصفح/WASM، وخلفيات تخزين متعددة
## GIS والتوجيه والبلاطات
تُخزَّن الهندسة كـ GeoJSON أو GEOMETRY مُتحقق منه. يتضمن القياس، والمحمولات، والتحرير، والبحث المكاني، وتصنيف الخرائط المتدرجة، وWKT/WKB، وgeohash، ومساعدات Web Mercator. تشغّل دوال التوجيه Dijkstra أو A* الموجّه بالإحداثيات عبر جداول الحواف العادية. تدعم دوال البلاطات سير عمل Web Mercator وOGC TileMatrix.
## الاسترجاع وRAG
يمكن دمج الاسترجاع المتجهي والنصي الكامل والهجين مع مرشحات البيانات الوصفية وإعادة الترتيب. يجهّز RAG_WARM وROUTE_WARM بنى الخدمة المشتقة قبل حركة المرور.
## أنماط التخزين
- ModeMemory: الاختبارات، والمتصفح/WASM، والبيانات المؤقتة
- ModeWAL: جداول في الذاكرة مع استرداد سجل الكتابة المسبقة
- ModeDisk: ملفات GOB لكل جدول مع التحميل الكسول
- ModeJSON: JSON لكل جدول قابل للقراءة البشرية والمقارنة
- ModeIndex/ModeHybrid: جداول مدعومة بالقرص مع تخزين مؤقت محدود
- ModePagedIndex: عمليات البحث الكبيرة عن المساواة مثل MBTiles
- ModeSQLite: ملف .sqlite قابل للتشغيل المتبادل مع أدوات SQLite (يتطلب وسم sqliteimport)
يُبنى دعم الملفات الاختياري بوسوم البناء: `sqliteimport` لـ SQLite/GeoPackage/MBTiles، و`shapefile` لاستيراد ESRI Shapefile/ZIP. يُسقط وسم `tinysql_minimal` الميزات الاختيارية للتضمينات الحساسة للحجم مثل حزم المتصفح WASM، مما يقلص الحزمة من حوالي 27.46 MB إلى 15.56 MB (43%) قبل wasm-opt مع رموز مجردة.
## الخدمات والعمليات
يوفر server واجهات HTTP وgRPC، وTLS الاختياري ومصادقة bearer، بالإضافة إلى نسخ قراءة لامتزامنة. tinysqld هو نقطة دخول DBMS الدائمة مع الصحة، والمجدول، ونقاط نهاية بلاطات اختيارية. النسخ المتماثل لامتزامن؛ ولا يُنفَّذ التبديل التلقائي عند الفشل، ولا الكتابات متعددة الأساسيات، ولا المعاملات الموزعة.
## القيود
- مضمّن وأحادي العملية؛ يقدم الخادم قراءات أساسية/نسخ لامتزامنة فقط
- المفاتيح الأساسية/الأجنبية المركبة، وCHECK، وON CONFLICT DO UPDATE الحامل للهدف، وSAVEPOINT، وATTACH/DETACH، وVACUUM، والفهارس الجزئية، والأعمدة المولّدة، وملفات فهرس ANN الدائمة غير متاحة
- تُسرّع الفهارس الثانوية عمليات البحث عن المساواة/البادئة والنطاقات الرقمية؛ ويلزم GEO_SEARCH لاستعلامات bbox/radius المفهرسة على أعمدة النقاط
- صلاحية GIS بنيوية وليست تحققاً كاملاً من الطوبولوجيا؛ ويتطلب GEO_DISSOLVE/GEO_UNION_AGG مضلعات متجاورة نظيفة ومتوافقة الرؤوس
- RBAC خشن وموجّه لجدول واحد؛ ولا يغطي التشفير الأنماط المدعومة بـ WAL أو ملفات البيانات الوصفية
tinySQL هو في المقام الأول محرك تعليمي وقابل للتضمين، يحافظ على سهولة فحص المحلل والمخطط والمنفذ وخلفيات التخزين والامتدادات العملية واختبارها وتكييفها.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.