Window Functions - Part 2 (Arabic - عربي) with Amr Elhelw - Tech Vault
About this video
### الملخص النهائي: **الويندو فانكشن (Window Function)** هي أداة قوية تُستخدم في التحليلات لتنفيذ عمليات على مجموعة من الصفوف دون دمجها في صف واحد، مما يتيح الاحتفاظ بكل صف على حدة. يتم استخدام هذه الدوال مع الكلمات المفتاحية مثل `OVER` و `PARTITION BY` و `ORDER BY` لتحديد كيفية تقسيم البيانات وترتيبها. #### **البناء الأساسي:** - يتم تعريف الويندو فانكشن بكتابة اسم الدالة متبوعًا بـ `OVER`، ثم تحديد شروط مثل: - `PARTITION BY`: لتقسيم البيانات إلى مجموعات (أقسام). - `ORDER BY`: لترتيب الصفوف داخل كل قسم. - الإطار (Frame): لتحديد نطاق الصفوف التي تعمل عليها الويندو فانكشن. #### **الفرق بين الويندو فانكشن والـ Aggregate Function:** - الـ **Aggregate Function** (مثل `SUM` أو `AVG`) تقوم بدمج الصفوف في صف واحد. - الـ **Window Function** تحتفظ بكل صف وتعرض النتائج لكل صف بناءً على الإطار المحدد. #### **مفهوم الإطار (Frame):** - الإطار هو مجموعة من الصفوف التي تعمل عليها الويندو فانكشن، ويمكن تعديله باستخدام `ROWS BETWEEN` أو `RANGE BETWEEN`. - **ROWS**: يحدد الإطار بناءً على عدد ثابت من الصفوف قبل أو بعد الصف الحالي. - **RANGE**: يحدد الإطار بناءً على نطاق قيم مرتبط بالصف الحالي (مثل نطاق زمني أو عددي). #### **طرق تحديد الإطار:** - `UNBOUNDED PRECEDING`: يشمل جميع الصفوف قبل الصف الحالي. - `CURRENT ROW`: يبدأ أو ينتهي عند الصف الحالي. - `N PRECEDING` أو `N FOLLOWING`: يشمل عددًا محددًا من الصفوف قبل أو بعد الصف الحالي. #### **الإطار الافتراضي:** - إذا لم يتم تحديد إطار، يكون الإطار الافتراضي هو `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`، مما يعني أن الإطار يبدأ من بداية القسم وينتهي عند الصف الحالي، بما في ذلك جميع الصفوف التي لها نفس قيمة الصف الحالي. #### **التعامل مع الحالات الخاصة:** - عند أول صف أو آخر صف في القسم، يتم التعامل مع الصفوف المتاحة فقط (لا يوجد صفوف قبل الأول أو بعد الأخير). #### **أمثلة عملية:** - إذا كان الإطار يشمل جميع الصفوف (`UNBOUNDED PRECEDING` إلى `UNBOUNDED FOLLOWING`)، يتم تنفيذ الويندو فانكشن على جميع البيانات في القسم. - إذا كان الإطار محددًا (مثل الصف السابق والتالي فقط)، يتم حساب النتائج بناءً على هذا النطاق فقط. #### **التأثير العملي:** - يمكن استخدام الإطارات لحساب القيم التراكمية (Cumulative Values) أو القيم المتحركة (Moving Averages) بناءً على النطاق المحدد. - تؤثر طريقة الترتيب (`ORDER BY`) على سلوك الإطار، حيث يتغير معنى "الصفوف السابقة" أو "الصفوف التالية" بناءً على الترتيب (تصاعدي أو تنازلي). #### **الخاتمة:** - يوضح الكاتب أهمية فهم الفرق بين `ROWS` و `RANGE` وكيفية تحديد الإطار لتحقيق نتائج دقيقة. - يشجع المشاهدين على طرح الأسئلة أو ترك التعليقات للحصول على إجابات سريعة، ويدعوهم إلى الإعجاب بالفيديو والاشتراك في القناة لدعم المحتوى. - يشكر الجمهور على مشاهدتهم ويؤكد انتظاره لرؤيتهم في الفيديو القادم. بهذا الشكل، يتم تقديم الويندو فانكشن كأداة متقدمة ومرونة لتحليل البيانات، مع التركيز على كيفية استخدام الإطارات لتحسين الدقة والتحكم في النتائج.
Course: Advanced Database Topics (Arabic - عربي)
**وصف الدورة: مواضيع متقدمة في قواعد البيانات (عربي)** تستعرض هذه الدورة مجموعة من المواضيع المتقدمة المتعلقة بقواعد البيانات الموزعة، مع التركيز على مفاهيم وتقنيات الـ "Distributed Databases" أو ما يُعرف بقواعد البيانات الموزعة. تهدف الدورة إلى تقديم فهم شامل حول سبب وكيفية استخدام هذا النوع من قواعد البيانات، بالإضافة إلى تحديات التعامل معها. سيتم شرح الفرق بين قواعد البيانات المركزية (Single-node) والقواعد الموزعة (Distributed)، مع أمثلة عملية مثل Google Spanner و Amazon DynamoDB. كما ستتناول الدورة بالتفصيل الأسباب التي تجعل التطبيقات الكبيرة تحتاج إلى نقل بياناتها من قواعد بيانات مركزية إلى أخرى موزعة لتحسين الأداء وتلبية احتياجات النمو. من بين أهم المواضيع التي ستتم مناقشتها هي الصعوبات المرتبطة بقواعد البيانات التقليدية عند التعامل مع كميات ضخمة من البيانات أو عند الحاجة إلى توسيع نطاق النظام (Scaling). سيتم شرح كيفية التغلب على هذه التحديات باستخدام تقنيات مثل Vertical Scaling و Horizontal Scaling. كذلك، سيتم التركيز على مشاكل مثل انقطاع الخدمة بسبب أعطال السيرفرات وكيف يمكن لقواعد البيانات الموزعة أن تقدم حلولاً لهذه المشاكل عبر تعدد العقد (Nodes) والحفاظ على استمرارية العمل حتى في حالة حدوث خلل في إحدى العقد. ستغطي الدورة أيضًا مفاهيم أساسية مثل Sharding و Replication وكيفية عملها داخل نظام قاعدة البيانات الموزعة. سيتم توضيح كيفية تقسيم البيانات بين العقد المختلفة (Sharding) لتوزيع الحمل وتقليل الضغط على السيرفر الواحد، بالإضافة إلى كيفية نسخ البيانات عبر العقد المختلفة (Replication) لضمان عدم فقدان البيانات واستمرارية الوصول إليها. كما سيتم تعريف الطلاب بمكونات البنية الأساسية لنظام Distributed Database مثل Leader Node و Worker Nodes، ودور كل منها في إدارة الطلبات وتنفيذ العمليات. بنهاية الدورة، سيكون لدى الطلاب فهم عميق لكيفية تصميم وإدارة قواعد بيانات موزعة بشكل فعال لتلبية احتياجات التطبيقات الحديثة.
View Full Course