بتاريخ: منذ 3 ساعات 3 ساعة comment_311431 السلام عليكمأعمل ضمن فريق يطور أداة قواعد بيانات مفتوحة المصدر، وأكتب هنا عن شيء تعلمناه بالطريقة الصعبة، لأنه يخص أي شخص يقرأ صفحة منتج ويرى رقماً كبيراً بجانب كلمة "محركات مدعومة".المشكلة بدأت من عندنا نحن.عندنا ثمانية عشر مشغّلاً (driver) مكتوباً بأيدينا: PostgreSQL وMySQL وOracle وSQL Server وMongoDB وRedis وCassandra وClickHouse وغيرها. وهناك ثمانية وعشرون محركاً آخر لا تملك مشغّلاً خاصاً بها، لكنها تتكلم نفس بروتوكول الاتصال لأحد مشغّلاتنا: TiDB تتكلم بروتوكول MySQL، وCitus وTimescaleDB تتكلمان بروتوكول PostgreSQL، وValkey وDragonflyDB تتكلمان بروتوكول Redis.فالجمع بسيط: 18 زائد 28 يساوي 46. ويمكن كتابة "يدعم 46 محركاً" على صفحة المنتج دون أن يكذب أحد.لكن هنا الخدعة التي وقعنا فيها نحن أولاً.عميل قاعدة البيانات لا يفتح اتصالاً فقط. هو يقرأ قائمة الجداول، وعدد الصفوف والحجم، والفهارس والمفاتيح الأجنبية، وخطة التنفيذ، وقائمة الجلسات، والإحصائيات. وهذه كلها تُقرأ من كتالوج النظام الخاص بكل محرك، وليس من البروتوكول. فالبروتوكول قد يكون واحداً بينما الكتالوج مختلف تماماً. وعندها يمر الاتصال بنجاح، ثم تفتح الشاشة فتجدها فارغة.لذلك قبل أن نكتب الرقم شغّلنا الثمانية والعشرين محركاً المستعارة بأنفسنا عبر Docker، ومررنا عليها نفس الخطوات. خمس عشرة شاشة لكل محرك.النتيجة: سبعة عشر محركاً فقط استجابت فيها كل الشاشات. سبعة استجابت جزئياً. واثنان لم ينفع فيهما سوى محرر الاستعلامات.وأسوأ من ذلك: أن تستجيب الشاشة لا يعني أن الرقم الذي تعيده صحيح. StarRocks مثلاً يعيد صفراً لحجم الجدول وعدد الصفوف دائماً، حتى بعد التحقق المباشر. وDoris، وهو الأصل الذي تفرّع منه StarRocks، يعيد الأرقام الحقيقية. فإذا شغّلتهما جنباً إلى جنب يظهر الفرق فوراً.وهناك حالة أخطر في الاتجاه المعاكس: بعض المحركات تعيد صفراً لفترة بعد إدخال البيانات، لا لأنها معطوبة بل لأن جامع الإحصائيات عندها بطيء. فتظن أن الجدول فارغ وهو ليس كذلك.ماذا فعلنا بالرقم؟ما زلنا نكتب 46، لأنه صحيح من ناحية الاتصال. لكننا وضعنا بجانبه نتيجة القياس لكل محرك على حدة: سبعة عشر كاملة، وسبعة جزئية، واثنان محرر استعلامات فقط. ومكتوب لكل محرك أي شاشة تسقط ولماذا.وأضفنا شيئاً آخر لم نكن نكتبه: خمسة من محركاتنا الثمانية عشر للقراءة فقط بحكم التصميم، وهي Druid وElasticsearch وOpenSearch وPrometheus وKafka. كنا نعدّها ضمن المدعوم دون توضيح، وهذا غير دقيق.الخلاصة التي أردت مشاركتها: إن رأيت رقماً كبيراً بجانب "محركات مدعومة"، اسأل عن معنى كلمة مدعوم عندهم. هل جُرّب الاتصال فقط، أم جُرّبت الشاشات؟ نحن كنا سنكتب الرقم دون أن نسأل أنفسنا هذا السؤال، ولولا أننا شغّلنا المحركات بأنفسنا لما عرفنا.من يريد الاطلاع على نتائج القياس لكل محرك، هي منشورة في مجلد docs/providers داخل المستودع:https://github.com/libredb/libredb-studio تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.