حل لمشكلة حقيقية من أرض الواقع لقواعد البيانات
مؤخرا قررنا نجمع معلومات عن المصادر اللي بيجي منها العملا لأرابيك تك…
يعني مع كل أوردر بيتفتح عندنا، عايزين نعرف هذا الشخص عرفنا منين من غير ما نسأله….
الحل هو خطوتين:
- الكلاينت يجمع اكبر معلومات يقدر يجمعها من البراوزر، و من الهيدرز اللي جاية في الريكويست
- الباكند ياخود الكلام ده و يخزنه في الداتابيز
و بجي هنا السؤال:
-> لو عندك table للاوردرات، عليه كل معلومات الاوردرات. داخل قاعدة بيانات sql
-> و عندك column لل meta بتاعة الاوردرات -المعلومات الاضافية-.
-> نوع هذا الcolumn هو json، يعني ممكن تسجل فيه معلومات بطريقة منظمة في صورة json و تقدر تبحث عنها باستخدام دوال الjson
هل الأفضل تعمل table جديد و تسميه order_analytics ؟
و لا الأفضل انك تعمل column جديد في ال table الاساسي و تخلي نوعه json ؟
ولا الأفضل تزود المعلومات تحت ال column اللي هو meta كمعلومات اضافية لل json؟
عشان نجاوب على ده، لازم نسأل شوية أسئلة:
-> هل هنقوم باستدراج هذه المعلومات كثيرا ؟
-> هل هنحتاج أن نقوم بربط هذه المعلومات باي table اخر في نفس قاعدة البيانات؟ يعني هل مثلا هنحب نجيب كل المصادر اللي مربوطة بكل ال customers اللي عملوا اوردرات في اخر شهر؟
هذه الأسئلة سوف تحدد ما هو الاختيار السليم.
لو هتستعلم كتير وعايز علاقات: اعمل جدول منفصل + علاقات + فهارس (Indexes)
ليه؟
١- Joins أحسن من JSON لما تبقى عايز علاقات مع جداول كتير (customers, campaigns, countries…).
٢- الاستعلامات بتبقى أوضح وأسهل للتحسين (EXPLAIN/ANALYZE).
٣- تقدر تحط قيود (NOT NULL, CHECK) ومفاتيح خارجية (FK) تمنع الداتا البايظة.
٤- تقدر تعمل indexes دقيقة على كل عمود محتاجه. و ده بيفرق كتير جدا جدا جدا، بتحول ال select من O(n) ل log(n) او o(1) لو الداتابيز فيها hash indexes
و طبعا ده اللي عملناه في ارابك تك.
طيب إمتى JSON ينفع؟ -<
- معلومات غير حرِجة أو حقول متغيّرة كتير ومش بتستعلم عنها كتير (logging/debug/user_agent_raw…)
لكن أول ما هتحتاج تقارير ثابتة، علاقات، أو تجميعات سريعة… ارجع حوّل المفاتيح المهمة ل columns حقيقية عليها indexes
كل ده عامة مشروح في الكورس اللي انا نزلته. الدورة اللي فعلا هتخليك تعرف المعلومات اللي انت محتاجها عشان تتخصص.
و ايوة لو عاوز تتخصص فرانت اند، محتاج تعرف الكلام ده…. هو ده الواقع دلوقتي.
المنهج اللي محطوط في الدورة، هو منهج رائع بفضل الله
و طريقة شرحي الحمدلله بفضل الله عجبت كل الناس. لاني بفضل الله عندي القدرة على تبسيط اي معلومة، و لكن السر الحقيقي اني بقعد كتير و اخطط قبل ماعرض المعلومة، عشان اوصل للهدف ده:
"ازاي اقدر ارتب المعلومات بطريقة تدريجيه مثالية، بحيث تصل للمتلقي بتسلسل منطقي جدا"
تشات جي بي ميقدرش يعمل الكلام ده بالقدرة دي😂

