بیگ تیبل
بیگ تیبل (به انگلیسی: Big Table)، که ترجمهٔ آن به فارسی معادل عبارت «جدول بزرگ» است، نام سامانهٔ پایگاهدادهای فشردهشده، با کارایی بالا و نرمافزار اختصاصی است که به صورت تعبیهشده در سامانه پرونده گوگل، سرویس قفل چاق و تعداد اندکی از دیگر برنامههای شرکت گوگل استفاده شدهاست. این سامانه به صورت رسمی در خارج از گوگل توزیع نشدهاست ولی از طرف این شرکت به عنوان بخشی از موتور برنامههای گوگل توصیه شدهاست.
تاریخچه
بیگ تیبل در سال ۲۰۰۴ شروع به کار نمود. و هماکنون از سوی بعضی از برنامههای گوگل به مانند مپ ردیوس ٬که از آن برای تولید و ایجاد تغییر دادههای ذخیرهشده در بیگ تیبل استفاده میشود، گوگل ریدر٬، گوگل مپس٬ جستجوی کتاب گوگل ٬میزبانی گوگل کد ٬اورکات، یوتوب و جیمیل. دلایل گوگل برای استفاده از پایگاهدادهٔ مختص خود، مقیاسپذیری، کنترل بهتر بر شاخصّای مختلف کارایی است.
آشنایی با بیگ تیبل
بیگ تیبل یک سیستم ذخیرهسازی توزیع شده برای مدیریت دادههای ساختاریافته میباشد و برای کاربردهای بسیار بزرگ به کار گرفته میشود: پتابایتها از دادههایی که بر روی هزاران سرور پیادهسازی میشود. دادهها(به انگلیسی: data size) و چه از نظر نیازمندیهای درازمدت، از بیگ تیبل استفاده میکنند.
از بیگ تیبل در بیش از ۶۰ محصول و پروژهٔ مربوط به شرکت گوگل استفاده میشود. از جملهٔ آنها میتوان به گوگل آنالیتیکس، گوگل فایننس، اورکات، جستجوی شخصیشده(به انگلیسی: personalized search) و گوگل ارت اشاره کرد. این برنامهها به روشهای مختلفی، چه از نظر اندازهٔ ویژگیهای اصلی بیگ تیبل که آن را از سایر سیستمهای ذخیرهسازی متمایز میسازد عبارتند از: کارایی بالا، مقیاسپذیری، قابلیت استفاده توسط برنامههای مختلف و همچنین دسترسی بالا.
از بسیاری جهات، بیگ تیبل به یک پایگاه دادهها شباهت دارد، برای مثال روشها و استراتژیهای پیادهسازی مشابهی با پایگاهداده دارد. پایگاههای دادهٔ موازی و پایگاههای دادهٔ حافظهٔ اصلی هم دارای امکاناتی همچون مقیاسپذیری و کارایی بالا هستند ولی بیگ تیبل واسط کاربر متفاوتی نسبت به آنها دارد. بیگ تیبل از مدل دادهای کاملاً رابطهای (به انگلیسی: full relational) استفاده نمیکند و به جای آن مدل دادهای سادهای را در اختیار کاربران قرار میدهد. کاربران میتوانند محلی (به انگلیسی: locality) بودن دادههای خود را کنترل کنند.
مدل دادهای
بیگ تیبل یک نقشهٔ توزیعشده، پراکنده(به انگلیسی: sparse) و چند بعدیِ مرتب شدهاست. این نقشه توسط یک کلید سطری، یک کلید ستونی و یک برچسب زمانی(به انگلیسی: timestamp) شاخص بندی شدهاست و هر مقداری در این نقشه، یک آرایهای از بایتها است.
سطرها
کلیدهای سطری یک جدول رشته هایی(به انگلیسی: string) دلخواه هستند که در حال حاضر اندازه آنها حداکثر ۶۴کیلوبایت است و معمولاً اندازه نرمال آنها ۱۰۰۰۰ بایت میباشد. هر عمل خواندن یا نوشتن در هر سطر یه صورت اتمیک (غیرقابل تجزیه) صورت میپذیرد. در بیگ تیبل، دادهها بر اساس کلید سطری مرتب شدهاند. محدودهٔ سطرها برای هر جدول به صورت پویا تقسیمبندی میشود. هر ردیف یک تَبلِت (به انگلیسی: tablet) نامیده میشود. در نتیجه، عمل خواندن از محدودههای سطری نزدیک به هم پربازده خواهد بود. بیگ تیبل با کمک کلید سطر، داده را با ترتیب لغتنویسی حفظ میکند. محدوده سطر برای یک جدول به صورت پویا پارتیشنبندی میشود. هر محدوده یک تبلت(tablet) نامیده میشود، که بخشی از توزیع شده گی و تعادل بارگذاری(load balancing) است. در نتیجه، خواندنهای محدودههای سطر کوتاه کارامد هستند و عموماً نیاز دارند که فقط با تعداد کمی از ماشینها ارتباط برقرار کنند. کلاینتها میتوانند با انتخاب کلیدهای سطر خود از این ویژگی بهرهبرداری کنند بطوریکه آنها محل مناسبی برای دسترسیهای داده خود بدست میآورند. برای مثال در webtable، صفحات در دامنه یکسان در داخل سطرهای مجاور با هم ملحق میشوند و این کار را به وسیلهٔ معکوس کردن مؤلفههای نام میزبان URLها انجام میدهند. برای مثال، ما داده maps.google.com/index.html را تحت کلید com.google.maps/index.html ذخیره میکنیم. ذخیرهسازی صفحات در کنار یکدیگر از دامنه یکسان باعث میشود که برخی تحلیلهای میزبان و دامنه بسیار کارآمدتر باشند.
ستونها
کلیدهای ستونی در مجموعههایی که خانوادههای ستونی نامیده میشوند دستهبندی میشوند. تمام دادههایی که در یک خانوادهٔ ستونی هستند معمولاً از یک نوع هستند. یک خانوادهٔ ستونی باید ایجاد شود تا بتوان دادهها را زیر هر کلید در آن خانواده قرار داد.
برچسب زمانی
هر خانه در بیگ تیبل میتواند چندین نسخه از یک داده را دربرداشته باشد، این نسخهها توسط برچسبهای زمانی شاخص بندی میشوند. معمولاً برچسبهای زمانی در جدول بزرگ ۶۴ بیتی هستند. نسخههای متفاوت یک خانه بر اساس برچسبهای زمانی مرتب میشوند بهطوریکه نسخههای جدیدتر بتوانند سریع تر در اختیار قرار بگیرند.
رابط برنامهنویسی نرمافزار
رابط برنامهنویسی نرمافزار (ایپیآی) مربوط به بیگ تیبل تابعهایی برای ساختن و پاک کردن جدولها و خانوادههای ستونی در اختیار قرار میدهند. ایپیآیها همچنین توابع مورد نیاز برای تغییر کلاسترها، جدولها، و خانوادههای ستونی فراداده مثل دسترسی به حقوق کنترلی را تأمین میکنند.
بلوکها
بیگ تیبل بر روی قسمتهای متعددی از زیرساخت گوگل مورد استفاده قرار گرفتهاست. بیگ تیبل با استفاده از سامانهٔ فایل گوگل دادهها و لاگها را ذخیره میکند. بیگ تیبل، متکی بر قفلهایی به نام چابی است. یک سرویس قفل چابی از پنج نسخه تشکیل شدهاست.
پیادهسازی
پیادهسازی بیگ تیبل شامل سه قسمت عمدهاست: یک کتابخانه که با هر کاربر در ارتباط است، یک سرور اصلی و تعداد زیادی سرور تبلت. سرورهای تبلت میتوانند به صورت پویا به یک خوشه اضافه شوند یا از آن حذف شوند تا بتوانند تغییرات را مدیریت و تعدیل بکنند. سرور اصلی عهدهدار مرتبط کردن تبلتها با سرورهای تبلتی، شناسایی سرورهای اضافه شده و غیرقابل استفاده و تنظیم میزانِ بار روی یک سرور تبلت میباشد.
بعلاوه، تغییرات همچون ایجاد خانواده سطر و ستون را تحت نظر قرار میدهد. هر سرور تبلت مدیریت بین ده تا هزار تبلت را انجام میدهد. هر سرور تبلت درخواستهای خواندن و نوشتن مربوط به تبلتهای زیر نظرش را تحت نظر قرار میدهد و همچنین از بزرگ شدن بیش از حد تبلتها جلوگیری میکند.
همچون بیشتر سیستمهای ذخیرهسازی توزیع شده با یک سرور اصلی(single-master)، داده کلاینت از طریق سرور اصلی منتقل نمیشود: کلاینتها برای خواندن و نوشتن مستقیماً با سرورهای تبلت ارتباط برقرار میکنند. اغلب کلاینتها هرگز با سرور اصلی ارتباط برقرار نمیکنند زیرا کلاینتهای بیگ تیبل برای دریافت اطلاعات در مورد موقعیت تبلت به سرور اصلی متکی نیستند. در نتیجه سرور اصلی در عمل به آسانی بارگذاری شدهاست.
یک خوشه بیگ تیبل شماری از جدولها را ذخیره میکند. هرجدول شامل مجموعهای از تبلت هاست، و هر تبلت شامل کلیه دادههایی است که با یک رنجی از سطر در ارتباط است. درابتدا، هر جدول فقط شامل یک تبلت میباشد. با بزرگ شدن یک جدول، جدول به صورت اتوماتیک به تبلتهای چندگانه تقسیم میشود، سایز هر کدام تقریباً به صورت پیشفرض ۱۰۰–۲۰۰مگابایت است.
تعیین وظایف تبلتها
هر تبلتی در هر زمان به یک سرور تبلت مرتبط است. سرور اصلی از وضعیت سرورهای تبلتی که در آن لحظه مشغول بکار هستند خبر دارد؛ از جمله اینکه میداند که کدام تبلتها هستند که وظیفهای به آنها اختصاص داده نشدهاست. وقتی به یک تبلت وظیفهای اختصاص داده نشدهاست، و یک سرور تبلت با فضای مناسب قابل استفادهاست، سرور اصلی با فرستادن یک درخواست بارگذاری تبلت به سرور تبلت، وظایفی را برای آن مشخص میکند.
بیگ تیبل از چابیها برای دنبال کردن وضعیت سرورهای تبلت استفاده میکند. وقتی یک سرور تبلت شروع به کار میکند، آن از یک قفل اختصاصی برای یک فایل به نام دایرکتوری چابی استفاده میکند. سرور اصلی این فایل را برای اطلاع از وضعیت سرورهای تبلت بررسی میکند. یک سرور تبلت وقتی که قفل اختصاصی خود را از دست بدهد از ادامهٔ کار برای سرور خودداری میکند.
سرور اصلی همچنین وظیفه دارد که وقتی یک سرور به تبلتهایش سرویس نمیدهد آن را شناسایی کند. برای انجام چنین کاری سرور اصلی در زمانهای مشخصی از سرور تبلت دربارهٔ وضعیت قفلش سؤال میپرسد.
فشردهسازی
به مرور که اعمال نوشتن اجرا میشوند، اندازهٔ جدول حافظه افزایش مییابد. وقتی که حجم جدول حافظه به یک حدی معینی میرسد، یک جدول حافظهٔ جدید ساخته میشود. این فرایند دو هدف را دنبال میکند؛ باعث کاهش استفادهٔ حافظه توسط سرور تبلت میشود و همچنین در صورتی که سرور دچار مشکل شود و نیاز به بازیابی اطلاعات باشد، دادههای کمتری نیاز است که از روی لاگ خوانده شود. در حین این فرایند فشرده سازی اعمال خواندن و نوشتن میتوانند ادامه پیدا کنند.
بهینهسازی
برای اینکه پیادهسازی مورد نظر به نحو احسن انجام شود، نیاز است که بر روی آن اصلاحاتی انجام پذیرد، از جمله:
گروههای محلی
کاربران میتوانند چند خانوادهٔ ستونی را ترکیب کنند و یک گروه محلی را به وجود آورند. یک جدولاساس (به انگلیسی: SSTable) جداگانه برای هر گروه محلی در هر تبلت تولید میشود.
طراحی
بیگ تیبل، سمپاد بسیار بزرگ مقیاس و سریع است. اگرچه به شکل ستونهایی با تعداد ثابت نیست، ولی بنا به تعریف نویسندگانش «یک نگاشت مرتب شدهیِ چند بعدی و خلوت است». در واقع ترکیب از پایگاهدادههای مبتنی به ردیفی و سمپاد مبتنی بر ستونی است. بیگ تیبل برای مقیاسهای بزرگ در حد پتابایت در سرتاسر صدها یا هزاران ماشین طراحی شدهاست که این ماشینهای به راحتی قابل اضافه شدن به سامانههستند و به صورت خودکار از ویژگیهای مفید سایر منابع بدون نیاز به پیکربندی مجدد استفاده مینمایند.
هر جدول دارای چند بعد است. جداول برای جیافاس (سامانهٔ فایل گوگل) بهینه شدهاند. برای اینکار هر جدول به قرصهایی تقسیم شدهاند - این بخشهای تفسیمبندی شده از جدوال، به صورت ردیفهایی از قرصهایی با طولی در حدود ۲۰۰ مگابایت هستند. اگر اندازهٔ این قرصها بیش از اندازهٔ تعیین شده گردد، با استفاده از الگوریتم فشردهسازی بیدیآیاِفاِف، فشرده میگردند.
سایر پیادهسازیها
متنباز
- اچبیس — به زبان جاوا نوشته شدهاست. شرایط همانند جدولِ بزرگ را فراهم میآورد و توسط هستهٔ هادوپ پشتیبانی میشود.
- جدول ترکیبی — جدول هایپربرای مدیریت ذخیرهسازی و پردازش اطلاعات بر روی خوشههای کارگزاران استفاده میشود.
- آپاچی کاساندرا — سامانهٔ ذخیرهسازی و توزیعشدهای از شرکت آپاچی که در سایت مشهور فیس بوک استفاده شده. این سامانه براساس دادهٔ ساختاری ماندد پایگاه گسترده داده آمازون، دینامو و به زبان جاوا نوشته شدهاست.
- نپتون — به زبان جاوا نوشته شده و از زووکیپر و اچدیافاس هادوپ استفاده مینماید.
- کیدیآی — حاصل تلاش کاسمیکس برای ساخت برنامهای مانند جدولِ بزرگ در زبان سی++.
جدوال ترکیبی گوگل
- جدوال ترکیبی گوگل در ۹ ژوین ۲۰۰۹ منتشر شد. این جدوال به عنوان سامانههایی آزمایشی برای مدیریت سامانهای ابری در نظر گرفتهشد.
منابع
- ↑ "به عنوان اولین نگاه. بیگ تیبل از اوایل سال ۲۰۰۴ (۱۳۸۳) شروع به توسعه یافت و به مدت هشتماه مورد کار واقع شد (فوریه ۲۰۰۵)" Google's BigTable بایگانیشده در ۱۶ ژوئن ۲۰۰۶ توسط Wayback Machine
- ↑ "بیگ تیبل قابل استفاده با مپردیوس است. مپردیوس چهارچوبی برای اجرایِ محاسبات موازی با اندازهٔ بسیار بزرگ است که توسط گوگل استفاده میشود. ما با مجموعهای از لفافه بندها، به بیگ تیبل اجازهٔ استفاده به عنوان هدفی ورودی / خروجی برای کارهای مپردیوس دادیم" صفحهٔ ۳ از "بیگ تیبل: یک سامانهٔ توزیعی برای دادهّای ساختار یافته"، ۲۰۰۶
- ↑ از بیگ تیبل برای ایجاد مامنی برای اقلام بسیار گستردهٔ آینده خواهد بود." وبلاگ رسمی گوگل ریدر
- ↑ "در حال حاضر در حدود ۱۰۰ واحد برای خدمترسانی به ارائه چاپ، تاریخچهٔ جستجو و تفشهها و اورکات استفاده میشود." Google's BigTable بایگانیشده در ۱۶ ژوئن ۲۰۰۶ توسط Wayback Machine
- ↑ "راه حل جدید آنّا برای پیشنمایش کوچکشده٬استفاده از بیگ تیبل شرکت گوگل است٬که کارایی بالایی را برای تعداد زیاد، تحملِ خطا، ذخیرهسازی و سایر موارد فراهم میآورد. این سامانه فوقالعادهاست و نشانی از همکاری فراگیر است." گفتگو مقیاسپذیری در یوتوب
- ↑ "چکونه موجودیتها و ایندکسها ذخیره میشوند- موتور برنامههای گوگل -گوگل کد"
- ↑ "ما بیگ تیبل را تعریف نمودیم٬یک سامانهٔ توزیع شده برای ذخیرهٔ دادههای ساختاریافته برای شرکت گوگل… کاربران ما علاقهمند به کارایی بالا و در دسترسی بودن سایت هستند؛ که با پیادهسازی جدول بزرگ تأمین میشود… در نهایت ما برتریهای آشکاری را در ساختن ساختارِ ذخیرهسازی مختص به خود مشاهده نمودیم. ما باطراحی بیگ تیبل، تا حد زیادی نرمش و راحتی را احساس نمودیم." از نتیجهگیریِ "بیگ تیبل: سامانهایتوزیع شده برای ذخیرهسازی برای دادههای ساختار یافته"
- ↑ تیم اورایلی (۳ می۲۰۰۶). "داستان جنگ بین پایگاهِ دادههای شماره هفتم: سامانهٔ فایل گوگل و جدول بزرگ" (به انگلیسی). انتشارات اورایلی. Archived from the original on 26 January 2008. Retrieved 10 مرداد 1390. ;
- ↑ کوین بارتون (۱۲ اکتبر ۲۰۰۸). "گوگل، بیگ تیبل، فشردهسازی، زیپی و بیامدیآیافاف" (به انگلیسی). Archived from the original on 1 May 2013. Retrieved 10 مرداد 1390. ;
- ↑ هستهٔ هادوپ اچبیس - ویکیِ هادوپ
- ↑ «About Hypertable». بایگانیشده از اصلی در ۲۱ فوریه ۲۰۰۹. دریافتشده در ۲۸ سپتامبر ۲۰۱۰.
- ↑ «جدوال ترکیب گوگل». بایگانیشده از اصلی در ۱۸ سپتامبر ۲۰۰۹. دریافتشده در ۲۸ سپتامبر ۲۰۱۰.
- ↑ وبلاگ تحقیقاتی جدوال ترکیبی گوگل