المقدمة
الحمد لله ربنا كرمك وخلصت الابليكشن بتاعك وعاوز تعمله host وبقيت محتار ياترى هخلي ال SQL engine على سيرفر ومعاها ال Elastic search في نفس السيرفر ده لو اعتبرنا ان ال sql لل OLTP و ال elastic لل OLAP اللي فيها ال logs بتاع البزنسس والخ وطبعا سواء sql او elk الاتنين ينفعوا مع النوعين ال OLAP وال OLTP لكن المثال هنا للتوضيح . ولا هتخلي كل واحد في سيرفر لوحده ؟؟!
وعشان نتجاوب على السؤال ده لازم الاول نعرف ايه هم ال OLAP وال OLTP :
الـ OLTP (Online Transaction Processing) و OLAP (Online Analytical Processing) هما نوعان مختلفان من الأحمال (workloads) اللي ممكن تواجهها في قاعدة بيانات أو نظام معتمد على قواعد البيانات.
عشان نفهم الفرق بينهما، خليني أشرح بمثال عملي:
OLTP (أحمال المعاملات على الإنترنت)
ده النوع من الأحمال بيكون عادة مرتبط بالأنشطة اليومية في النظام زي المعاملات التجارية أو استعلامات المستخدمين اللي بتتم بشكل مستمر. مثلا، لو عندك قاعدة بيانات لخدمات الويب، أول ما حد يضغط على رابط أو يزور صفحة جديدة، بيحصل استعلام قاعدة بيانات عشان يتم جلب البيانات اللي تخصه بسرعة.
الخصائص:
- الاستجابة السريعة مهمة جدًا، لأن المستخدمين مستنيين إجابة فورية.
- بتكون فيه استعلامات بسيطة وسريعة زي عمليات قراءة وإضافة أو تحديث صغيرة.
- غالبًا ما بيكون فيه أوقات تأخير منخفضة جدًا، وأي تأخير ممكن يسبب مشكلة كبيرة في تجربة المستخدم.
مثال:
تخيل إنك في موقع للتسوق على الإنترنت، ولما تضغط على منتج عشان تشوف تفاصيله، النظام بيعمل استعلام من قاعدة البيانات عشان يجيب بيانات المنتج ده ويعرضها بسرعة، ده يعتبر OLTP.
OLAP (أحمال المعالجة التحليلية على الإنترنت)
النوع ده من الأحمال بيتعامل مع التحليل المتعمق و الاستعلامات الكبيرة والمعقدة. مثلاً لو عندك حاجة زي تقارير وتحليلاتبتتجمع بشكل دوري عشان تستعرض أداء النظام أو عمليات البيع أو استخدام المنتج.
الخصائص:
- عادة ما بيكون عندك استعلامات معقدة أو تجميعات بيانات ضخمة.
- الاستجابة مش لازم تكون فورية زي OLTP، لأن ده بيشمل عمليات حسابية ثقيلة أو تحليلات.
- عادة بتحتاج موارد حسابية ضخمة لعمل العمليات دي، لكن مش لازم كل الوقت.
- الوقت مش عامل حساس زي الـ OLTP، فممكن تتحمل وقت تأخير أكبر.
مثال:
تخيل إنك بتعرض تقرير عن مبيعات المنتجات خلال السنة. ده هيحتاج معالجة وتحليل كمية ضخمة من البيانات (مثلاً جمع بيانات مبيعات كل شهر أو كل ربع سنة، ثم تحليلها). ده يعتبر OLAP.
التحديات والاختيارات الممكنة في بيئة تجمع بين الاثنين
في البيئة اللي بتجمع بين OLTP و OLAP على نفس الـ Cluster (مثلاً في نفس خوادم قاعدة البيانات)، ممكن يحصل تضارب في استهلاك الموارد. مثلا:
الـ OLTP بيحتاج استجابة سريعة، فبيستهلك موارد (CPU, RAM) عالية في الأوقات اللي بتكون فيها الطلبات عالية.
الـ OLAP بيحتاج موارد كثيفة عشان يعالج البيانات الضخمة، لكن مش مهم وقت الاستجابة فيه زي انك تشوف لوجز البزنسس على بيئة ال production مش لازم تكون حالا لكن ممكن يكون في delay شوية .
الحلول الممكنة:
العزل الفعلي (Physical Isolation)
ممكن تعزل كل نوع من الأحمال في خوادم أو Clusters منفصلة بحيث كل واحد يشتغل بشكل مستقل. ده هيساعدك على تقليل تأثير المنافسة على الموارد بين الـ OLTP و OLAP.
مثلاً، تستخدم خوادم مخصصة للأحمال اللي بتحتاج استجابة سريعة (OLTP) وخوادم تانية للعمليات الحسابية الثقيلة (OLAP).
العزل المنطقي (Logical Isolation)
لو حبيت تشتغل في نفس الـ Cluster، ممكن تستخدم قواعد بيانات منطقية منفصلة بحيث يقدر كل نوع من الأحمال يحصل على تخصيصات محددة للموارد، حتى لو كانوا في نفس الخوادم.
مثال: ممكن تخصص قواعد بيانات خاصة بـ OLTP تكون سريعة الاستجابة وقواعد بيانات تانية تكون مخصصة لـ OLAPاللي بتحتاج معالجة بيانات ضخمة.
العزل المجدول (Scheduled Isolation)
حل تاني هو استخدام الجدولة. يعني تحدد وقت معين لأداء العمليات الخاصة بالـ OLAP عشان تقلل المنافسة مع OLTP. مثلا، لو الـ OLAP بيشغل عمليات في المساء أو في ساعات معينة لما الحمل على OLTP بيكون أقل.
في الختام
الـ OLTP بيكون حساس للوقت وبيحتاج استجابة فورية (مثل النقرات على الموقع). والـ OLAP بيكون معني بالحسابات والتحليلات وبيحتاج موارد ضخمة ولكن مش حساس للوقت بقدر OLTP.
لما بيشتغلوا على نفس الـ Cluster، لازم تحط خطة لتوزيع الموارد بشكل عادل، إما باستخدام العزل الفعلي أو المنطقي أو المجدول عشان كل نوع من الأحمال يقدر يحقق أهدافه بأعلى كفاءة.
Discussion