بیگ تیبل

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
فارسی 中文

بیگ تیبل (به انگلیسی: 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) جداگانه برای هر گروه محلی در هر تبلت تولید می‌شود.

طراحی[ویرایش]

بیگ تیبل، سمپاد بسیار بزرگ مقیاس و سریع است. اگرچه به شکل ستون‌هایی با تعداد ثابت نیست، ولی بنا به تعریف نویسندگانش "یک نگاشت مرتب شده‌یِ چند بعدی و خلوت است". در واقع ترکیب از پایگاه‌داده‌های مبتنی به ردیفی و سمپاد مبتنی بر ستونی است. بیگ تیبل برای مقیاس‌های بزرگ در حد پتابایت در سرتاسر صدها و یا هزاران ماشین طراحی شده‌است که این ماشین‌های به راحتی قابل اضافه شده به سامانه‌هستند و به صورت خودکار از ویژگی‌های مفید سایر منابع بدون نیاز به پیکربندی مجدد استفاده می‌نمایند.[۸]

هر جدول دارای چند بعد است. جداول برای جی‌اف‌اس (سامانهٔ فایل گوگل) بهینه شده‌اند. برای اینکار هر جدول به قرص‌هایی تقسیم شده‌اند - این بخش‌های تفسیم‌بندی شده از جدوال، به صورت ردیف‌هایی از قرص‌هایی با طولی در حدود ۲۰۰ مگابایت هستند. اگر اندازهٔ این قرص‌ها بیش از اندازهٔ تعیین شده گردد، با استفاده از الگوریتم فشرده‌سازی بی‌دی‌آی‌اِف‌اِف، فشرده می‌گردند.[۹]

سایر پیاده‌سازی‌ها[ویرایش]

متن‌باز

جدوال ترکیبی گوگل

  • جدوال ترکیبی گوگل در ۹ ژوین ۲۰۰۹ منتشر شد. این جدوال به عنوان سامانه‌هایی آزمایشی برای مدیریت سامانه‌ای ابری درنظر گرفته‌شد.[۱۲][۱۳]

منابع[ویرایش]

  1. "به عنوان اولین نگاه. بیگ تیبل از اوایل سال ۲۰۰۴ (۱۳۸۳) شروع به توسعه یافت و به مدت هشت‌ماه مورد کار واقع شد(فوریه ۲۰۰۵)" Google's BigTable
  2. "بیگ تیبل قابل استفاده با مپ‌ردیوس است. مپ‌ردیوس چهارچوبی برای اجرایِ محاسبات موازی با اندازهٔ بسیار بزرگ است که توسط گوگل استفاده می‌شود. ما با مجموعه‌ای از لفافه بندها، به بیگ تیبل اجازهٔ استفاده به عنوان هدفی ورودی / خروجی برای کارهای مپ‌ردیوس دادیم" صفحهٔ ۳ از "بیگ تیبل: یک سامانهٔ توزیعی برای داده‌ّای ساختار یافته"، ۲۰۰۶
  3. از بیگ تیبل برای ایجاد مامنی برای اقلام بسیار گستردهٔ آینده خواهد بود." وبلاگ رسمی گوگل ریدر
  4. ۴٫۰ ۴٫۱ "در حال حاضر در حدود ۱۰۰ واحد برای خدمت‌رسانی به ارایه چاپ، تاریخچهٔ جستجو و تفشه‌ها و اورکات استفاده می‌شود." Google's BigTable
  5. "راه حل جدید آن‌ّا برای پیش‌نمایش کوچک‌شده٬استفاده از بیگ تیبل شرکت گوگل است٬که کارایی بالایی را برای تعداد زیاد، تحملِ خطا، ذخیره‌سازی و سایر موارد فراهم می‌آورد. این سامانه فوق‌العاده‌است و نشانی از همکاری فراگیر است." گفتگو مقیاس‌پذیری در یوتوب
  6. "چکونه موجودیت‌ها و ایندکس‌ها ذخیره می‌شوند- موتور برنامه‌های گوگل -گوگل کد"
  7. "ما بیگ تیبل را تعریف نمودیم٬یک سامانهٔ توزیع شده برای ذخیرهٔ داده‌های ساختاریافته برای شرکت گوگل... کاربران ما علاقه‌مند به کارایی بالا و در دسترسی بودن سایت هستند. که با پیاده‌سازی جدول بزرگ تامین می‌شود... در نهایت ما برتری‌های آشکاری را در ساختن ساختارِ ذخیره‌سازی مختص به خود مشاهده نمودیم. ما باطراحی بیگ تیبل، تا حد زیادی نرمش و راحتی را احساس نمودیم." از نتیجه‌گیریِ "بیگ تیبل: سامانه‌ایتوزیع شده برای ذخیره‌سازی برای داده‌های ساختار یافته"
  8. [اورایلی]. «داستان جنگ بین پایگاهِ داده‌های شماره هفتم: سامانهٔ فایل گوگل و جدول بزرگ»(انگلیسی)‎ (اچ‌تی‌ام‌ال). انتشارات اورایلی، ۳ می۲۰۰۶. بازبینی‌شده در ۱۰ مرداد ۱۳۹۰. 
  9. [بارتون]. «گوگل، بیگ تیبل، فشرده‌سازی، زیپی و بی‌ام‌دی‌آی‌اف‌اف»(انگلیسی)‎. ۱۲ اکتبر ۲۰۰۸. بازبینی‌شده در ۱۰ مرداد ۱۳۹۰. 
  10. هستهٔ هادوپاچ‌بیس - ویکیِ هادوپ
  11. About Hypertable
  12. جدوال ترکیب گوگل
  13. وبلاگ تحقیقاتی جدوال ترکیبی گوگل

BigTable是一種壓縮的、高效能的、高可擴展性的,基于Google檔案系統(Google File System,GFS)的数据存储系统,用於儲存大规模結構化数据,適用於雲端計算

BigTable發展於2004年[1],現今已成為Google的應用程式。像是MapReduce就常透過BigTable來儲存或更改資料,[2]其他還有Google Reader[3]Google Maps[4]Google Book Search、"My Search History"、Google EarthBlogger.comGoogle Code hosting、Orkut[4]YouTube[5]以及Gmail[6]等。Google自行發展出特別的巨型資料庫的原因,自然是效能的問題[7]

BigTable不是传统的关系型数据库,不支援JOIN这样的SQL語法,BigTable更像今日的NoSQL的Table-oriented,优势在于扩展性和性能。BigTable的Table資料結構包括row key、col key和timestamp,其中row key用於儲存倒轉的URL,例如www.google.com必須改成com.google.www。BigTable使用大量的Table,在Table之下還有Tablet。每一個Tablets大概有100-200MB,每台机器有100個左右的Tablets。所謂的Table是屬於immutable的SSTables,也就是存储方式不可修改。另外Table還必須進行壓縮,其壓縮又分成table的壓縮或系統的壓縮。客户端有一指向META0的Tablets的指標,METAO tablets保儲所有的META1的tablets的資料記錄。

相關條目

  • LevelDB - Google的鍵/值對(Key/Value Pair)嵌入式數據庫管理系統編程庫,BSD特許條款開源

注釋

  1. ^ "First an overview. BigTable has been in development since early 2004 and has been in active use for about eight months (about February 2005)." Google's BigTable
  2. ^ "Bigtable can be used with MapReduce, a framework for running large-scale parallel computations developed at Google. We have written a set of wrappers that allow a Bigtable to be used both as an input source and as an output target for MapReduce jobs". pg 3 of "Bigtable: A Distributed Storage System for Structured Data", 2006
  3. ^ "Reader is using Google's BigTable in order to create a haven for what is likely to be a massive trove of items." Official Google Reader blog.
  4. ^ 4.0 4.1 "There are currently around 100 cells for services such as Print, Search History, Maps, and Orkut." Google's BigTable
  5. ^ "Their new solution for thumbnails is to use Google’s BigTable, which provides high performance for a large number of rows, fault tolerance, caching, etc. This is a nice (and rare?) example of actual synergy in an acquisition." YouTube Scalability Talk
  6. ^ "How Entities and Indexes are Stored - Google App Engine - Google Code"
  7. ^ "We have described Bigtable, a distributed system for storing structured data at Google....Our users like the performance and high availability provided by the Bigtable implementation, and that they can scale the capacity of their clusters by simply adding more machines to the system as their resource demands change over time...Finally, we have found that there are significant advantages to building our own storage solution at Google. We have gotten a substantial amount of flexibility from designing our own data model for Bigtable." from the Conclusion of "Bigtable: A Distributed Storage System for Structured Data", 2006

外部連結