امروزه دیتا اصلی ترین و مهم ترین دارایی هر شرکت و کسب و کاری به شمار می رود. افزایش اهمیت دیتا در تداوم حیات یک کسب و کار از یک سو و رشد نمایی و فزاینده آن از سویی دیگر سبب شده است که شیوه ها و متدهای ذخیره سازی اطلاعات همواره دستخوش تغییرات و بروزسانی هایی باشد که بتواند با شرایط و وضع کنونی خود را سازگار کند. یکی از جدیترین متدهای ذخیره سازی دیتا که امروزه با افزایش میزان دیتا به خصوص دیتاهای غیر ساختار یافته مورد استقبال قرار گرفته است، معماری ذخیزه سازی مبتنی بر اشیاء یا به عبارتی Object Storage ها هستند. در این مقاله از وبلاگ رمیس سعی خواهیم کرد تا شما را با این نوع از معماری آشنا سازیم. با ما همراه باشید…
Object Storage چیست؟
ذخیره سازی مبتنی بر اشیاء که از آن با عنوان Object Storage نیز یاد می شود یک نوع معماری ذخیره سازی دیتا به حساب میاد که هدفش مدیریت دیتاهای حجیم و بدون ساختار (unstructured data) است. همان طور که از نام این مدل از دیتا نیز مشخص است، این نوع از دیتا به راحتی قابل سازماندهی در یک دیتابیس relational سنتی که از سطر و ستون تشکیل شده است، نیست و از این رو نگهداری و پشتیبانی گیری از آن چالش های مختص به خود را به همراه دارد.
اما منشاء تولید این نوع از دیتا چیست؟ پاسخ این سوال در دل اینترنت نهفته است. بله، امروزه حجم بالایی از دیتا بر بستر اینترنت شکل می گیرد، ارسال ایمیل، ویدئو، عکس، محتوای متنی، پیام های صوتی و … همگی در دسته دیتاهای بدون ساختاری طبقه بندی می شوند که در هر لحظه از سوی رسانه های اجتماعی، موتورهای جست و جو، موبایل ها، کامپیوترها و … در حال تولید هستند.
موسسه تحقیقاتی معتبر IDC به تازگی تخمین زده است که دیتاهای بدون ساختار تا سال 2025 میلادی بیش 80% از حجم دیتا در جهان را به خود اختصاص خواهند داد.
همزمان که ذخیره سازی و مدیریت مقرون به صرفه این حجم بی سابقه و بالا از دیتا برای شرکت ها و سازمان به یکی از اصلی ترین چالش ها بدل شده بود، ظهور معماری Object Storage و ارائه سطح قابل توجهی از مقیاس پذیری توانست تا توجه بسیاری را به خود جلب کند. مقیاس پذیری بالا در این نوع از معماری به حدی است که ارائه آن از طریق مدل های ذخیره سازی دیتا به صورت سنتی نظیر file یا block-based میسر نیست و همین موضوع باعث خواهد شد تا وسوسه استفاده از این نوع معماری بازیگران اصلی این حوزه را به سمت و سویی ببرد که حتی فرآیندهای آرشیو سازی و پشتیبان گیری خود را به سمت Object Storage ها ببرند. در معماری Object Storage شما می توانید دیتا را در حجم های بالایی همچون ترابایت، پتابایت و یا حتی بیشتر ذخیره و مدیریت کنید.
Object Storage چگونه کار می کند؟
در این نوع از معماری Object ها واحدهای گسسته ای از دیتا هستند که که در یک فضای فلت ذخیره سازی می شوند. معنی این عبارت این است که بر خلاف معماری ذخیره سازی file-based، در مدل Object Storage دیگر خبری از فولدرها، دایرکتوری ها و یا مسیرهای پیچیده نیست . هر Object را می توان به عنوان یک ریپازیتوری ساده و در عین حال مستقل در نظر گرفت که شامل دیتا، متا دیتا (اطلاعات توصیفی مربوط به Object) و یک شماره شناسایی منحصربفرد بوده که تنها مختص همان Object است. با این شماره شناسایی یکتا اپلیکیشن ها قادر خواهند بود تا به راحتی فایل ها و دیتاهای مورد نیاز خود را یافته و به آن دسترسی پیدا کنند. در این مدل شما می توانید با تجمیع شمار زیادی از دیوایس های Object Storage که به اختصار OSD نیز نامیده می شوند یک Pool تشکیل داده و به راحتی این منابع را در یک سطح وسیع توزیع نمایید. این کار به شما این امکان را می دهد تا از مهم ترین ویژگی معماری Object Storage ها که همانا مقیاس پذیری نامحدود، انعطاف پذیری و disaster recovery است نهایت بهره را ببرید.
همانطور که گفتیم Object Storage دردسرها و چالش های فولدرها، دایرکتوری ها و سلسله مراتب های مربوط به File System ها را حذف می کند. با این حال همچنان شما می توانید Object ها را به صورت لوکال ذخیره نمائید، اما در اغلب موارد Object ها در سرورها کلود نگهداری می شوند تا به راحتی از هر نقطه از جهان بتوان به آنان دسترسی داشت.
در این مدل دسترسی به Object ها یا راحت تر بگوئیم دیتا از طریق API (رابط برنامه نویسی برنامه) امکان پذیر است. API در نظر گرفته شده برای Object Storage یک RESTful API مبتنی بر HTTP است و به شما این امکان را می دهد تا به کمک query زدن بر اساس متا دیتای مربوط به Object مدنظر از طریق اینترنت و از هر کجا و از روی هر دستگاهی به دیتا مدنظر خود دسترسی داشته باشید. از آنجایی که این API از دستورات HTTP پشتیبانی می کند در نتیجه شما به راحتی می توانید از طریق دستوراتی نظیر POST برای آپلود، GET برای بازیابی و دریافت و یا DELETE برای حذف یک Object اقدام کنید.
به عنوان مثال به کمک فراخوانی یک API می توانید به راحتی هر تعداد فایلی که در نظر دارید را بر روی یک Object Storage ذخیره کنید. اما این همه امکاناتی نیست که از این طریق فراهم می شود و با ظهور استاندارهای جدیدی و اضافی RESTful API حتی شما می توانید کارهای فراتر ایجاد، بازخوانی، آپدیت و یا حذف Object ها از این طریق انجام دهید. با چنین امکاناتی اپلیکیشن ها می توانند به راحتی Object Storage، کانتینرها، اکانت ها، امنیت، بیلینگ، multi-tenancy و غیره را نیز مدیریت کنند.
اجازه دهید با یک مثال شما را بیشتر با Object Storage آشنا سازیم، فرض کنید که شما قصد دارید مجموع کتاب های یک کتابخانه بسیار بزرگ را در یک سیستم جامع ثبت کنید. طبیعتا این کتاب ها به جز عنوان شامل اطلاعات مرتبط دیگری همچون نویسنده، تاریخ انتشار، ناشر، حق نشر و … نیز هستند که می بایست در سیستم ثبت گردند. در حالت عادی برای ثبت چنین اطلاعاتی در دیتابیس های Relational شما کافیست این اطلاعات را وارد سیستم کرده و هر یک از آنان را در مسیر مورد نظر و دایرکتوری مربوطه قرار دهید.
تا اینجای کار هیچ مشکلی به نظر نمی رسد اما مشکل دقیقا زمانی آغاز می شود که تعداد این کتاب ها به میلیون ها نسخه برسد آنوقت فرآیند جست و جو و پاسخ دهی سیستم بسیار سخت و زمان بر خواهد بود. اما اگر برای انجام این فرآیند از معماری Object Storage استفاده کنیم چطور؟ از آنجایی که دیتا در این مثال ثابت است، عملکرد Object Storage برای انجام چنین فرآیندی کاملا رضایت بخش است زیرا محتوای یک کتاب تغییر نمی کند. Object ها نیز در این مثال به شکل یک Package در یک ساختار فلت ذخیره شده است و به آسانی به کمک API فراخوانی می شود. علاوه بر این همزمان با رشد تعدا کتاب ها شما به آسانی میتوانید دیوایس های بیشتری را با یکدیگر تجمیع و Pool های بزرگتری تشکیل دهید و آن ها را تا هر میزان که نیاز دارید گسترش دهید.
مزیت های Object Storage ها کدامند؟
در عصر حاضر که در آن دیتا به شدت در حال رشد است و حجم دیتا بدون ساختار تولید شده توسط پلتفرم ها و سیستم های مبتنی بر وب سبب شده تا دیتاهای بدون ساختار به شدت رشد کنند، در نظر گرفتن Object Storage ها برای مدیریت چنین شرایطی منطق به نظر می رسد. ادامه این مقاله به صورت خلاصه نگاهی به مزیت های استفاده از این نوع معماری می پردازیم:
- ذخیره سازی و مدیریت دیتاهای بدون ساختار (unstructured data)
- مقیاس پذیری بالا (Scalability)
- شخصی سازی متا دیتاها
- مقرون به صرفه بودن
- سازگاری با سیستم های کلود
حال که با معماری Object Storage تا حدودی آشنا شدید پرسش ما از شما این است که آیا فکر می کنید این نوع از معماری ذخیره سازی دیتا می تواند جای سیستم های ذخیره سازی دیتا همانند File و Block Storage را بگیرد؟