ہماری بنیاد اتنی بڑی اور تقسیم نہیں ہوگی، VKontakte کی طرح یا سترہ، لیکن "تاکہ یہ تھا"، لیکن یہ اچھا تھا - فعال، تیز اور ایک سرور پر فٹ PostgreSQL - تاکہ آپ سروس کی ایک الگ مثال کہیں سائیڈ پر تعینات کر سکیں، مثال کے طور پر۔
لہذا، ہم شارڈنگ، نقل اور جیو ڈسٹری بیوٹڈ سسٹمز کے مسائل پر توجہ نہیں دیں گے، بلکہ ڈیٹا بیس کے اندر موجود سرکٹ سلوشنز پر توجہ مرکوز کریں گے۔
مرحلہ 1: کچھ کاروباری تفصیلات
ہم اپنے پیغام رسانی کو تجریدی طور پر ڈیزائن نہیں کریں گے، لیکن اسے ماحول میں ضم کریں گے۔ کارپوریٹ سوشل نیٹ ورک. یعنی، ہمارے لوگ "صرف خط و کتابت" نہیں کرتے بلکہ بعض کاروباری مسائل کو حل کرنے کے تناظر میں ایک دوسرے سے بات چیت کرتے ہیں۔
اور کاروبار کے کیا کام ہیں؟... آئیے ڈیولپمنٹ ڈیپارٹمنٹ کے سربراہ واسیلی کی مثال دیکھتے ہیں۔
"نکولائی، اس کام کے لیے ہمیں آج ایک پیچ کی ضرورت ہے!"
اس کا مطلب یہ ہے کہ کچھ کے تناظر میں خط و کتابت کی جا سکتی ہے۔ دستاویز.
"کولیا، کیا تم آج شام دوٹا جا رہے ہو؟"
یعنی بات چیت کرنے والوں کا ایک جوڑا بھی بیک وقت بات چیت کر سکتا ہے۔ مختلف موضوعات پر.
"پیٹر، نکولے، نئے سرور کے لیے قیمت کی فہرست کے اٹیچمنٹ میں دیکھیں۔"
تو، ایک پیغام ہو سکتا ہے کئی وصول کنندگان. اس صورت میں، پیغام پر مشتمل ہو سکتا ہے منسلک فائلوں.
"سیمیون، یہ بھی دیکھو۔"
اور موجودہ خط و کتابت میں داخل ہونے کا موقع ملنا چاہیے۔ ایک نئے رکن کو مدعو کریں.
آئیے فی الحال "واضح" ضروریات کی اس فہرست پر غور کریں۔
مسئلے کی لاگو کردہ تفصیلات اور اس پر دی گئی حدود کو سمجھے بغیر، ڈیزائن مؤثر ڈیٹا بیس اسکیما کو حل کرنا تقریباً ناممکن ہے۔
مرحلہ 2: کم سے کم منطقی سرکٹ
اب تک، ہر چیز ای میل خط و کتابت سے ملتی جلتی ہے - ایک روایتی کاروباری ٹول۔ ہاں، "الگورتھمک طور پر" بہت سے کاروباری مسائل ایک دوسرے سے ملتے جلتے ہیں، اس لیے ان کو حل کرنے کے اوزار ساختی طور پر ایک جیسے ہوں گے۔
آئیے ہستی کے تعلقات کے پہلے سے حاصل شدہ منطقی خاکہ کو ٹھیک کرتے ہیں۔ اپنے ماڈل کو سمجھنے میں آسان بنانے کے لیے، ہم سب سے قدیم ڈسپلے آپشن استعمال کریں گے۔ ER ماڈلز UML یا IDEF اشارے کی پیچیدگیوں کے بغیر:
ہماری مثال میں، فائل کا فرد، دستاویز اور بائنری "باڈی" "بیرونی" ادارے ہیں جو ہماری سروس کے بغیر آزادانہ طور پر موجود ہیں۔ لہذا، ہم مستقبل میں انہیں UUID کے ذریعہ "کہیں کہیں" کے لنکس کے طور پر سمجھیں گے۔
ڈرا خاکے جتنا آسان ہو سکے - زیادہ تر لوگ جنہیں آپ انہیں دکھائیں گے وہ UML/IDEF پڑھنے کے ماہر نہیں ہیں۔ لیکن ڈرا ضرور کریں۔
مرحلہ 3: میز کی ساخت کا خاکہ بنانا
ٹیبل اور فیلڈ کے ناموں کے بارے میںکھیتوں اور میزوں کے "روسی" ناموں کو مختلف طریقے سے سمجھا جا سکتا ہے، لیکن یہ ذائقہ کا معاملہ ہے. کیونکہ یہاں Tensor پر کوئی غیر ملکی ڈویلپر نہیں ہیں، اور PostgreSQL ہمیں hieroglyphs میں بھی نام دینے کی اجازت دیتا ہے، اگر وہ حوالوں میں بند، پھر ہم اشیاء کو غیر مبہم اور واضح طور پر نام دینے کو ترجیح دیتے ہیں تاکہ کوئی تضاد نہ ہو۔
چونکہ بہت سے لوگ ہمیں ایک ہی وقت میں پیغامات لکھتے ہیں، ان میں سے کچھ ایسا بھی کر سکتے ہیں۔ آف لائن، پھر سب سے آسان آپشن ہے۔ UUIDs کو بطور شناخت کنندہ استعمال کریں۔ نہ صرف بیرونی اداروں کے لیے بلکہ ہماری سروس کے اندر موجود تمام اشیاء کے لیے بھی۔ مزید برآں، وہ کلائنٹ کی طرف سے بھی تیار کیے جاسکتے ہیں - اس سے ہمیں پیغامات بھیجنے میں مدد ملے گی جب ڈیٹا بیس عارضی طور پر دستیاب نہ ہو، اور تصادم کا امکان انتہائی کم ہو۔
ہمارے ڈیٹا بیس میں ڈرافٹ ٹیبل کا ڈھانچہ اس طرح نظر آئے گا: میزیں: RU
فارمیٹ کی وضاحت کرتے وقت سب سے آسان چیز یہ ہے کہ کنکشن گراف کو "ان وائنڈنگ" کرنا شروع کیا جائے۔ ان میزوں سے جن کا حوالہ نہیں دیا گیا ہے۔ خود کسی کو نہیں.
مرحلہ 4: غیر واضح ضروریات تلاش کریں۔
بس، ہم نے ایک ڈیٹا بیس تیار کیا ہے جس میں آپ بالکل ٹھیک لکھ سکتے ہیں۔ کسی طرح پڑھنے کے لئے.
آئیے خود کو ہماری خدمت کے صارف کے جوتے میں ڈالیں - ہم اس کے ساتھ کیا کرنا چاہتے ہیں؟
آخری پیغامات
یہ تاریخ کے مطابق ترتیب دیا گیا ہے۔ مختلف معیارات پر مبنی "میرے" پیغامات کی رجسٹری۔ جہاں میں وصول کنندگان میں سے ایک ہوں، جہاں میں مصنف ہوں، جہاں انہوں نے مجھے لکھا اور میں نے جواب نہیں دیا، جہاں انہوں نے مجھے جواب نہیں دیا، ...
خط و کتابت کے شرکاء
اس لمبی لمبی گفتگو میں کون کون حصہ لے رہا ہے؟
ہمارا ڈھانچہ ہمیں ان دونوں مسائل کو "عام طور پر" حل کرنے کی اجازت دیتا ہے، لیکن جلدی نہیں۔ مسئلہ یہ ہے کہ پہلے کام کے اندر چھانٹنے کے لیے انڈیکس بنانے سے قاصر ہے۔، ہر ایک شرکاء کے لیے موزوں ہے (اور آپ کو تمام ریکارڈ نکالنا ہوں گے)، اور دوسرے کو حل کرنے کے لیے جس کی آپ کو ضرورت ہے تمام پیغامات نکالیں۔ اس موضوع پر
غیر ارادی صارف کے کام بولڈ ہوسکتے ہیں۔ پیداوری پر کراس.
مرحلہ 5: اسمارٹ ڈی نارملائزیشن
ہمارے دونوں مسائل اضافی جدولوں سے حل ہوں گے جن میں ہم کریں گے۔ ڈیٹا کا ڈپلیکیٹ حصہان پر ہمارے کاموں کے لیے موزوں اشاریے بنانے کے لیے ضروری ہے۔
یہاں ہم نے معاون میزیں بناتے وقت استعمال ہونے والے دو عام طریقوں کو لاگو کیا ہے:
ضرب ریکارڈ
ایک ابتدائی پیغام کے ریکارڈ کا استعمال کرتے ہوئے، ہم مختلف مالکان کے لیے مختلف قسم کے رجسٹروں میں متعدد فالو اپ ریکارڈ بناتے ہیں - بھیجنے والے اور وصول کنندہ دونوں کے لیے۔ لیکن اب ہر رجسٹر انڈیکس پر آتا ہے - سب کے بعد، ایک عام صورت میں، ہم صرف پہلا صفحہ دیکھنا چاہیں گے۔
منفرد ریکارڈز
ہر بار جب آپ کسی مخصوص موضوع کے اندر کوئی پیغام بھیجتے ہیں، تو یہ چیک کرنے کے لیے کافی ہوتا ہے کہ آیا اس طرح کا کوئی اندراج پہلے سے موجود ہے یا نہیں۔ اگر نہیں، تو اسے ہماری "لغت" میں شامل کریں۔
مضمون کے اگلے حصے میں ہم بات کریں گے۔ تقسیم کا نفاذ ہمارے ڈیٹا بیس کی ساخت میں۔