اگرچه ذخیرهسازی اشیاء فناوری جدیدی نیست، اما هنوز هم میتواند در شروع کار بسیار گیجکننده باشد. در اینجا یک راهنمای جامع برای ذخیرهسازی مبتنی بر شیء با هر آنچه باید بدانید، جمعآوری کردهایم.
ذخیرهسازی اشیاء چیست؟
ذخیرهسازی اشیاء یا ذخیرهسازی مبتنی بر شیء، در هسته خود، یک معماری ذخیرهسازی داده را نشان میدهد که به شما امکان میدهد مقادیر زیادی از دادههای بدون ساختار را به روشی بسیار مقیاسپذیر ذخیره کنید.
امروزه دیگر کافی نیست تنها اطلاعات متنی ساده را در پایگاههای داده رابطهای یا غیررابطهای، در قالب جداول یا اسناد ذخیره کنیم؛ چرا که انواع مختلفی از دادهها مانند ایمیل، تصاویر، ویدیوها، صفحات وب، فایلهای صوتی، مجموعه دادهها، دادههای حسگر و سایر انواع محتوای رسانهای وجود دارند که بخش عمدهای از آنها را دادههای بدون ساختار تشکیل میدهند. افزون بر این، برخی مطالعات نشان دادهاند که حدود ۸۰٪ از دادههای موجود در هر سازمان، بدون ساختار هستند.
برای شرکتها و سازمانهای بزرگ، ذخیرهسازی و مدیریت این مقدار بینظیر از دادهها میتواند چالش برانگیز و بسیار پرهزینه باشد.
به عنوان یک راه حل، سهولت استفاده از سیستمهای ذخیرهسازی اشیاء و مزایایی که به همراه دارند، این معماری را به روش ترجیحی برای بایگانی دادهها، بکاپگیری و کم و بیش برای ذخیره هر نوع محتوای استاتیک تبدیل میکند. در حالی که بسیاری انتظار دارند حجم زیادی از دادهها به طور ضعیف ذخیره شوند، از طریق آبجکت استوریج میتوانید از طریق یک مدل دریاچه داده، ذخیرهسازی دادههای با کیفیت بالا را تضمین کنید.
آبجکت استوریج چگونه کار میکند؟
در دستگاهها یا سیستمهای ذخیرهسازی اشیاء، هیچ پوشه، دایرکتوری، فایل یا هیچ سلسله مراتبی که معمولا در یک سیستم مبتنی بر فایل میبینید، وجود ندارد. در عوض، این سیستمها تمام دادهها را در یک محیط داده مسطح به عنوان اشیاء ذخیره میکنند. هر شیء شامل خود دادهها، همراه با برخی اطلاعات توصیفی مرتبط با آن شیء، معروف به متادیتا، و یک شناسه منحصر به فرد جهانی است.
بنابراین در ذخیرهسازی اشیاء، ما از این اطلاعات برای یافتن و دسترسی به دادههایی که ذخیره کردهایم به جای یک مسیر فایل استفاده میکنیم.
مقایسه ذخیرهسازی اشیاء با فایل و بلوک
قابل توجهترین معماریها، ذخیرهسازی فایل، ذخیرهسازی بلوک یا ذخیرهسازی اشیاء هستند. در بیشتر موارد، اگر میخواهید دادههای خود را ذخیره کنید، یکی از موارد فوق باید برای نیازهای شما مناسب باشد.
ذخیرهسازی فایل (File Storage)
ذخیرهسازی فایل، ذخیرهسازی متصل به شبکه است که در آن دادهها در پوشهها ذخیره میشوند. وقتی نیاز به دسترسی به یک فایل باشد، کامپیوتر باید مسیر کامل برای یافتن آن را بداند. یک مورد استفاده خوب از آن زمانی است که ترکیبی از دادههای ساختاریافته و بدون ساختار دارید یا میخواهید دادهها را به طور همزمان با بسیاری از کاربران به اشتراک بگذارید. این میتواند تقریبا هر چیزی را ذخیره کند و شما هر زمان که از کامپیوتر شخصی خود به فایلهای خود دسترسی پیدا میکنید، از آن استفاده میکنید.
ذخیرهسازی بلوک (Block Storage)
ذخیرهسازی بلوک دادهها را در بلوکهای خام ذخیره میکند و برخلاف ذخیرهسازی فایل، میتوان از طریق یک شبکه ذخیرهسازی (SAN) به آن دسترسی داشت. به این معنی که در معماری ذخیرهسازی بلوک، سرورهایی که به ذخیرهسازی دسترسی دارند نیز میتوانند در شبکههای مختلف باشند. یک مورد استفاده خوب برای ذخیرهسازی بلوکی زمانی است که الزامات، تاخیر بسیار کم و عملکرد خوب و مداوم برای عملیات ورودی/خروجی، مانند پایگاه داده، را ایجاب میکنند.
ذخیرهسازی اشیاء (Object storage)
همانطور که قبلا بحث شد، ذخیرهسازی شیءگرا نوعی معماری است که در آن هر فایل به عنوان یک شیء یا آبجکت ذخیره میشود و میتوان از طریق یک درخواست HTTP، (معمولا GET) به آن دسترسی داشت. این نوع ذخیرهسازی بهترین گزینه برای سناریوهایی است که در آنها نیاز به مدیریت بسیاری از دادههای بدون ساختار است. در آبجکت استوریج، هر شیء یک شناسه منحصر به فرد دریافت میکند که مصرفکنندگان برای بازیابی آن و متادیتا از آن استفاده میکنند که میتواند از سیاست حفظ حریم خصوصی تا هر چیزی باشد که شما میخواهید.
چرا از ذخیرهسازی اشیاء استفاده کنیم؟
ذخیرهسازی اشیاء روش ترجیحی در مدیریت دادههای استاتیک است. در این بخش اطلاعات بیشتری در مورد اینکه چرا این یک انتخاب هوشمندانه است، آورده شده است.
سیستمهای ذخیرهسازی شیءگرا دادهها را بهینه میکنند
قابل توجهترین ویژگی سیستمهای ذخیرهسازی اشیاء، عدم ذخیره دادهها از طریق ساختار سلسله مراتبی است. فقدان ذخیرهسازی مبتنی بر پوشه نه تنها بازیابی فایلها را آسانتر میکند، بلکه متادیتا را نیز به هر قطعه داده اختصاص میدهد.
این متادیتا قابل تنظیم است، بنابراین امکان تجزیه و تحلیل آسانتر و دقیقتر دادههای ذخیره شده را نیز فراهم میکند. در نهایت، به لطف ساختار ذخیرهسازی مسطح، میتوانید به اضافه کردن دادهها و افزایش مقیاس سیستم ذخیرهسازی خود ادامه دهید.
در نهایت، ذخیرهسازی اشیاء ، ذخیرهسازی مبتنی بر ابر است. این بدان معناست که دادهها را در دستگاهی متفاوت از دستگاهی که ما برای دسترسی به آنها استفاده میکنیم، میزبانی میکند. این مکانیسم ذخیرهسازی، دادههای ما را از هرگونه مشکل مربوط به سختافزار ایمن نگه میدارد.
ارائهدهندگان ذخیرهسازی اشیاء
ارائهدهندگان زیادی وجود دارند که میتوانید برای به دست آوردن امکانات ذخیرهسازی شیء انتخاب کنید.
نیروانا
اولین معمار ذخیرهسازی اشیاء Nirvana بود. اگرچه دیگر کاربردی نیست، اما ارزش اشاره کردن را دارد. نیروانا یک نرمافزار ذخیرهسازی شیء مجازی بود که مدتها پیش، زمانی که ذخیرهسازی اشیاء هنوز ایدهای تازه بود، توسعه و منتشر شد.
این نتیجه تحقیقاتی بود که در سال ۱۹۹۵ در پاسخ به پروژهای که توسط DARPA برای یک سیستم تجزیه و تحلیل دادههای عظیم حمایت میشد، آغاز شد تا به سازمانها اجازه دهد دادههای بدون ساختار را که میتوانند در دستگاههای مختلف واقع در مناطق مختلف جهان میزبانی شوند، مدیریت کنند.
اگرچه دیگر کار نمیکند، اما معماری ذخیرهسازی اشیاء برای اولین بار به این شکل آغاز شد.
ذخیرهسازی S3 آمازون
قابل توجهترین ارائهدهنده ذخیرهسازی اشیاء، آمازون S3 است که با نام Amazon Simple Storage Service نیز شناخته میشود. اگرچه طراحی فنی آن به صورت عمومی ارائه نشده است، اما آمازون S3 قصد دارد یک سرویس ذخیرهسازی مقیاسپذیر، آسان برای استفاده و ارزان از آمازون با دسترسی بالا و تاخیر کم باشد.
مانند هر ذخیرهسازی مبتنی بر شیء، واحدهای اساسی S3 اشیاء هستند که در سطلها (bucket) سازماندهی شدهاند. این سطلها همچنین ویژگیهای اضافی مانند کنترل نسخه و قوانین سیاست را برای مدیریت بهتر دسترسی به فایلهایی که آپلود میکنید، ارائه میدهند.
این اشیاء را میتوان از طریق SDK که قبلا ذکر شد، REST API با استفاده از درخواستهای HTTP یا از طریق رابط کاربری که ارائه میدهند، مدیریت کرد. چیزی که آنها را متمایز میکند، تقاضا برای اشیاء است. به عنوان مثال، S3-IA میتواند برای دادههایی که کمتر مورد نیاز هستند و S3 Glacier برای ذخیرهسازی بایگانی استفاده شود.
برای افراد یا مشاغل کوچک، یک راهحل ارزانتر و آسانتر میتواند مفیدتر باشد.
مواردی که هنگام انتخاب ارائهدهنده باید در نظر بگیرید
علاوه بر هزینه اولیه، عوامل بسیار دیگری نیز وجود دارد که باید هنگام انتخاب ارائهدهنده راهحل ابری برای ذخیرهسازی شیء در نظر بگیرید:
- هزینه تماسهای API – میتواند رایگان یا با هزینه باشد
- پهنای باند – اگر از پهنای باند ارائه شده در طرح قیمت تجاوز کنید، برای هر گیگابایت اضافی که منتقل میکنید، هزینه دریافت میشود؛ معمولا ۰.۰۱ دلار برای هر گیگابایت اضافی منتقل شده
- هزینههای خروجی – ترافیکی که از شبکه خصوصی به اینترنت عمومی جریان دارد
- سرویس لبه (CDN) – میتواند رایگان یا با هزینه باشد
این جنبههای دیگر معمولا به عنوان هزینههای پنهان شناخته میشوند و دانستن همه چیز ارائه شده در بسته را ضروری میکنند و میتواند به شما در تخمین دقیق هزینههای ماهانه راهحل ابری شما کمک کند.
سرور اختصاصی ایران سخت افزاری است که تمام قدرت پردازشی، حافظه، پهنای باند و دیسک آن ماشین متعلق به کاربر است.
خرید سرور اختصاصی با قابلیت نصب مجازی ساز Proxmox یا ESXI به دلخواه کاربر به صورت رایگان
چگونه به ذخیرهسازی شیء دسترسی پیدا کنیم؟
اشیاء موجود در یک سیستم ذخیرهسازی اشیاء از طریق رابطهای برنامهنویسی کاربردی (API) قابل دسترسی هستند.
این فضا توسط رابط گرافیکی (داشبورد) ارائه شده توسط ارائهدهنده مستقیم در وبسایت آنها مدیریت میشود. داشبورد از قبل با استفاده از API با آبجکت استوریج ادغام شده است. تعداد کمی از اقدامات وجود دارد که میتوانید انجام دهید، اما همه موارد ضروری موجود است. شما میتوانید دادههای خود را آپلود، دانلود، ویرایش و حذف کنید. بنابراین، اگر میخواهید ذخیرهسازی مبتنی بر شیء را در برنامه خود ادغام کنید، باید خودتان یکپارچهسازی API را بنویسید.
برای این کار، دو API در دسترس است.
Provider API
API بومی برای ذخیرهسازی شیء، یک API REST مبتنی بر HTTP است.
این APIها از فرادادههای یک شیء برای یافتن داده/شیء مورد نظر پرسوجو میکنند. APIهای RESTful از دستورات HTTP مانند PUT یا POST برای آپلود یک شیء، GET برای بازیابی یک شیء و DELETE برای حذف آن استفاده میکنند.
هر ارائه دهنده API REST مخصوص به خود را دارد که میتوانید از آن برای ادغام آن سیستم ذخیرهسازی شیء خاص با برنامههای خود استفاده کنید.
گاهی اوقات، استفاده از این API به دلیل پیچیدگی و لایههای امنیتی زیاد میتواند چالش برانگیز باشد.
در این موارد، هدرهای ویژه باید با استفاده از الگوریتمهای رمزنگاری مختلف برای محتوایی که میخواهید آپلود کنید، ایجاد و امضا شوند.
API Amazon S3
راه حل دیگر استفاده از API S3 از آمازون است. این API در مورد ذخیرهسازی شیء به API بالفعل تبدیل شده است. این امر باعث ایجاد یکنواختی در ارتباط با معماری کیت توسعه نرمافزار آمازون (Amazon SDK) میشود. این کیت توسعه نرمافزار (SDK) برای اکثر زبانهای برنامهنویسی در دسترس است و استفاده از آن تحت مجوز آپاچی-۲.۰ رایگان است. اکثر فروشندگان شناختهشده، ذخیرهسازی شیء سازگار با این API را ارائه میدهند.
استفاده از این API مزایای متعددی را ارائه میدهد. یکی از آنها سهولت ادغام است زیرا کد از قبل نوشته شده و در متدها و ویژگیهای مختلفی که میتوانید استفاده کنید، کپسوله شده است. در عین حال، از آنجا که S3 استاندارد است، در صورت مواجهه با مشکلات خاص، یافتن اطلاعات و کمک در جامعه متنباز بسیار آسانتر خواهد بود، زیرا به احتمال زیاد شما اولین کسی نیستید که با آنها روبرو میشوید.
علاوه بر این، اگر بخواهید دادههای خود را از یک شیء ذخیرهسازی به شیء دیگر، شاید حتی یک ارائهدهنده دیگر، منتقل کنید، لازم نیست نگران تغییر کد باشید. اگر شیء ذخیرهسازی جدید با S3 سازگار باشد، به احتمال زیاد نیازی به تغییر چیزی نخواهید داشت؛ اگر چیزی نیاز به تغییر داشته باشد، این بهروزرسانیها جزئی خواهند بود.
جمعبندی
ذخیرهسازی اشیاء به عنوان یک راه نجات برای زیرساختهای مدرن که در آن دادههای بیشتری ایجاد، ذخیره و در اینترنت به اشتراک گذاشته میشوند، عمل میکند. استفاده از این نوع معماری، مزایایی را به همراه خواهد داشت و عملکرد کلی، پایداری و اطمینان را در کل زیرساختی که دارید افزایش میدهد.