16 تغريدة 8 قراءة Sep 13, 2021
من اشهر اسئلة ال Technical Interviews اللي غالبا بتتسأل لكل الناس، يعني ايه ACID؟ مؤخرًا في انترفيوهات الشركات اللي تطبيقاتها بتحتاج المام المبرمج بال NoSQL Technologies بيبقى فيه Follow-up للسؤال بايه الفرق بين الـ ACID والـ BASE؟
ثريد جديد ⚡
الـ ACID هو Acronym ل Atomicity, Consistency, Isloation و Durability.
الـ Atomicity بتتقال على المعاملات اللي لا تقبل غير انها تكون كاملة. كـ مثال: رصيد X في البنك ١٠٠ جنيه، رصيد Y في البنك ٥٠ جنيه، لو X هيحول لـ Y ٥٠ جنيه، رغم ان الخطوات:
١) هنخصم ٥٠ جنيه من رصيد X
٢) هنزود ٥٠ جنيه لرصيد Y
الا انهم بيحصلوا مع بعض، لو واحدة فشلت التانية لازم تفشل.
مينفعش نعمل خطوة ١، وبعدين تحصل مشكلة في خطوة ٢ ونقف هنا. لو حصلت مشكلة في خطوة اتنين، لازم نعمل Roll Back لخطوة ١ ونرجعها لوضعها السابق ما قبل ما الخطوة تتعمل.
الـ Consistency بتتقال لما حالة النظام قبل وبعد المعاملة لازم يكون واحد.
في المثال السابق، مجموع الفلوس اللي في حساب X و Y هو ١٥٠ جنيه. بعد العملية ما تحصل لازم مجموع رصيدهم يبقى X و Y، والا يبقى فيه حاجة غلط حصلت، بالتالي بيحصل Roll Back للتعامل كله.
الـ Isolation هو العزل اللي بيحصل اثناء تنفيذ معاملة. بعد جزء من الثانية Z قرر يبعت فلوس ل X، قبل ما معاملة X ما تتنفذ والفلوس تتبعت ل Y. في الوضع ده معاملة Z مش هتبدأ غير لما لما معاملة X تبدأ، وفي بداية معاملة Z الحالة بتاعة X هتبقى ان رصيده بقى ٥٠ جنيه عشان هو معزول عن اللي
كان بيحصل ما بين X و Y في معاملة تانية.
الـ Durability: اي بيانات بتبقى محفوظة في Non-Volatile Hardware، حاجة زي Hard-desk او SSD مثلا. لكن عمرها ما بتبقى محفوظة على ال Memory، عشان ال Memory اول ما الكهرباء بتتقطع، كل حاجة فيها بتتمسح+
في وسط المعاملة كل حاجة بتحصل في ال Memory، في اللحظة اللي بيحصل Commit للمعاملة، او تأكيد، لازم المعلومة تتحول من ال Memory ل Non-Volatile Hardware بشكل ما، قابل اننا نرجعله بسهولة في حالة ان الكهرباء فصلت او الجهاز حصله حاجة عمومًا.
الـ BASE على الناحية التانية هو Acronym ل Basically Available, Soft State و Eventual Consistency
هنا هنستعمل تويتر كـمثال افضل.
الـ Basically Available معناها ان حتى لو فيه nodes (اجزاء من النظام المتطابقة) واقعة او بايظة بشكل او بأخر، النظام هيفضل يستجيب. كـ مثال خيالي، لو شوية تويتات من الفولوينج في node واقعة، هيظهر قدامك التويتات في ال nodes التانية،
ولما تكتب تويتة هتتحط وسط الموجودين بس. او لو كل حاجة واقعة وحاولت تكتب تويت، هيرجعلك ان فيه مشكلة والتويت مش هتتكتب، المهم ان دايما هتلاقي رد من النظام عليك، حتى لو الرد ده كان غير المتوقع.
الـ Soft State معناها ان مش ضروري كل ال nodes للنظام تبقى متطابقة طول الوقت، لكن هيفضل في الخلفية حاجة شغالة بتحاول تخليهم متطابقين.
لو عندنا node X و node Y، وداخل معاملتين واحدة اتكتبت في X، النظام بيسمح ان المعاملة التانية تتكتب في Y حتى قبل ما معاملة X تتنقل ل Y.
في الخلفية شغال الجوريزم مهمته ان يشوف معاملة X اتعملت امتى ويحطها ف المكان المناسب في Y (قبل المعاملة التانية).
بالتالي ممكن بعد المعاملتين ما يخلصوا، ال node Y تتغير مع ان مفيش اي Writes بتحصل عليها، عشان تبقى متطابقة لل node X.
الـ Eventual Consistency هو ان يبقى فيه الجوريزم شغال في الخلفية دايما يخلي كل ال nodes متطابقين مع بعض، حتى لو مش في نفس اللحظة، لكن في النهاية يتطابقوا مع بعض.
الثريد ده هو رابع ثريد في مجموعة ثريدات بشرح فيهم نظريات مهمة عن ال Distribution System زي:
1) Vertical vs Horizontal Scaling: shorturl.at
2) CAP Theorem: shorturl.at
3) Database Types (Both SQL and NoSQL): shorturl.at
وعلى Linkedin بكتب عن نفس المواضيع بالأنجليزي لو اسهل بنسبالك في قرايته:
linkedin.com
انا بحاول اشرح لنفسي برضه، ومش كل المعلومات اشتغلت بيها ف لو حد عنده تصحيح او تعديل لمعلومة يبعتلي.

جاري تحميل الاقتراحات...