Database Storage Systems - Database vs Data Warehouse vs Data Lake

لاشك أن البيانات أصبحت شئ مهم جدًا وقايم عليه تطبيقات وقرارات كبيرة في معظم الشركات وكمان سبب في نجاحاتهم، وعلشان هي شئ مهم فوسيلة تخزينها كمان مهمة، وده لإنها زي ما تقدر انها تسهل طريقة استخدامنا للبيانات وتساعدنا في الوصول للهدف منها برضو تقدر تصعب الموضوع جدًا وتخليه ملئ بعقبات كتير.
Database Storage Systems - Database vs Data Warehouse vs Data Lake
Database Storage Systems: Database vs Data Warehouse vs Data Lake

في هذه الصفحة

المقدمة

لاشك أن البيانات أصبحت شئ مهم جدًا وقايم عليه تطبيقات وقرارات كبيرة في معظم الشركات وكمان سبب في نجاحاتهم، وعلشان هي شئ مهم فوسيلة تخزينها كمان مهمة، وده لإنها زي ما تقدر انها تسهل طريقة استخدامنا للبيانات وتساعدنا في الوصول للهدف منها برضو تقدر تصعب الموضوع جدًا وتخليه ملئ بعقبات كتير.

في المقال ده هنتكلم عن 3 من أشهر الأنظمة لتخزين البيانات أو ال Data Storage Systems وهما الـ Database، والـ Data Warehouse، والـ Data Lake.

طب ليه فيه أكتر من نظام لتخزين البيانات ؟ وايه هي مميزات وعيوب كل واحد منهم و ايه الهدف من استعماله ؟ وايه هي العوامل اللي تخلينا ننجح في اختيار النظام المناسب لتخزين البيانات في التطبيق بتاعنا ؟ كل ده هنعرفه في المقال ده.


Data Storage Factors and Types

مبدئيًا الـ 3 أنظمة اللي هم الـ Database والـ Data Warehouse والـ Data Lake نقدر نستخدمهم لتخزين البيانات، ولكن أي نوع من البيانات ؟ البيانات بتتقسم لـ 3 أنواع وهم:

  • Structured
  • Semi-structured
  • Unstructured

وده بيوصف هل البيانات بتتبع هيكل أو Structure معين ولا لأ، يعني مثلًا لو عندي بيانات لمدرسة فهل كل الطلاب ليها نفس الخصائص (attributes) اللي بتوصفها ؟ ولا هلاقي طالب عنده معلومة السنة الدراسية وترتيبه على المدرسة وطالب تاني متخزن له السنة الدراسية بس ؟

هل البيانات بتاعتي أقدر أمثلها في جدول أو Table مكوّن من مجموعة من ال Records ولا البيانات كلها عبارة عن Files ؟

💡
فشكل ونوع البيانات بيتحكم بشكل كبير في اختيار نظام التخزين اللي بنستخدمه، مش بس كده ده حجم البيانات كمان بيحدد ده، وهل هبقى مهتم بتاريخ البيانات ولا هبقى عايز البيانات المحدثة مؤخرًا فقط منها (most updated version).

كل دي عوامل تقدر تساعدنا في أختيار المكان اللي هنخزن فيه البيانات.


Database

ال Database واحدة من أشهر الطرق في تخزين البيانات ونقدر نستخدمها في Applications كتير. وهي عبارة عن مجموعة من ال Tables كل Table بيمثل Entity وكل Entity ليها مجموعة من ال Attributes بتتمثل في Columns لل Tableده ، والبيانات بتاعتنا بتمثل Records في كل Table وطريقة التخزين دي بيُطلَق عليها Relational Model.

لما بنيجي نعمل Design لأي Database بنحاول على قد ما نقدر نمنع أي تكرار (Duplicates) وأي اعتماديات (Dependencies) ممكن تحصل بين البيانات المتخزنة وبعضها. طريقة ال Design دي اسمها Normalization ، ودي ممكن نتكلم عنها أكتر في مقال لوحدها ، ولكن بإختصار الهدف منها أنها بتقلل التكرار والاعتمادية في البيانات، وده بيسبب أن ممكن مجموعة من البيانات اللي ليها علاقة ببعض تكون في Tables مختلفة بينهم رابطة معينة.

زي مثلًا لو هنتكلم عن بيانات ل مطعم فهيكون فيه Table بيمثل الأصناف و Table تاني بيمثل ال Category اللي كل صنف تابع ليها واللي تبان جزء من أي صنف لكن لو هتسبب تكرار كبير في ال Table هنحتاج نفصلها.

عملية ال Normalization بتسبب وجود عدد كبير من ال Tables في ال Database الواحدة وده بيخلي الحصول على معلومة مفيدة عملية صعبة بسبب كثرة عمليات ال Joins اللي هتحصل بين ال Tables وبعضها.

كنا اتكلمنا بشكل مبسط عن الـ Normalization والـ De-Normalization تقدروا تشوفوه من هنا:

Database Normalization
أما بنروح المكتبة بنلاقي الكتب والروايات والمراجع مقسمة بشكل كويس يسهل للناس انها تروح تجيب اللي هي عاوزاه من غير ما تبذل مجهود كبير , نفس الكلام في الدولاب اما بتكون الهدوم مترتبة ده هيسهل عليك انك تلاقي اللبس اللي انت محتاجه بسهولة.

Database Normalization


Data Warehouse

ال Data Warehouse على العكس فهي بتتبع طرق مختلفة تمامًا من ال Design واللي بتندرج تحت مسمى ال Dimensional Modeling، هي برضه Relational Model يعني البيانات بتتخزن في صورة Tables ولكنها بتحصر تخزين البيانات كلها فيما يسمى Facts و Dimensions.

وطريقة ال Design دي بتهدف أن البيانات تكون Denormalized على عكس ما بيحصل في الDatabase، فعدد ال Tables تكون أقل والمعلومات اللي ليها علاقة ببعض تكون مع بعض في نفس ال Table على قد ما ده ينفع، فبالتالي الحصول على معلومات مفيدة من البيانات يكون أسهل وأسرع وبدون تعقيدات كتيرة في ال Queries اللي بتتنفذ.

كمان ال Data Warehouse بتقدر تخزن Historical Data يعني نقدر نشوف Versions مختلفة لنفس المعلومة على مدار فترة معينة.

طيب احنا كل ده بنتكلم على بيانات كلها بتتخزن في شكل Tables ، ايه اللي هيحصل لو البيانات صعب تكون في الشكل ده، زي الصور والفيديوهات مثلًا ؟ في الحالة دي بنلجأ لل Data Lake.


تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.

بفضل الله قمنا بإطلاق قناة اقرأ-تِك على التليجرام مجانًا للجميع 🚀

آملين بده اننا نفتح باب تاني لتحقيق رؤيتنا نحو إثراء المحتوى التقني باللغة العربية ، ومساعدة لكل متابعينا في انهم يوصلوا لجميع أخبار اقرأ-تِك من حيث المقالات ومحتوى ورقة وقلم والنشرة الأسبوعية وكل جديد بطريقة سريعة وسهلة

مستنينكوا تنورونا , وده رابط القناة 👇

https://t.me/eqraatechcom


Data Lake

على عكس ال Database وال Data Warehouse اللي بيخزنوا Structured Data بس، ال Data Lake تقدر تخزن كل أنواع ال Data منهم ال Semi-structured وال Unstructured، فبالتالي نقدر نخزن أي نوع من ال Files في ال Data Lake ، حتى لو كانت ممكن تكون في شكل Structured Data  زي ال CSV Files مثلًا فأكيد هتاخد حجم أصغر بكتير من لو كانت بتتخزن على شكل Tables .

ال Data Lake كمان مالهاش طريقة Design معينة زي ال Database أو ال Data Warehouse، هي بتتميز عنهم أنها Schema on Read، يعني أول ما بكتب ال Query بتبدأ تشكل البيانات المتخزنة على ال Schema اللي عرفتها في الQuery نفسها وده عكس اللي بيحصل في الDatabase وال Data Warehouse اللي بيتميزوا أنهم Schema on Write يعني لازم أحدد ال Schema اللي همشي عليها قبل ما أخزن فيهم أي بيانات.

طيب لحد دلوقتي عرفنا شوية معلومات عن الDatabase وال Data Warehouse وال Data Lake، وعرفنا شوية فروقات بينهم، امتى نعرف أن النظام ده هو النظام المناسب لل Use Case بتاعتنا ؟


عوامل اختيار النظام المناسب

فيه أكتر من عامل يحدد ده وهم:

  1. نوع البيانات زي ما ذكرنا هل هي Structured ولا Semi-structured أو Unstructured
  2. الهدف من نظام التخزين، هل هيكون أكتر لل Transactions ولا ال Analysis.
  3. ال Data Sources اللي باخد منها البيانات اللي محتاجة تتخزن، هل هو Data Source واحد ولا أكتر من Data Source هيخزنوا بياناتهم في نفس ال Storage System
Data Lake Data Warehouse Database
نوع البيانات Structured, Semi-structured, and Unstructured Structured Structured
الهدف منها Analytical Analytical Transactional
وقت الQuery Schema-on-read Schema-on-write Schema-on-write
إمكانية تغيير الSchema ملهاش Schema ثابتة لازم تكون متعرفة قبل التخزين ممكن تتغير حتى بعد التخزين
التكلفة قليلة عالية متغيرة

في الختام

وبكده نكون شوفنا في المقال ده الفرق بين انظمة التخزين المختلفة سواء من Database أو Data Warehouse أو Data Lake وشوفنا العوامل اللي من خلالها نقدر نحدد بشكل كبير ايه نوع نظام التخزين اللي هنحتاجه بناء على ال Use Case اللي شغالين عليها، وايه الميزات اللي هتوفرهالنا وايه كمان العوائق اللي هتسببها.

وطبعًا معرفتنا بالعوامل دي كلها وبالمعطيات دي بيساعدنا في اختيار نظام التخزين المناسب للـ Use Case اللي شغالين عليها.

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!