Turso التي أعادت كتابة SQLite بلغة Rust تعلن نسخة أولية متوافقة مع Postgres
عبارة «متوافق مع Postgres» وعد يخص الواجهة لا المحرك، والمواضع التي يختلف فيها المحرك غالبًا لا تظهر إلا في بيئة production.
أعلنت شركة Turso، التي أعادت كتابة SQLite من الصفر بلغة Rust في مشروع كان اسمه Limbo، نسخة أولية متوافقة مع Postgres اسمها pgmicro، مبنية على النواة نفسها. والمشروع ليس fork من Postgres، بل كُتب من السطر الأول.
ولفهم الفكرة يجب التمييز بين جزأين في أي قاعدة بيانات. الأول هو الواجهة: لهجة SQL وبروتوكول الاتصال الذي يتحدث به التطبيق. والثاني هو المحرك: هياكل B-Tree والفهارس (indexes) والمعاملات وطريقة الكتابة على القرص.
يرى المؤسس Glauber Costa أن المحرك يتكرر تقريبًا في كل قاعدة، ويقول إن «كل قاعدة SQL مجرد مجموعة B-Trees وبعض الفهارس». لذلك يقترح بناء محرك واحد حديث وتركيب واجهات متعددة فوقه، ويصف الهدف بأنه «LLVM قواعد البيانات»، في إشارة إلى البنية التي تخدم فيها نواة واحدة لغات برمجة كثيرة.
والنقطة العملية هنا أن الشركة نفسها لا تعد بتوافق كامل مع Postgres. وهذا في الواقع معنى أي منتج يحمل وصف Postgres compatible: الوعد يخص الواجهة، لا المحرك. والمواضع التي يختلف فيها المحرك عن الأصل هي بالضبط المواضع التي قد يتعثر فيها التطبيق، وغالبًا لا تنكشف إلا في بيئة production.
ولا يبالغ المؤسس في دور Rust أيضًا، إذ يقول إن أمان الذاكرة يحل نوعًا واحدًا من مشكلات قواعد البيانات، لا كلها.
وبالنسبة للفرق التي تختار قاعدة بيانات لمشروع جديد، يصبح الفرق بين قاعدة «متوافقة» والقاعدة الأصلية سؤالًا يستحق الاختبار على حالات الاستخدام الفعلية، لا على عبارة في صفحة التعريف بالمنتج.
المصادر
من عدد الخميس 16 صفر - 30 يوليو