في البداية تحدث عن الفيس بووك ليس بي اتش بي فقط .. ولكن ايضا يحتوي على اكثر من لغة برمجة منها البايثون والسي بلس بلس
ويخص بالذكر ان اغلب العمليات التي تتم اونلاين .. تكون بي اتش بي
بينما العمليات الاوفلاين مثل التخزين والارشفة والمراجعة تكون سي بلس بلس غالبا
كود:
data housing - offline data, online is mysql
الماي سكول ايضا يتم استخدامها اونلاين فقط .. ونظام المايسكول لديهم معقققققد جدا تحدث عنها كثيرا ومع ذلك لم استطع استيعاب التصميم الكامل لها ومع ذلك .. فهو يتحدث ان لكل اوبجكت ( مثلا يوزر او جروب او صفحة .. إلخ ) يكون لها Logical Database - لا استطيع تحديد ماهية ال ( الداتا بيز الوهمية او الغير حقيقية ) ولكن بالفعل كما تم الذكر .. يكون لكل يوزر شيء مثل داتا بيز خاصة به !! ولكنها ليست داتا بيز حقيقية بملفات حقيقية على السيرفر .. او ربما حقيقية ولكن بشكل مختلف ..
الموضوع يحتاج دراسة كما ذكرت .. وكذلك مفهوم الداتا هاوسينج .. هو مفهوم تقني معروف، ويتم استخدامه بطرق واساليب عديدة .. يمكن البحث عنه ودراسته
كود:
no joins - CPU and logical reasons
تفاجئت بهذه الكلمة !
الفيس بووك لا يستخدم استعلامات جوين .. او اي استعلامات معقدة
لضمان سرعة العمل
+ عدم التحميل على السي بي يو
كود:
dont save data in centeralized, split the databases over many nodes
you dont need to see other updates immediately
when you join a group, stored on ur dbm and duplicated on the group db
لا يتم حفظ البيانات كلها في مكان واحد .. بل يتم تقسيمها على اكثر من مكان
وتكون مكررة
ويتم تنقية البيانات لاحقا
ومن الاشياء الرائعة التي ذكرها ، هو حاجة المستخدم لرؤية ما قام بكتابته فوريا .. في الوقت الذي لا حاجة لاصدقائه لرؤية ما كتبه فوريا !
بمعنى ، انك عندما تقوم بتحديث البروفايل الخاص بك .. ترى التحديثات فورية ، ولكن اصدقائك لا يرون نفس التحديثات فوريا .. بل بعدها بفترة - وان كانت فترة قصيرة بالطبع !
نظام الداتا بيز لديهم .. كما ذكرت لكل اوبجكت داتا بيز ، يتم تحديث بياناته بها
وكل مجموعة قواعد بيانات .. تتبع لنقطة ( node ) معينة ، وكل فترة وبشكل دوري .. يتم التعامل مع البيانات الموجودة في كل النقاط .. وتجميعها وتنقيتها ، ثم حفظها على اكثر من داتا سنتر .. ويكون هناك ما هو معروف بال Load balance بين الداتا سنترز المختلفة .. كل هذا يكون تابع لقواعد واساليب فهرسة بلا شك .. ( تذكرت هنا انه ذكر انهم قامو بتعديل بسيط على mysql engine ليناسب احتياجاتهم .. كانت هناك مشكلة معهم في عملية ال mysql cache لم استطع الفهم كثيرا ولكن يبدو ان سرعة تكييش البيانات لدي مايسكول لم يكن مناسب لهم .. فقامو بالتعديل على البنية التحتية للمحرك .. ليضمن لهم العمل من خلال القواعد المرادة )
واخيرا اعطى مثال ، عن انك اذا قمت بالالتحاق بجروب معين ..
يتم تسجيل ذلك في الداتا بيز الخاصة بك ويتم تسجيلها ايضا في الداتا بيز الخاصة بالجروب ( هذا ما تحدثت عنه باسم : بيانات مكررة )
ولهذا علاقة ب
كود:
we dont care about consistency ( ex : u joined a group, no need to store that u r a memeber of the group ) cuz we already know the flow of transactions
ال consistency مفهوم معروف .. بالبحث عنه تستطيع معرفة ماهو ( اعذروني كما قلت المواضيع والمفاهيم كثيرة وكلها كبيرة ! )
المهم .. ان هذه قنبلة اخرى ! انه لا يهتم بتسجيلك كاحد الاعضاء في هذا الجروب .. ولكن اهتمامه الاكبر بالحدث نفسه .. انك التحقت بالجروب !
بمعنى ، كلنا نعرف .. مثلا في اي سكربت يوجد جدول اعضاء وغالبا يكون فيه جروب اي دي groupid يتم وضع اي دي الجروب فيه ليتم التعرف على العضو على انه تابع لهذا الجروب ..
مثال : احمد تابع لجروب سوالف
الفيس بووك لا يعمل بهذه الطريقة
وانما
احمد اتبع جروب سوالف
احمد اتبع جروب البرمجة
وبهذا يتعرف لاحقا ان احمد .. ملتحق بهذا الجروب ام لا
كود:
memcache super quick
memcache over udp
بعدها يتحدث عن ال memcache
وهو ما يعتبره احد الاساسيات في برمجة الفيس بووك
لم استطع استيعاب كيفية استخدامه بعد .. ولكن على ما يبدو ان كل البيانات يتم التعامل معها بشكل مبدأي الاول ككاش
قبل التثبيت والحفظ على الداتا سنتر فعليا ويتم هذا كل فترة دورية .. قد تكون اكثر من مرتين باليوم
والجدير .. انهم وجدو مشكلة في الاستخدام العادي والطبيعي لهذه الخاصية .. لأنهم كانو بصدد مئات مئات الالوف من البيانات .. ولم يصمد النظام ولم تكن سرعته ايجابية
فقامو باستخدامه من خلال بروتوكول udp
اخيرا ، هذا ما استنتجته بعد 30 دقيقة من المحاضرة .. ومازالت هناك 30 دقيقة اخرى ، اجزم انها تحتوي على بيانات ادق واكثر تعقيدا !
المعذرة لو الكلام غير مرتب .. ولكني مذهول مما رأيت وسمعت !
الموضوع يحتاج بحث .. لاسابيع للوصول لفهم شبه كويس لكيفية عمل الفيس بووك، ولشرحه بشكل تفصيلي نحتاج لشرح العشرات من التقنيات والمفاهيم والاساليب البرمجية الحديثة والمعقدة في ذات الوقت.
تحمست للموضوع واعتقد اني ساتابع البحث حتى لو لاسابيع !
شكرا لصاحب الموضوع .. لفتح الرؤيا لنا