, 12 tweets, 3 min read Read on Twitter
هذا الجزء الثاني عن كيف صممت Twitter منصتها و هو خاص بعمليات القراءة للتايم لاين سواء لك كمستخدم او لمن تتابع , و رؤية تغريداتك , و تغريدات من تتابع و تفضيلاته لمن يتابع . كما ذكرت سابقا قد لا يكون مطابق للواقع و هدف الشرح تثقيفي فقط .
ربما لاحظنا في الجزء الاول من السلسلة أن تويتر يفصل الكتابة عن القراءة , يكتب في مكان و يقرأ من مكان آخر . لأنه من الصعب تصميم قاعدة بيانات تخدم العمليتين بكفاءة . Normalized للكتابة و Denormalized للقراءة كما في ال Data warehouses . فهذا ضروري للأداء .
بما ان تويتر تستخدم Nodejs فهناك مكتبات له تمكنها من الكتابة مباشرة إلى Redis و تخزين اخر التغريدات مثلاً و كذلك بالنسبة لMemcached الذي كانت تستخدمه ثم طورته الى نسخة اكثر سهولة في الادارة و اسمته Twemcache . هذين النوعين من قواعد البيانات يبقي البيانات الRAM فقط .
لو سألنا لماذا تستخدم تويتر Redis و Memcached مع ان كلاهما In-Memory Database . هذا يعتمد على شكل البيانات و حجمها , فMemcached يستقبل فقط Key-Value كمودل رئيسي و يعمل على Core واحد فقط , على عكسه Redis يقبل عدة اشكال للبيانات و يعمل على Multi Cores .
عند تصميم نظام كبير يجب الإنصات إلى ادق التفاصيل فيما يخص اضافة اي feature له , تأثيرها , اهميتها , تكلفتها , فمثلاً ما سيتم تخزينه في Redis سيكون اهم التغريدات النشطة او اخرها او ما يظهر في الصفحة الاولى و اكثر من نتابعهم أو اخر 10 اشخاص اعجبوا بتغريدة و او المستخدمين النشطين.
هناك ايضاً شي مهم اخر و هو أن نقوم بوضع تغريدات شخص ما بكاملها على ال Redis إن كان متابعيه بالملايين , فلكل حالة استراتيجيتها . و إذا لم تكن المعلومة في الMemory DB عندها يقوم تويتر بقراءة البيانات من قواعد البيانات التي تخزن بياناتها في القرص الصلب كFlockDB و MySQL و Cassandra.
استخدام Memcached مهم ولا يلزم ان يكون نظامك بحجم تويتر لتسخدمه , فقد تستخدمه على جهاز خادم واحد و قد يوفر عليك 80% من المرات التي تحتاج فيها نظامك إلى القراءة من قواعد البيانات كOracle او MSQL او MySQL و غيرها .
ايضاً يمكنك تجربة Apache Ignite و هو In-Memory DB يختلف عن البقية انه يمكنك تخزين البيانات على هيئة جداول فيه كما في MySQL و شبيهاتها . حيث يمكننا عمل Mix من تلك التقنيات إذا احتاج الأمر .
بالإضافة إلى ماسبق هناك قواعد بيانات اخرى لدى تويتر اسمها Manhattan , صُممت و طورت من قبل تويتر لحل مشاكل تتعلق بـDistributed storage لها Consistency عالية و اتصال قريب من نظام Hadoop للBig Data .
تصميم النظام كما ذكرت في السلسلة السابقة متغير مع الوقت. فما ينجح اليوم قد لا ينجح غداً. هناك ابحاث و تجارب و اخطاء و اختبارات , هذه الشركات تحتاج لمن لديه تفكير منطقي مدعم بالقراءة و الاطلاع اكثر من المهارة لأنها مدارس قد تتعلم خلال اسابيع فيها ما لا تتعلمه في سنين في غيرها .
ما ذكرته قسم واحد من مجالات العمل في تويتر و هو الArchitecture Design و هناك مجالات و فرق عمل اخرى كثيرة و قد يكون من الجيد أن نقوم بتقييّم انفسنا من خلال التقديم الوظيفي عليها حتى و إن لم نرغب بالعمل فهو تقييم مجاني يساعدنا على تنمية مهاراتنا .
careers.twitter.com/en.html
يبقي البيانات -> يحفظ البيانات في الRAM .
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Ahmed Aljaberi
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!