التخزين: SQL وNoSQL والفهارس وSharding
في هذا الدرس نتعلم كيف نختار المكان الذي يحفظ فيه التطبيق بياناته. قاعدة البيانات (المكان المنظَّم الذي تخزّن فيه البرمجيات المعلومات، مثل خزانة ملفات ضخمة) هي قلب النظام. نختارها بناءً على access patterns (كيف تُقرأ البيانات وتُكتب فعليًا)، وعلى الاتساق (مدى أهمية أن يرى الجميع دائمًا البيانات المح
System Design (تخطيط كيفية بناء برمجيات كبيرة تخدم أشخاصًا كثيرين) يشبه تخطيط مدينة: الطرقات والتخزين وإشارات المرور وطواقم الصيانة، بحيث تستمر المدينة في العمل جيدًا حتى في أكثر ساعات الذروة ازدحامًا.
- نمذجة التخزين
- المهارة الأساسية في هذا الدرس: اختيار مكان تخزين البيانات (قاعدة بيانات) بناءً على كيفية قراءتها وكتابتها فعليًا (access patterns)، وعلى الاتساق، وعلى الفهارس (indexes — "جدول محتويات" يسرّع البحث)، وعلى sharding (تقسيم البيانات إلى عدة أجزاء عندما تكبر أكثر من اللازم).
- Trade-off
- اختيار واعٍ له مكسب وثمن معًا — تمامًا مثل اختيار مسار: الطريق السريع يكلّف رسم مرور، والمجاني يستغرق وقتًا أطول. في المقابلة تشرح للمُقابِل المكسب والثمن لكل اختيار.
- مقياس تشغيلي
- رقم يوضّح ما إذا كان القرار يعمل فعلًا عندما يكون النظام حيًّا ويخدم مستخدمين حقيقيين (production). على سبيل المثال: latency (كم يستغرق الرد من وقت)، وerror rate (نسبة الطلبات التي تفشل)، وqueue lag (كم مهمة تنتظر في الطابور)، وcache hit ratio (كم مرة وجدنا إجابة جاهزة مسبقًا). مثل عدادات لوحة القيادة في السيارة — تخبرك إن كان كل شيء على ما يرام.