عام 2012 خرج مهندسين كانا يعملان على قواعد بيانات MSSQL Server من فيسبوك و أسسا شركة ناشئة اسماها @memsql بعد حصولهم على استثمار بمبلغ 5 مليون دولار و الان قيمتها اكثر من 110 مليون دولار. احدهم كان مهندس لدى مايكروسوفت قبل استقطابه من قبل فيسبوك ( سلسلة ).
هناك بعض المفاهيم التي سأذكرها بخصوص قواعد البيانات في عالم البيانات مثل الScale Out و Database Shard
و In-Memory Database و الPipelines.
و In-Memory Database و الPipelines.
اولاً مفهوم الScale Out يعني اننا نستطيع توزيع بياناتنا على اكثر من جهاز خادم واحد , مثلاً إذا كان لدينا مليار سجل فيمكن توزيع كل 200 مليون سجل على خادم مستقل ثم الاستعلام عن البيانات فيها و كأنها في خادم واحد. و كلما زدنا عدد الخوادم زادت سرعة الكتابة و الاستعلام.
هذا يعود لوجود خاصية الDatabase Shard حيث تتقسم البيانات على اكثر من خادم مع وجود نسخة او اكثر من نفس البيانات آنياً على سيرفر اخر و تكون نسخة وحيدة هي Active . فإذا توقفت احد السيرفرات قامت احدى النسخ الاخيرة محلها و اصبحت Active.
توجد بعض فيديوهات لـMemSQL تظهر في ظروف معينة مسح scan ترليون (الف مليار) سجل في الثانية عند وجود 8 اجهزة خوادم بمواصفات عالية. و أخرى تبين انك إذا كنت تقرأ 700 سجل في الثانية من MySQL فعلى نفس الخادم يمكنك قراءة 50 الف سجل إذا كانت MemSQL .
لكن هذه المقارنات لا يعتد بها فعادة تكون جمل SQL منتقاه لإظهار التفوق. لكن هناك ما يميز MemSQL كون الSQL Queries يتم لها عملية Compiling .
ايضاً حتى نكون منصفين بالمقارنة فهذا يعود كون MemSQL هي In-Memory Database بعكس MySQL إن كنت تستخدم InnoDB ( بدون buffer pool ). لكن إن جعلت MySQL من نوع memory او استخدمت الbuffer pool فيفترض ان تكون MemSQL أسرع بـ4 او 5 مرات ( خادم واحد فقط ).
بالنسبة لMySQL لديها حلين للSharding من خلال MySQL Fabric و الذي توقف عنه الدعم و MySQL NDB Cluster و الذي يوجد فرق بينه وبين الInnoDB و يحتاج إلى إفراد سلسلة عنه بعد الاطلاع على نسخته الاخيرة.
ماذا تعني In-Memory Database ؟
يعني ان جميع بياناتك في الRAM و لكن لا يعني هذا انك ستفقدها إذا قمت بعمل Shutdown للخادم وذلك لأنها تقوم بنسخ مافي الذاكرة الى الHDD عن طريق Snapshots و Transaction Log و يمكنها ان تعود متى ما قمت بعمل Start للخادم. هذا غير انه يمكن عمل DR.
يعني ان جميع بياناتك في الRAM و لكن لا يعني هذا انك ستفقدها إذا قمت بعمل Shutdown للخادم وذلك لأنها تقوم بنسخ مافي الذاكرة الى الHDD عن طريق Snapshots و Transaction Log و يمكنها ان تعود متى ما قمت بعمل Start للخادم. هذا غير انه يمكن عمل DR.
علاقتها بالMySQL انه يمكنك استخدام نفس الDriver الخاص بMySQL للاتصال بها فهي تعتمد ANSI SQL و يمكن نقل البيانات إليها بواسطة ادوات مثل mysqldump او بأدوات خارجية مثل Alooma لكن مع الاخذ ببعض الاعتبارات عند انشاء الجداول و الحقول و الفهارس في MemSQL فهي ليست B-Tree.
اتوقع اننا خرجنا من مشكلة الScale Out في MySQL فماذا يمكن ان تقدمه MemSQL. لدى MemSQL مفهوم الPipelines و الذي هو اشبه بـETL يمكنك من ربط الانظمة الاخرى بها مثل Apache Kafka الذي يمكنك استقبال ملايين الرسائل في الثانية الواحدة.
مصطلح ETL يعني Extract-Transform-Load يستخدم في عالم قواعد البيانات كاداة لنقل البيانات من مكان إلى اخر.
ايضا يمكنك رفع Script بـPython او Go خاص بك خلال عملية نقل البيانات لعمل Transforming للبيانات قبل دخولها للMemSQL. تأتي MemSQL مع اداة ادارة و مراقبة تمكنك من رؤية الNodes او ما يسمى Leaves و حالتها من حيث استهلاك الCPU و الMemory.
يمكن تنزيل MemSQL على جهازك الشخصي من خلال نسخة الCommunity المجانية و ايضا يمكن تنزيلها على Amazon EC2 من خلال AWS Marketplace او بدونه. هناك ايضاً قاعدة بيانات VoltDB مشابهة لكن ليس لها نسخة Community فلم اجربها. إذا كان هناك شيء مماثل يرجى ذكره. و دمتم بود.
جاري تحميل الاقتراحات...