Transcript
00:00:00مع أنني أحب بوستغريس حقاً، إلا أنه ليس الأفضل لكل شيء. هناك نوع مختلف من
00:00:04قواعد البيانات يسمى قاعدة بيانات عمودية يمكنها تنفيذ استعلامات معينة أسرع بـ 40 مرة.
00:00:10تعمل قواعد البيانات هذه عن طريق تخزين الأعمدة معاً بدلاً من الصفوف، مما يعني حصولك على فوائد هائلة
00:00:15لحالات استخدام معينة مثل منصات التحليلات. وطبعاً يأتي كل شيء مقابل مقايضة معينة،
00:00:20ولكننا سنلقي نظرة اليوم على ماهية قواعد البيانات العمودية ونقارن بعض الاستعلامات مقابل
00:00:25بوستغريس لنرى الميزات والعيوب. سنقارن بوستغريس مع كليك هاوس وداك دي بي
00:00:31لذا ابقوا معنا، وستكون لديكم في النهاية فهم قوي لقواعد البيانات القائمة على الأعمدة
00:00:36ومتى تختار التقنية المناسبة.
00:00:43لذا في البداية قلت إنه يمكنك تشغيل استعلامات معينة أسرع بـ 40 مرة، وهذا صحيح إذا أخذنا
00:00:49جدول قاعدة بيانات هنا، لقد حملت مئة مليون صف، وسأقوم بتشغيل استعلام تجميعي (Group By) باستخدام
00:00:55بوستغريس. يستغرق هذا حوالي 9.7 ثانية للتنفيذ لأننا نقوم بتجميع الإيرادات من كل
00:01:00إذا قمنا بتشغيل نفس الاستعلام على نفس مجموعة البيانات باستخدام قاعدة بيانات عمودية، فهذا
00:01:06يشغل حرفياً نفس نص SQL تماماً، فكل من كليك هاوس وداك دي بي يمتلكان بنية SQL تشبه بوستغريس لذا ستجد الأمر مألوفاً -
00:01:13يأتي كليك هاوس في 0.28 ثانية وداك دي بي في 0.24 ثانية، وهو أسرع بأكثر من 40 مرة.
00:01:22كيف يكون هذا ممكناً؟ يبدو الأمر لا يصدق أليس كذلك؟ نفس المئة مليون صف في مدة لا تتجاوز 0.24 ثانية.
00:01:30بينما تقوم قواعد البيانات العمودية بعمل أقل بأضعاف مضاعفة لتعطينا نفس النتائج.
00:01:36دعونا نرى استعلاماً آخر قيد التنفيذ، وملاحظة سريعة يا شباب، نحن ننشر محتوى عن الذكاء الاصطناعي والتكنولوجيا باستمرار،
00:01:42لذا إذا كان هذا شيئاً تستمتع به، فلماذا لا تشترك في بيتر ستاك؟ هذه المرة نقوم بحساب عدد
00:01:47الأحداث بين طابعين زمنيّين حيث يكون رمز البلد هو GB. في حالتنا، ننظر إلى البيانات في
00:01:53شهر مارس. النتائج: بوستغريس بـ 5.9 ثانية، كليك هاوس بـ 0.06 ثانية، وداك دي بي بـ 0.03 ثانية. يحتوي مارس
00:02:02على حوالي 13 بالمائة من إجمالي الأحداث هنا، لذا لا يزال بوستغريس بحاجة إلى فحص ملايين الصفوف. يمكننا
00:02:09إضافة فهرسة عدوانية هنا للمساعدة، لكن ذلك لن يقربنا من أداء كليك هاوس وداك دي بي. إذن لماذا
00:02:15مخازن الأعمدة أسرع بكثير هنا؟ حسناً، كليك هاوس لا يفهرس الصفوف الفردية على الإطلاق. عندما تنشئ
00:02:20جدولاً، فإنك تمنحه مفتاح فرز، وبما أن البيانات مرتبة حسب الطابع الزمني، فإنه يقسم البيانات المرتبة إلى كتل من
00:02:32ويحتفظ بملاحظة عن الطابع الزمني الأول في كل منها. بالنسبة لمئة مليون صف، فهذا حوالي 12 ألف ملاحظة،
00:02:39وهي صغيرة بما يكفي لتستقر في الذاكرة. لذا عندما نطلب مارس، فإنه يقوم بحث سريع عبر تلك
00:02:44الملاحظات، ويجد الكتل التي قد تحتوي على مارس ويقرا فقط تلك الكتل. في حالتنا، هذا يعني 1633 كتلة من أصل
00:02:5212208 ويتم تخطي كل شيء آخر على القرص. يقوم داك دي بي بشيء مشابه، لأنه يحتفظ بحد أدنى
00:03:00وأقصى لكل جزء من العمود، لذا يمكننا النظر إلى جزء ما ورؤية أن الطوابع الزمنية تمتد من يناير إلى
00:03:06فبراير وتخطي الجزء بأكمله دون قراءته. أضف إلى ذلك الحيلة السابقة حيث يقوم فقط بفتح
00:03:10الأعمدة التي يحتاجها، وتحصل على 0.03 ثانية. لكن الأمور تأخذ منعطفاً تاماً عندما تريد
00:03:17تحديد صف واحد بواسطة المعرف (ID). يكشف هذا الاستعلام البسيط الكثير: بوستغريس يستغرق ميلي ثانية، كليك هاوس 168
00:03:26ميلي ثانية، وداك دي بي، ومن المثير للاهتمام، لا يزال عند ميلي ثانية. يمتلك بوستغريس فهرس شجرة ثنائية على
00:03:32المعرف، لذا فهو يتنقل أسفل الشجرة ويحط على الصفحة الوحيدة التي تحتفظ بالصف وينتهي في غضون ميلي ثانية فقط.
00:03:37ولكن مع كليك هاوس لدينا مشكلة: فهارسه الوحيدة هي مفتاح الفرز، وهذا الجدول
00:03:43مرتب حسب الطابع الزمني أولاً والمعرف ثانياً. لذا عندما نطلب معرفاً واحداً، ليست لديه أي فكرة عن الكتلة التي يوجد فيها هذا المعرف،
00:03:51وينتهي به الأمر بفحص كل كتلة من كتل الـ 12208. بمجرد أن يجد الصف، لا يزال
00:03:57عليه فتح ملفات الأعمدة الثمانية بأكملها وإعادة تجميع هذا الصف معاً، وهو الكثير من العمل لمثل هذا
00:04:03الاستعلام البسيط. إذن كيف يفلت داك دي بي من العقاب؟ لقد كان محظوظاً ببياناتنا؛ فقد تم إدخال المعرفات
00:04:09بالترتيب، لذا فإن الحد الأدنى والأقصى في كل جزء تماشيا بدقة مع المعرف، ويمكن لداك دي بي الانتقال مباشرة إلى المعرف
00:04:16الصحيح. لو كانت المعرفات عشوائية، لكان سيفحص العمود بأكمله تماماً مثل كليك هاوس. لننظر الآن
00:04:21إلى تحديث صف. لدينا استعلام واحد لبوستغريس وداك دي بي، ونسخة مختلفة قليلاً لـ
00:04:26كليك هاوس. جاء بوستغريس في 5 ميلي ثانية، وكليك هاوس في 5.8 ثانية، وداك دي بي مرة أخرى في عشرات
00:04:34الميلي ثانية فقط. بوستغريس يعيد كتابة صف واحد فقط ويحدث إدخال فهرس واحد. في كليك هاوس، ملفات البيانات
00:04:40ثابتة لا يتم تعديلها في مكانها أبداً، لذا لتغيير قيمة إيرادات واحدة، عليه إعادة كتابة
00:04:46ملف عمود الإيرادات بأكمله لتلك الكتلة من الجدول. حتى أن كليك هاوس يجعلك تكتب هذا على شكل
00:04:51تعديل جدول (Alter Table) لأنه يتعامل معه كتعديل للجدول بأكمله. هناك تحديث أخف وزناً في
00:04:56المرحلة التجريبية، لكنه مخصص فقط لعدد صغير من الصفوف، حوالي 10 بالمائة من الجدول كحد أقصى. يقع داك دي بي في المنتصف
00:05:03بين الاثنين نظراً لأنه يمكن تغيير ملفه في مكانه، لذا فإن تحديث صف واحد يتم في بضع عشرات من
00:05:08الميلي ثانية. وأخيراً، دعنا نحسب عدد المستخدمين المميزين في جدولنا، مرة أخرى مع اختلاف
00:05:14بسيط في الاستعلام بالنسبة لكليك هاوس. النتائج هي: بوستغريس 38.4 ثانية، كليك هاوس 0.78 ثانية،
00:05:22وداك دي بي أقل من ثانية واحدة. مرة أخرى يعاني بوستغريس؛ فالتجميع عبر جدول بأكمله بهذا الحجم
00:05:28يتطلب ببساطة كمية هائلة من العمل. الآن، غالباً ما ترغب في استخدام قواعد البيانات العمودية لأشياء مثل التحليلات
00:05:34حيث يكون تجميع البيانات عبر مختلف الأعمدة مهمة شائعة. نظرنا هنا إلى خيارين: كليك هاوس
00:05:41هو خادم استضافي مفتوح المصدر ومتاح على معظم المنصات الرئيسية. لتشغيل هذا محلياً، تحتاج إلى تشغيل
00:05:47خادم كليك هاوس على جهازك، وهو أشبه بكيفية عمل بوستغريس. أما داك دي بي فهو يشبه أكثر إس كيو إل لايت (SQLite)؛
00:05:54فهو مكتبة تعمل داخل عمليتها الخاصة وتعيش قاعدة البيانات بأكملها في ملف واحد على القرص، لذا
00:06:00يمكن قفل هذا الملف أثناء تقدم أحد التحديثات، مما يقضي على التزامن. كلاهما قاعدتا بيانات
00:06:06عموديتان ولكنهما تتخذان نهجين مختلفين تماماً، لذا فإن قاعدة البيانات التي تستخدمها في النهاية تعتمد على أكثر بكثير
00:06:12مما يمكنني افتراضه هنا. الأمر لا يتعلق فقط بسرعة الاستعلام الخام عند تشغيل العروض التوضيحية على جهازك المحلي،
00:06:17بل يتعلق بقابلية التوسع، والتكرار، وقابلية التوسع في الميزات. بالطبع، يمتلك بوستغريس نظاماً بيئياً غنياً من الإضافات
00:06:24لتوسيع مجموعة ميزاته بطرق عديدة، والتي يمكنك رؤيتها في الفيديو التالي.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video