حسین بیگی
حسین بیگی
خواندن ۳ دقیقه·۳ سال پیش

حکایت شیخ و مریدان : SystemDesign قسمت اول


خودم :
قبل از شروع بگم که این قسمت میشه 9 امین مقاله ای که نوشتم، و تصمیم گرفتم از این به بعد روی طراحی سیستم ها که خب علاقه خودمم هست بیشتر بخونم و بنویسم.
از این به بعد یک سری مطالب به صورت دنباله نوشته میشن و از سطوح ساده تا پیشرفته ادامه داره.
همچنین چون خیلی درگیر شدم شاید کمی تاخیر داشته باشه که از الان عذرخواهی میکنم.به هرحال دم اونایی که از اول این مطالب با من همراه بودن و خوندن و نظر دادن گرم!

روزی شیخ به مکتب خانه آمد و کتابی در دستش داشت و رو به مریدان کرد و گفت: زین بعد مطالب را فقط برروی طراحی سیستم می گذاریم.
مریدی پرسید: چرا؟
شیخ گفت : چون دلم میخواهد!همین.
مریدان که همه کف کرده بودند گفتند : یا شیخ چند جلسه است؟
شیخ گفت : تا وقتی که دیگر حسش نباشد!حال بس است شروع کنیم.سپس شیخ بر منبر خود نشست وشروع کرد.
در اولین مرحله باید یاد بگیریم که اصلا این سیستم هایی که طراحی میکنیم چه گونه قرار است کارکنند! و یک سری مطالب ابتدایی را مرور میکنیم.
فعلا همه چیز را بروی یک سرور در نظر بگیرید!مشتری آدرس سرور شما را در مرورگرش میزند!یا با تلفن همراهش برنامه شما را باز میکند!در این مرحله درخواست مشتری شما یک سر میزند به DNS و میگوید ای DNS این آدرس که دادن دست من به کدام مکان است؟ DNS نگاهی به آدرس میکند کمی بین رفقایش پچ پچ میکنند و بالاخره یکی از آن ها میگوید یافتم یافتم!و آدرس را برمیگرداند! موبایل که حال تازه فهمید که آدرس(IP) اصلی چه است با یک HTTP ریز درخواست ها را مستقیم میفرستد به سرور ما!چه جالب.
حال سرور ما یا یک HTML برمیگرداند که مرورگر آنرا نشان دهد یا JSON – XML و... برمیگرداند که برنامه ما زبانش را میفهمد.
حال نکته جالب این است که اگر بخواهیم یا شرایط میزان درخواست ها به سرور زیاد شود میتوانیم سرور های API که برای موبایل هست را از سرور های Web جدا کنیم که بتوانیم راحت برابر نیاز آنان را گسترش (scale) کنیم.
از این رو مسئله ای که پیش می آید که یا برادر ما باید داده های مشتری را درجایی ذخیره کنیم یا نه؟؟؟؟برای اینکار از دیتابیس استفاده میکنم که کارش این است که گفتم (همه میدانیم چیست- بیشتر به صورت سرجهازی نوشتمش)

در زیر عکس از روضه هایی که خواندم نمایش داده شده:

مریدی پرسید : یا شیخ از کجا بدانیم چه دیتابیسی استفاده کنیم؟

شیخ گفت شما میتوانید یا از دیتابیس های رابطه ای و یا غیر رابطه ای استفاده کنید.
دیتابیس های رابطه ای را که به آن RDBMS نیز میگویند داده های شما را در جدول ها که دارای ردیف و ستون می­باشند ذخیره میکنند.محبوب ترین ها هم که SqlServer ، Oracle ،Mysql،PostgresSQL و... می­باشند.

دیتابیس های غیر رابطه ای را که عموما NoSQL می­گویند در چهار دسته بندی قرار می­گیرند.Key-value , graph , column store , document store که هرکدام روضه خود را میخواهد که جلوتر میگوییم.

برای بیشتر کار های همان RDBMS ها زیاد هم هستند، چرا که 40 سال است که کار میکنند و بیشتر نیاز ها را برطرف میکنند. اما خب تا نباشد چیزکی مردم نسازند NoSql .

اگر شما نیاز های زیر را داشتید نگاهی هم به غیر رابطه ای بیاندازید بد نیست :
1-نیاز وحشتناکی به latency پایین دارید

2- داده های شما از ساختارش مشخص نیست! شلم شوربا میباشد.

3-کارتان با خروجی های JSON – XML – YAML اینا راه می افتد

4-حجم داده های شما خیلی زیاد است!

مریدان گفتند : یا شیخ خسته نباشی! تایم خشتک رسیده!
شیخ نگاهی به ساعت کرد و گفت : بدرید که باقیش باشد برای بعد.

system design
شاید از این پست‌ها خوشتان بیاید