ACID
در ابتدا باید بگیم ترنزکشن چیه؟ ترنزکشن یک مجموعه کوئری که به صورت یه unit of work رفتار میکنه و نمیتونه split بشه. و ترنزکشن یه چرخه داره
در ابتدا باید بگیم ترنزکشن چیه؟ ترنزکشن یک مجموعه کوئری که به صورت یه unit of work رفتار میکنه و نمیتونه split بشه. و ترنزکشن یه چرخه داره
"بهجای اینکه همیشه دادهها کاملاً درست و هماهنگ باشن، بهتره سریعتر به کاربرا پاسخ بدیم، حتی اگه بعضی از دادهها موقتی ناهماهنگ باشن!"
دیتا رو از حالت نرمال خارج کردن برای کاهش تعداد جوین ها میگن
یه لایبریه که CRUD و نحوه ذخیره سازی رو هندل میکنه. میتونه یه key/value باشه یا یه موتوری که full acid رو ساپورت میکنه. توی پست گرس نمیشه انجین رو عوض کرد ولی توی MYSQL میتونیم حتی به ازای هر جدول engine متفاوتی داشته باشیم
ایندکسها درDB برای افزایش سرعت جستجوها استفاده میشوند. مثل فهرست یک کتاب عمل میکنند که دسترسی سریع به دادهها را ممکن میسازد.
این مشکلات در دیتابیس وقتی اتفاق میافتند که تراکنشهای همزمان روی دادههای یکسان تأثیر بگذارند و ایزولهسازی به اندازه کافی قوی نباشد.
پارتیشنبندی توی دیتابیس یه جورایی مثل این میمونه که بخوای یه انباری خیلی بزرگ رو به چند بخش تقسیم کنی، طوری که هر بخش مخصوص یه سری از وسایل باشه. حالا چرا این کارو میکنیم؟ چون وقتی چیزی رو لازم داری، دیگه کل انباری رو نمیگردی، فقط میری همون بخشی که وسایل مرتبط توش هست، پس سریعتر پیدا میکنی.
رپلیکا یعنی ما چندتا instance از دیتابیسمون بالا داشته باشیم برای Load Balance دیتابیسمون. حالا چند نوع رپلیکا داریم که هرکدوم مزایا و معایب خودشونو دارن.
شاردینگ چیه؟ اصلاً چرا شاردینگ کنیم؟!