بیگ تیبل
بیگ تیبل (به انگلیسی: 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)، داده کلاینت از طریق سرور اصلی منتقل نمی شود : کلاینت ها برای خواندن و نوشتن مستقیما با سرورهای تبلت ارتباط برقرار می کنند.اغلب کلاینت ها هرگز با سرور اصلی ارتباط برقرار نمی کنند زیرا کلاینت های بیگ تیبل برای دریافت اطلاعات در مورد موقعیت تبلت به سرور اصلی متکی نیستند. در نتیجه سرور اصلی در عمل به اسانی بارگذاری شده است. یک خوشه بیگ تیبل شماری از جدول ها را ذخیره می کند.هرجدول شامل مجموعه ای از تبلت هاست ، و هر تبلت شامل کلیه داده هایی است که با یک رنجی از سطر در ارتباط است.درابتدا ، هر جدول فقط شامل یک تبلت می باشد.با بزرگ شدن یک جدول ، جدول بصورت اتوماتیک به تبلت های چندگانه تقسیم می شود،سایز هر کدام تقریبا بصورت پیش فرض 100-200مگابایت است.
تعیین وظایف تبلتها [ویرایش]
هر تبلتی در هر زمان به یک سرور تبلت مرتبط است. سرور اصلی از وضعیت سرورهای تبلتی که در آن لحظه مشغول بکار هستند خبر دارد؛ از جمله اینکه میداند که کدام تبلتها هستند که وظیفهای به آنها اختصاص داده نشدهاست. وقتی به یک تبلت وظیفهای اختصاص داده نشدهاست، و یک سرور تبلت با فضای مناسب قابل استفادهاست، سرور اصلی با فرستادن یک درخواست بارگذاری تبلت به سرور تبلت، وظایفی را برای آن مشخص میکند.
بیگ تیبل از چابیها برای دنبال کردن وضعیت سرورهای تبلت استفاده میکند. وقتی یک سرور تبلت شروع به کار میکند، آن از یک قفل اختصاصی برای یک فایل به نام دایرکتوری چابی استفاده میکند. سرور اصلی این فایل را برای اطلاع از وضعیت سرورهای تبلت بررسی میکند. یک سرور تبلت وقتی که قفل اختصاصی خود را از دست بدهد از ادامهٔ کار برای سرور خودداری میکند.
سرور اصلی همچنین وظیفه دارد که وقتی یک سرور به تبلتهایش سرویس نمیدهد آن را شناسایی کند. برای انجام چنین کاری سرور اصلی در زمانهای مشخصی از سرور تبلت دربارهٔ وضعیت قفلش سوال میپرسد.
فشرده سازی [ویرایش]
به مرور که اعمال نوشتن اجرا میشوند، اندازهٔ جدول حافظه افزایش مییابد. وقتی که حجم جدول حافظه به یک حدی معینی میرسد، یک جدول حافظهٔ جدید ساخته میشود. این فرآیند دو هدف را دنبال میکند؛ باعث کاهش استفادهٔ حافظه توسط سرور تبلت میشود و همچنین در صورتی که سرور دچار مشکل شود و نیاز به بازیابی اطلاعات باشد، دادههای کمتری نیاز است که از روی لاگ خوانده شود. در حین این فرآیند فشرده سازی اعمال خواندن و نوشتن میتوانند ادامه پیدا کنند.
بهینه سازی [ویرایش]
برای اینکه پیاده سازی مورد نظر به نحو احسن انجام شود، نیاز است که بر روی آن اصلاحاتی انجام پذیرد، از جمله:
گروههای محلی [ویرایش]
کاربران میتوانند چند خانوادهٔ ستونی را ترکیب کنند و یک گروه محلی را بوجود آورند. یک جدولاساس (به انگلیسی: SSTable) جداگانه برای هر گروه محلی در هر تبلت تولید میشود.
طراحی [ویرایش]
بیگ تیبل، سمپاد بسیار بزرگ مقیاس و سریع است. اگرچه به شکل ستونهایی با تعداد ثابت نیست، ولی بنا به تعریف نویسندگانش "یک نگاشت مرتب شدهیِ چند بعدی و خلوت است". در واقع ترکیب از پایگاهدادههای مبتنی به ردیفی و سمپاد مبتنی بر ستونی است. بیگ تیبل برای مقیاسهای بزرگ در حد پتابایت در سرتاسر صدها و یا هزاران ماشین طراحی شدهاست که این ماشینهای به راحتی قابل اضافه شده به سامانههستند و به صورت خودکار از ویژگیهای مفید سایر منابع بدون نیاز به پیکربندی مجدد استفاده مینمایند.[۸]
هر جدول دارای چند بعد است. جداول برای جیافاس (سامانهٔ فایل گوگل) بهینه شدهاند. برای اینکار هر جدول به قرصهایی تقسیم شدهاند - این بخشهای تفسیمبندی شده از جدوال، به صورت ردیفهایی از قرصهایی با طولی در حدود ۲۰۰ مگابایت هستند. اگر اندازهٔ این قرصها بیش از اندازهٔ تعیین شده گردد، با استفاده از الگوریتم فشردهسازی بیدیآیاِفاِف، فشرده میگردند.[۹]
سایر پیادهسازیها [ویرایش]
متنباز
- اچبیس — به زبان جاوا نوشته شدهاست. شرایط همانند جدولِ بزرگ را فراهم میآورد و توسط هستهٔ هادوپ پشتیبانی میشود.[۱۰]
- جدول ترکیبی — جدول هایپربرای مدیریت ذخیرهسازی و پردازش اطلاعات بر روی خوشههای کارگزاران استفاده میشود.[۱۱]
- آپاچی کاساندرا — سامانهٔ ذخیرهسازی و توزیعشدهای از شرکت آپاچی که در سایت مشهور فیس بوک استفاده شده. این سامانه براساس دادهٔ ساختاری ماندد پایگاه گسترده داده آمازون، دینامو و به زبان جاوا نوشته شدهاست.
- نپتون — به زبان جاوا نوشته شده و از زووکیپر و اچدیافاس هادوپ استفاده مینماید.
- کیدیآی — حاصل تلاش کاسمیکس برای ساخت برنامهای مانند جدولِ بزرگ در زبان سی++.
جدوال ترکیبی گوگل
- جدوال ترکیبی گوگل در ۹ ژوین ۲۰۰۹ منتشر شد. این جدوال به عنوان سامانههایی آزمایشی برای مدیریت سامانهای ابری درنظر گرفتهشد.[۱۲][۱۳]
منابع [ویرایش]
- ↑ "به عنوان اولین نگاه. بیگ تیبل از اوایل سال ۲۰۰۴ (۱۳۸۳) شروع به توسعه یافت و به مدت هشتماه مورد کار واقع شد(فوریه ۲۰۰۵)" Google's BigTable
- ↑ "بیگ تیبل قابل استفاده با مپردیوس است. مپردیوس چهارچوبی برای اجرایِ محاسبات موازی با اندازهٔ بسیار بزرگ است که توسط گوگل استفاده میشود. ما با مجموعهای از لفافه بندها، به بیگ تیبل اجازهٔ استفاده به عنوان هدفی ورودی / خروجی برای کارهای مپردیوس دادیم" صفحهٔ ۳ از "بیگ تیبل: یک سامانهٔ توزیعی برای دادهّای ساختار یافته"، ۲۰۰۶
- ↑ از بیگ تیبل برای ایجاد مامنی برای اقلام بسیار گستردهٔ آینده خواهد بود." وبلاگ رسمی گوگل ریدر
- ↑ ۴٫۰ ۴٫۱ "در حال حاضر در حدود ۱۰۰ واحد برای خدمترسانی به ارایه چاپ، تاریخچهٔ جستجو و تفشهها و اورکات استفاده میشود." Google's BigTable
- ↑ "راه حل جدید آنّا برای پیشنمایش کوچکشده٬استفاده از بیگ تیبل شرکت گوگل است٬که کارایی بالایی را برای تعداد زیاد، تحملِ خطا، ذخیرهسازی و سایر موارد فراهم میآورد. این سامانه فوقالعادهاست و نشانی از همکاری فراگیر است." گفتگو مقیاسپذیری در یوتوب
- ↑ "چکونه موجودیتها و ایندکسها ذخیره میشوند- موتور برنامههای گوگل -گوگل کد"
- ↑ "ما بیگ تیبل را تعریف نمودیم٬یک سامانهٔ توزیع شده برای ذخیرهٔ دادههای ساختاریافته برای شرکت گوگل... کاربران ما علاقهمند به کارایی بالا و در دسترسی بودن سایت هستند. که با پیادهسازی جدول بزرگ تامین میشود... در نهایت ما برتریهای آشکاری را در ساختن ساختارِ ذخیرهسازی مختص به خود مشاهده نمودیم. ما باطراحی بیگ تیبل، تا حد زیادی نرمش و راحتی را احساس نمودیم." از نتیجهگیریِ "بیگ تیبل: سامانهایتوزیع شده برای ذخیرهسازی برای دادههای ساختار یافته"
- ↑ [اورایلی]. «داستان جنگ بین پایگاهِ دادههای شماره هفتم: سامانهٔ فایل گوگل و جدول بزرگ» (انگلیسی) (اچتیامال). انتشارات اورایلی، ۳ می۲۰۰۶. بازبینیشده در ۱۰ مرداد ۱۳۹۰.
- ↑ [بارتون]. «گوگل، بیگ تیبل، فشردهسازی، زیپی و بیامدیآیافاف» (انگلیسی). ۱۲ اکتبر ۲۰۰۸. بازبینیشده در ۱۰ مرداد ۱۳۹۰.
- ↑ هستهٔ هادوپاچبیس - ویکیِ هادوپ
- ↑ About Hypertable
- ↑ جدوال ترکیب گوگل
- ↑ وبلاگ تحقیقاتی جدوال ترکیبی گوگل