ايه الفرق بين ال Data Warehouse وال Data Lake ؟
وامتي استخدم كل واحده منهم ؟
اول حاجه خلونا نقول التعريف التقليدي لكل واحده فيهم وهنحاول نبسطه علي قد ما نقدر
ال Data Warehouse هو concept موجود من الثمانينات تقريبا وهو عبارة عن داتا بيز بقدر احط عليها حجم داتا كبير جايه من كذا source system بنحط عليه ال current وممكن ال Historical Data برده واللي بنعمل عليها تقارير عشان ال Management تقدر تاخد قرارات علي أساسها
طب ايه هو ال Data Lake ؟
المسمي بتاع ال Data Lake جه من انه تشبيه ببحيرة المياه اللي ليها كذا مصدر والمياه بتفضل تمشي في مسارات لحد ما توصل للبحيرة بنفس شكلها من غير أي تغيير وكل واحد له الحرية انه ياخد عينة او يفحص المياه او حتي يضرب غطس جواها
ف لما نيجي نعرفها تعريف تكنيكال هيبقي برده عباره عن مكان storage بقدر احط عليها جميع أنواع الداتا اللي موجوده عندي في ال source زي صور وفيديوهات و web logs وداتا جايه من source systems تانيين وغيرهم وبرده بنقدر نعمل بعض العمليات زي التحليل علي الداتا ديه عشان تفيدنا بعد كده في قرارتنا ديه
طبعا لازم يجي في بالك سؤال بديهي وهو "طب ما الاتنين بيعملوا نفس الحاجه والاتنين بنحط عليها الداتا ، ايه الفرق بينهم بقي كده ؟"
طبعا حاجه تلغبط ان الاتنين شايفينهم مجرد مكان بنخزن فيه الداتا اللي بأحجام كبيرة فبالتالي لازم نفرق بين شكل ونوع الداتا اللي بنحطها هنا وبين حجم الداتا اللي بنحطها هنا
1- مبدئيا كده ال Data Warehouse لما بنقول هنبنيها بنقعد ناخد وقت نعمل تحليل لل source systems وبنقعد نفهم ال Business Process بتمشي ازاي وشكل الداتا وتفاصيل تانيه كتير فعلا بتاخد وقت كبير ومجهود عشان نقدر نقول مين داتا هتتحط علي ال Data Warehouse ومين مش محتاجينه لانه ببساطه مفيش منه احتمالية انه ممكن يتطلب وكمان ده لان ال Storage في ال Data Warehouse في الغالب بتبقي مكلفه وغاليه لانها مش نوع Database عادي
علي العكس في ال Data Lake بتشيل كل الداتا من كل ال Source Systems اللي موجوده ، سواء بقي انا متوقع اني ممكن استعمل الداتا ديه بعد كده او لا
وده ممكن تحقيقه في ال Data Lake لان نوع الهاردوير المستخدم في ال Data Lake مختلف عن المستخدم في ال Data Warehouse عشان اقدر ازود منه واعرف احفظ داتا حجمها ممكن يتراوح بين ال Terabytes ل Petabytes
2- تاني حاجه هنقارن من حيث نوع او شكل الداتا اللي بتبقي موجوده علي كل واحده فيهم
الداتا اللي بتتحط علي ال Data Warehouse
عبارة عن داتا في الغالب عملنا لها extraction من Transactional System يعني مثلا برنامج حسابات او HR او مخازن وخلافه
ف دول عبارة عن Systems عندها Database او عندهم Files بتشتغل عليها ، ف في الاخر الداتا عندي بتكون شكلها واضح وموحد وديه بنقول عليها Structured ولو فيه عندي Source Systems بيطلع داتا بشكل غير منتظم زي ال web logs او صور او فيديوهات ف في الغالب بيتم تجاهل الداتا اللي طالعه منه ومش بنحطها عندنا في ال Data Warehouse
الداتا اللي بيوافق ال Data Warehouse انه يحطها عنده بنقول عليها داتا Structured وديه قبل ما بنحطها علي ال Data Warehouse بنعملها cleansing وبيتعمل عليها شغل عشان اقدر استفيد بيها علي طول واعمل عليها التقارير المطلوبة ف النوع ده من الداتا بنقول عليه processed
ال Data Lake بقي بتوافق علي أي نوع من الداتا اللي كنا بنتكلم عنها سواء الداتا ديه Structured او حتي Unstructured زي ال web logs والصور والفيديوهات وخلافه وفي ال Data Lake بنحتفظ بالداتا بشكلها زي ما هيا استلمناها من ال Source Systems
ولما بنعوز اننا نقرأ الداتا من ال Data Lake ساعتها بنعمل عليها العمليات او التغييرات المطلوبه واحنا جايين نقرأها والطريقه ديه اسمها Schema on Read
*وممكن نبقي في مقال منفصل نوضح الفرق بين ال “Schema on Read” وال " Schema on Write"*
3- تالت حاجه هنقارن بيها هي ال Extraction Technique
كنا اتكلمنا عنها في مقالة مفصلة قبل كده وهي ببساطه ان ال Data Warehouse بتستخدم الطريقه الأشهر وهي ال ETL بمعني انه بيعمل Extraction وبعد كده Transform وبعدها Load
انما ال Data Lake شغاله بطريقة ELT بمعني انها بتعمل Extraction الأول وبعدها Load وبعد كده بتعمل Transform
ولو عايز تعرف ايه الفرق بين ال ETL وال ELT ممكن ترجع للمقالة عالصفحه بتاعتنا
4- رابع حاجه هنقارن بيها هي نوع المستخدمين لكل واحده فيهم
ال Data Warehouse في الغالب نوع المستخدم بتاعها بيكون operational User بمعني انه راجل بيعمل تقارير عشان يوضح حاجه حصلت او ليه حصلت وايه اللي بيحصل في الغالب في الوقت الحالي
بمعني انه مسؤول ان الشغل يفضل ماشي وبيحلل الوضع الحالي واللي فات حصل فيه ايه
انما في ال Data Lake في الغالب بيكون المستخدم من النوع المستخدم اللي بيحاول يفهم طبيعة الداتا ويعمل patterns بين الداتا زي ال Data Scientist مثلا اللي بيحاول يتوقع حاجات بناء علي الداتا الكتير الموجوده قدامه او حتي بيعمل عليها تحليلات إحصائية
*ملحوظة: سواء ال Data Warehouse او ال Data Lake مش حكر علي مستخدم بعينه بس احنا بنتكلم في العموم*
5- خامس حاجه هنقارن بيها هي ال Security
ال Data Warehouse بتتميز ال security فيها اني اقدر أقول user مين هياخد access علي انهي داتا بأنهي level وبقدر اعمل Logging بشكل مناسب وده لان ال Data Warehouse تكنولوجي موجوده بقالها فتره والموضوع ده بقي matured بما فيه الكفايه
انما في ال Data Lake موضوع ال security لسه بيمثل فيه تحدي ولسه فيه اجتهادات كتير بتطلع عشان تحل المشكله ديه وان مش كل user يبقي واخد access علي ال directory يبقي له الصلاحيه انه يشوف كل الداتا الموجوده فيها
بعد ما خلصنا المقارنة بتاعتنا السؤال اللي بيظهر هو انهي احسن واستخدم ال Data Warehouse ولا ال Data Lake ؟
هقولك ببساطه انت محتاج تعرف شوية حاجات عشان تعرف تجاوب علي سؤالك زي
1- ال Budget
2- الوقت المتاح للمشروع
3- هل كل البيزنس عارف ايه اللي متوقعه زي مثلا التقارير وايه ال Critical Data Elements اللي هيحصل عليها Monitor
4- هل معروف العمليات اللي هنتبعها والبيزنس هيبقي داخل معانا فيها عشان نعرف نجيب الداتا بتاعتنا من المصادر المختلفه لحد ما نطلعها في التقارير
5- نوع المستخدم اللي هيستخدم الداتا بتاعتنا
6- نوع الداتا اللي هتتحط عندي وهل هي كلها structured ولا لا
7- محتاج احط أي Level of Security
وهنا الملخص اللي بننصح بيها وهو ان مش معني ان ظهرت تكنولوجي جديده يبقي تلغي اللي قبلها زي حالة ال Data Warehouse وال Data Lake
الاتنين ممكن يشتغلوا بالتوازي لان كل واحده فيهم ليها احتياجاتها واستخداماتها

تعليقات
إرسال تعليق