مدل ذخیره سازی (Storage Model) هسته هر سیستم کلان داده ها است، زیرا باید این انبوه داده ها را برای پردازش ذخیره کنیم. مدل ذخیره سازی، بر مقیاس پذیری (Scalability)، ساختار داده ها (Data Structures)، برنامه نویسی و مدل های محاسباتی (Computational Models) برای سیستم هایی تأثیر می گذارد که، بر روی هر سیستم کلان داده کار می کنند.

در شکل زیر دو زمینه گوناگون درباره داده ها و دخیزه سازی آنها نشان داده شده است. دید نخست درباره مدل ذخیره سازی (Storage Model) و دومین دید درباره مدل داده ها (Data Model) است که نباید این دو را با یکدیگر اشتباه بگیرید. به طور کلی سه مدل اصلی ذخیره سازی ۱) ذخیره سازی بر پایه بلوک (Block Based) و ۲) ذخیره سازی برپایه پرونده (File Based) و ۳) ذخیره سازی برپایه شی (Object Based) هست.

سامانه های ذخیره سازی بر پایه بلاک

ذخیره سازی سطح بلاک (Block Level Storage) یکی از کلاسیک ترین مدل ذخیره سازی در علم کامپیوتر است. سامانه های ذخیره سازی بر پایه بلاک، خود را با استفاده از مکانیزم های استاندارد مانند اتصال فیبر کانال و iSCSI به سرورها معرفی می کند. در اصل ، ذخیره سازی سطح بلاک می تواند به عنوان یک هارد در یک سرور در نظر گرفته شود ولی شاید هارد در یک شاسی از راه دور نصب شده باشد و با به کار گیری از کانال های فیبر نوری یا iSCSI قابل دسترسی باشند.

منظور از این، به کارگیری ذخیره سازی شبکه مانند NAS یا SAN است.

علاوه بر این، برای ذخیره سازی مبتنی بر بلاک، داده ها به صورت بلاک هایی ذخیره می شوند که به طور معمول دارای اندازه ثابت هستند و هنوز اطلاعات اضافی ندارند (متادیتا یا فراداده). برای دسترسی به هر بلاک از یک شناسه منحصر به فرد استفاده می شود. تمرکز ذخیره سازی مبتنی بر بلاک بر عملکرد و مقیاس پذیری برای ذخیره و دسترسی به داده های بسیار بزرگ است. برای درک بهتر شاید پیوند زیر درباره ساختار فیریکی پایگاه داده اوراکل سودمند باشد.

معماری اوراکل – ساختار منطقی اوراکل

معماری اوراکل – مروری بر Data Block

در نتیجه ، از ذخیره سازی مبتنی بر بلاک معمولاً به عنوان یک الگوی ذخیره سازی سطح پایین استفاده می شود که به طور گسترده برای سیستم های ذخیره بالاتر سطح مانند سیستم های مبتنی بر File ، سیستم های مبتنی بر Object-based و Databases Transactional و غیره استفاده می شود. شناسه یکتا از راه واسط های دسترسی (Access Interface) به محل دقیق بلاک های داده نگاشت داده می شود. شکل زیر نمایش ساده ای از معماری ذخیره سازی بلاک را نشان می دهد.

با توسعه محاسبات توزیع شده (Distributed Computing) و کلان داده ها، مدل ذخیره سازی بر پایه بلاک نیز برای پشتیبانی از محیط های توزیع شده و بر پایه ابر (Cloud Computing) توسعه داده می شود. همانگونه که در شکل زیر می بینید، معماری یک سیستم ذخیره سازی بلاک توزیع شده (Distributed Block Storage) از سرور ویژه ای به نام سرور بلاک (Block Server) و گروهی از گره های بلاک (Block Node) تشکیل شده است. سرور بلاک نقش نگهداری نگاشت (Mapping) یا ایندکس سازی (Indexing) از شناسه های بلاک (Block ID) به بلاک های داده واقعی در گره های بلاک را بر عهده دارد. گره های بلاک نقش ذخیره داده های واقعی را در پارتیشن های با اندازه ثابت دارند که هرکدام به عنوان بلاک در نظر گرفته می شوند.

سامانه ذخیره سازی بر پایه فایل

ذخیره سازی بر پایه فایل از معماری سیستم فایل سنتی به ارث می برد، به گونه ای که داده ها در فایل هایی (فایل هایی) نهداری می شوند که میان فایل ها یک ساختار سلسله مراتبی هست. این رایج ترین مدل ذخیره سازی است و برای پیاده سازی و به کارگیری ساده و آسان است. در سناریو کلان داده ها، یک سامانه ذخیره سازی بر پایه فایل می تواند بر روی (در بالای) برخی دیگر از انتزاعات سطح پایین تر (مانند مدل بر پایه Block و Object-based) ساخته شود تا عملکرد و مقیاس پذیری آن بهبود یابد.

در هسته سیستم عامل ها مولفه ای به نام سیستم فایل (File System) هست که کارکرد و رفتار سیستم فایل همانند ساخت، کپی کردن، پاک کردن و دسترسی به فایل ها را اداره می کند. از دید سیستم فایل، دیسک ها گروهی از بلاک ها هستند که یک فایل می تواند بر روی تا چندین بلاک نگهداری شود. سیستم فایل می داند کدام بلاک ها به کار رفته اند و کدام یک آزاد هستند.

مسیرهای فایل ها در یک ساختار سلسله مراتبی (درختی) سازماندهی شده اند و نام آنها برای دسترسی به داده های ذخیره سازی بر روی دیسک ها به کار گرفته می شود. بنابراین هر بلاک دیسک دارای یک شناسه یکتا و داده های مرتبط بر روی یک یا چندین یا گروهی از بلاک ها دارای یک نام در سطح سیستم فایل هستند.

برای یک کلان داده ها، سیستم های فایل توزیع شده (Distributed File Systemیا DFS) معمولاً به عنوان سیستم های ذخیره سازی اصلی مورد استفاده قرار می گیرند. شکل زیر معماری معمولی یک سیستم فایل توزیع شده را نشان می دهد که به طور معمول دارای یک یا چند گره نام (Node Name) و دسته گره های داده (Data Node) است. گره نام  نقش نگهداری سلسله مراتب درج فایل را برای همه سیستم دارد ولی گره های داده نقش نگهداری داده های فایل را دارند.

در یک سامانه مبتنی بر پایه فایل، کاربر برای دسترسی به فایل های ذخیره شده باید از فضا های نام (Namespace) و مسیرها (Path) آگاهی داشته باشد. برای به اشتراک گذاشتن فایل ها در سیستم ها، مسیر یا فضای نام یک پرونده شامل سه بخش اصلی است: پروتکل، نام دامنه و مسیر پرونده. برای نمونه در سیستم فایل توزیع شده هدوپ (HDFS) این مسیر به گونه زیر است که در آن پروتکل hdfs است. ServerAddress:ServerPort نام یا نشانی FQDN و شماره درگاه (پورت) و در پایان FilePath مسیر فایل را نشان می دهند.

سامانه های بر پایه شی

مدل ذخیره سازی مبتنی بر شیء نخستین بار در دیسک های امن پیوست شده به شبکه (Network Attached Secure Disk یا NASD) ارائه شد. NASD سربار (Overhead) ناشی از انتقال فایل را برای سرورهای فایل (File Server) کاهش می دهد، بدین گونه که ابزارهای ذخیره سازی خودشان سر راست، فایل ها را به کلاینت ها انتقال می دهند. با NASD، بیشتر درخواست های کلاینت ها مانند خواندن/نوشتن سر راست به دیسک ها می رود ولی درخواست ها و کارهای که کمتر تکرار می شوند، مانند تأیید اعتبار (Authentication) به مدیر فایل فرستاده می شود.

در مدل ذخیره سازی بر پایه شی، داده ها به عنوان شی ها مدیریت می شوند. همانطور که در شکل زیر نشان داده شده است، هر شی در برگیرنده داده ها، برخی از فرا داده ها (Meta Data)، ویژگی ها و یک شناسه  شی یکتا و سراسری (Object Identifier یا OID) است. مدل ذخیره سازی بر پایه شی، لایه های پایین ذخیره سازی را به دور از دید مدیران و برنامه های کاربردی انتزاع (Abstract) می کند. سامانه های ذخیره سازی شی ها می توانند در سطح های گوناگونی همچون، در سطح دستگاه، سطح سیستم و سطح رابط پیاده سازی شوند.

شکل زیر نمای ساده ای از معماری یک سامانه دخیره سازی بر پایه شی را نشان می دهد. همانگوه که در شکل آشکار است، سامانه ذخیره سازی بر پایه شی معمولاً یک فضای نام مسطح (Flat Namespace) را به کار می برد، که در آن معمولاً شناسه داده ها و مکان های آنها به گونه دوتایی های ارزش-کلیدی (Key-Value) در سرور شی نگهداری می شوند. 

در اصل، سرور شی آدرس دهی مستقل از موقعیت مکانی (Location Independent Addressing) و تأخیر ثابت جستجو (Constant Lookup Latency) را برای خواندن هر شی فراهم می کند. در کنار، داده های فرا داده ها از خود داده ها جدا نگهداری می شوند و از این رو این فرا داده ها به گونه شی هایی در یک سرور فرا داده (Meta Data Server) نگهداری می شوند ولی شاید با خود سرور شی ها مشترک باشد.

با توجه به معماری مسطح (Flat Architecture)، می توان سیستم های ذخیره سازی بر پایه شی را با افزودن گره های تازه ذخیره سازی به افزایش مقیاس دهیم. در کنار این، ذخیره سازی افزوده شده می تواند به گونه خودکار به عنوان ظرفیتی که برای همه کاربران در دسترس است گسترش داده شده است.

هم سنجی مدل های ذخیره سازی

در عمل، هیچ مدل فراگیر (کاملی) نیست که بتوانیم همه سناریوهای دلخواه را با آن داشته باشیم. بنابراین، توسعه دهندگان و کاربران باید مدل های ذخیره سازی را با توجه به نیاز و برنامه خود برگزینند. از بُن و پایه، هر یک از مدل های ذخیره سازی که در این بخش درباره آن گفتگوکردیم، دو سویه مثبت و منفی خود را دارند.

بررسی سامانه ذخیره سازی بلاک

فضای ذخیره سازی بر پایه بلاک برای انعطاف پذیر بودن، تطبیق پذیری و سادگی مشهور است. در سیستم ذخیره سازی سطح بلاک، حجم های (Vloume) ذخیره سازی خام (متشکل از مجموعه ای از بلاک ها) ساخته می شوند و سپس سیستم بر پایه سرور به این حجم ها متصل شده و آنها را به عنوان درایوهای ذخیره سازی جدا و ویژه آن سروربه کار گرفته می شوند. سامانه ذخیره سازی بر پایه بلاک را می توان برای هر برنامه کاربردی، همانند ذخیره فایل، ذخیره پایگاه داده، حجم فایل سیستم مجازی (Virtual Machine File System یا VMFS) و موارد دیگر به کار گرفت.

ذخیره سازی بر پایه بلاک را نیز می توان برای سناریوهای اشتراک داده به کار گرفت. پس از ساخت حجم های (Volume) بر پایه بلاک، می توان آنها را به گونه منطقی متصل کرد یا میان فضاهای گوناگون کاربر مهاجرت داد (از ماشینی به ماشین دیگر مهاجرت داد). بنابراین، کاربران می توانند این حجم بلاک های همپوشانی را برای به اشتراک گذاری داده ها میان یکدیگر به کار بگیرند.

ذخیره سازی بر پایه بلاک از توان و کارایی بالایی برخوردار است و به طور کلی برای ظرفیت (Capacity) و کارایی (Performance) قابل تنظیم است. از آنجا که داده ها در بلاک های با اندازه ثابت (Fixed Size Block) بخش و نگهداری می شوند، از این رو مقدار سگمنت های داده های کوچک، کاهش می یابد و همچنین به دلیل خواندن متوالی و نوشتن بلوک های داده، توان IO افزایش داده می شود.

با این حال، ذخیره سازی بر پایه بلاک به دلیل کمبود اطلاعات (مانند فرا داده ها، معانی منطقی یا Logical Semantics و ارتباط میان بلاک های داده) در برابر با دیگر مدل های ذخیره سازی مانند ذخیره سازی بر پایه فایل و شی، مدیریت آن پیچیده است و به کار گیری از آن آسان نیست.

بررسی سامانه ذخیره سازی بر پایه فایل

مدیریت و نگهداری و پیاده سازی ذخیره سازی فایل (File Storage) آسان است. همچنین این روش از به کارگیری روش ذخیره سازی بلاک (Block Storage) ارزان تر است و بیشتر در رایانه های خانگی و در مشاغل کوچکتر به کار گرفته می شود، در حالی که ذخیره سازی سطح بلاک درون شرکت های بزرگتر به کار می رود و مدیریت هر بلاک بدست هارد دیسک خود آن بلاک است ولی مدیریت فایل ها بدست سیستم عامل مبتنی بر سرور و بدست مولفه File System درون هسته انجام می شود.

ذخیره سازی بر پایه فایل معمولاً با به کارگیری از پروتکل های رایج مانند CIFS و SMB در ویندوز و NFS (یا Network File System) در لینوکس و VMWare انجام می شود. در عین حال، فایل ها دارای اطلاعات بیشتری مانند تأیید اعتبار، مجوزها، کنترل دسترسی و تهیه نسخه پشتیبان هستند.

بررسی سامانه ذخیره سازی بر پایه شی

ذخیره سازی بر پایه شی چالش های مربوط به مدیریت گسترش ذخیره سازی، در مقیاس بسیار بزرگ، را حل می کند. با افزودن گره های تازه، می توان معماری های ذخیره سازی بر پایه شی را افزایش مقییاس داده و مدیریت کرد. ذخیره سازی بر پایهشی ها معمولاً برای ذخیره سازی داده های بدون ساختار (Unstructure Data) در مقیاس بزرگ مانند عکس در فیس بوک، آهنگ در Spotify و حتی فایل ها در Dropbox به کار گرفته می شود.

ذخیره سازی بر پایه فایل معمولاً با به کارگیری از پروتکل های رایج مانند CIFS و SMB در ویندوز و NFS (یا Network File System) در لینوکس و VMWare انجام می شود. در عین حال، فایل ها دارای اطلاعات بیشتری مانند تأیید اعتبار، مجوزها، کنترل دسترسی و تهیه نسخه پشتیبان هستند.