TiDB نمونه بارز معماری پایگاه داده SQL توزیع شده ذاتا مقیاس پذیر و قابل اعتماد است. در اینجا نحوه عملکرد آن آمده است.
در روزهای خوب قدیم، پایگاههای اطلاعاتی کار نسبتاً سادهای داشتند: کمک به صورتحساب ماهانه، ارائه برخی گزارشها، شاید پاسخ دادن به سؤالات موردی. پایگاههای داده مهم بودند، اما تقاضای ثابتی نداشتند.
امروز تصویر متفاوت است. پایگاههای داده اغلب وظیفه تقویت عملیات تجاری و خدمات آنلاین فوقالعاده را بر عهده دارند. جریان تراکنش ها بی وقفه است و زمان پاسخ باید تقریباً آنی باشد. در این پارادایم جدید، کسب و کارها فقط از پایگاه داده خود مطلع نمی شوند، بلکه اساساً بر اساس آن ساخته شده اند. تصمیمات گرفته میشوند، استراتژیها پیشنویس میشوند و خدمات در زمان واقعی بر اساس جریانهای وسیع داده شخصیسازی میشوند.
پایگاههای اطلاعاتی رابطهای در مرکز این تغییر لرزهای قرار دارند. نقش آنها فراتر از ذخیره سازی است. این به پردازش تراکنش های پیچیده، اعمال منطق تجاری و ارائه بینش های تحلیلی در زمان واقعی گسترش می یابد. ماهیت ساختاریافته پایگاههای داده رابطهای، همراه با توانایی ذاتی برای اطمینان از اتمی، سازگاری، جداسازی و دوام (ACID) تراکنشها، آنها را در دنیایی که دادهها هسته استراتژیهای تجاری را تشکیل میدهند، ضروری میسازد.
برای برآورده ساختن نیازهای برنامه های کاربردی مدرن، پایگاه های داده رابطه ای به یک معماری کاملاً جدید نیاز دارند. باید از ابتدا به گونه ای طراحی شود که داده های حجیم و بارهای تراکنش را مدیریت کند، در برابر انواع مختلف خرابی مقاومت کند و در زمان اوج تقاضا بدون دخالت دستی یا استراتژی های مقیاس بندی تکه تکه عملکرد یکپارچه داشته باشد.
این معماری باید ذاتا مقیاس پذیر و قابل اعتماد باشد. این دو ویژگی را نمی توان روی آن پیچید. آنها باید برای طراحی اساسی باشند. مقیاس پذیری به پایگاه داده اجازه می دهد تا به طور موثر بارهای کاری نوسان را در خود جای دهد. قابلیت اطمینان عملکرد ثابتی را تضمین میکند و از از دست رفتن دادهها یا خرابیها جلوگیری میکند که میتواند به شدت به عملیات تجاری یا تصمیمگیری لطمه بزند.
TiDB نمونه بارز این معماری جدید پایگاه داده است. این یک پایگاه داده SQL توزیع شده منبع باز است که برای سختترین برنامهها طراحی شده است و حجم دادهها را تا یک پتابایت مدیریت میکند. در این مقاله ویژگیهای معماری که به TiDB مقیاسپذیری و قابلیت اطمینان آن را میدهد را بررسی خواهیم کرد.
اصول طراحی TiDB
یکی از سنگ بنای معماری TiDB جداسازی فضای ذخیره سازی و محاسبات آن است. هر یک از این دو مؤلفه می توانند به طور مستقل مقیاس شوند و از تخصیص و عملکرد بهینه منابع اطمینان حاصل کنند، حتی در صورت تکامل نیازهای داده. این امر به سازمانها امکان میدهد تا بیشترین استفاده را از سختافزار خود داشته باشند و مقرون به صرفه بودن و کارایی عملیاتی را افزایش دهند.
یکی دیگر از عناصر کلیدی طراحی، پشتیبانی TiDB برای مقیاسبندی افقی بومی یا مقیاسبندی است. پایگاه های داده تراکنشی سنتی با افزایش حجم داده ها و بارهای پرس و جو مبارزه می کنند. ساده ترین راه حل افزایش مقیاس است – اساساً تغییر به سخت افزار قدرتمندتر. با این حال، محدودیت هایی در سخت افزار یک دستگاه وجود دارد. TiDB به طور خودکار برای تطبیق با رشد تراکنش ها و حجم داده ها کاهش می یابد. با افزودن گرههای جدید به سیستم، TiDB عملکرد و در دسترس بودن را ثابت نگه میدارد، حتی با افزایش دادهها و تقاضای کاربر.
یکی دیگر از مزایای مقیاسبندی افقی بومی این است که نیاز به عملیاتهای پیچیده و مختل کننده به اشتراک گذاری را از بین میبرد. ایده پشت اشتراک گذاری، سرعت بخشیدن به تراکنش ها و بهبود قابلیت اطمینان با تقسیم پایگاه داده به قطعات کوچکتر و قابل مدیریت تر است که در نمونه های پایگاه داده جداگانه در رسانه های فیزیکی جداگانه ذخیره می شوند. در عمل، حفظ یک سیستم خرد شده مستلزم ساعتهای بیشماری کار دستی برای حفظ هر یک از خردهها در شرایط بهینه است. مقیاس افقی بومی این بار را از بین می برد. پایگاه داده در صورت نیاز رشد میکند و به آن اجازه میدهد تا جهشهای غیرمنتظره تقاضا را مدیریت کند – مثلاً افزایش ترافیک تجارت الکترونیک در جمعه سیاه.
TiKV موتور ذخیره سازی توزیع شده، تراکنشی و ارزش کلیدی TiDB است. TiKV داده ها را در قالب کلید-مقدار ذخیره می کند. میتواند دادهها را بهطور خودکار به قطعات کوچک تقسیم کند و با توجه به حجم کاری، فضای موجود دیسک و سایر عوامل، تکهها را بین گرهها پخش کند. TiDB از الگوریتم اجماع Raft در مدل تکرار خود استفاده می کند تا از ثبات قوی و در دسترس بودن بالا برای تکه های داده اطمینان حاصل کند.
الگوریتم Raft و تکرار در TiDB
الگوریتم اجماع Raft یکی دیگر از اجزای سازنده مهم در معماری TiDB است. TiDB از Raft برای مدیریت تکرار و سازگاری دادهها استفاده میکند و اطمینان میدهد که دادهها طوری رفتار میکنند که گویی در یک ماشین ذخیره شدهاند، حتی اگر در چندین گره توزیع شده باشند.
در اینجا نحوه عملکرد آن آمده است. TiDB داده ها را به قطعات کوچکی به نام مناطق تقسیم می کند. هر منطقه به عنوان یک گروه Raft عمل می کند و می تواند با تغییر حجم داده ها و حجم کار به چندین منطقه تقسیم شود. هنگامی که داده در خوشه TiDB نوشته می شود، در گره رهبر منطقه نوشته می شود. پروتکل Raft تضمین میکند که دادهها از طریق تکرار گزارش به گرههای دنبالکننده تکثیر میشوند، و یکپارچگی دادهها را در بین چندین کپی حفظ میکند.
در ابتدا، هنگامی که یک خوشه TiDB کوچک است، داده ها در یک منطقه واحد قرار می گیرند. با این حال، با اضافه شدن داده های بیشتر، TiDB به طور خودکار منطقه را به چندین منطقه تقسیم می کند و به خوشه اجازه می دهد تا به صورت افقی مقیاس شود. این فرآیند بهعنوان اشتراکگذاری خودکار شناخته میشود، و برای اطمینان از اینکه TiDB میتواند حجم زیادی از دادهها را به طور موثر مدیریت کند، بسیار مهم است.
اگر رهبر شکست بخورد، Raft تضمین میکند که یکی از دنبالکنندگان به عنوان رهبر جدید انتخاب میشود و در دسترس بودن بالا را تضمین میکند. Raft همچنین یکپارچگی قوی را ارائه می دهد و تضمین می کند که هر ماکت در هر زمان داده های یکسانی را نگه می دارد. این امکان را به TiDB میدهد تا دادهها را به طور مداوم در همه گرهها تکثیر کند، و آن را در برابر خرابی گرهها و پارتیشنهای شبکه مقاوم میکند.
یکی از مزایای کلیدی مکانیزم تقسیم و ادغام خودکار TiDB این است که برای برنامههایی که از پایگاه داده استفاده میکنند کاملاً شفاف است. پایگاه داده به طور خودکار داده ها را مجدداً تغییر می دهد و آنها را در کل خوشه توزیع می کند و نیاز به طرح های اشتراک گذاری دستی را نفی می کند. این منجر به کاهش پیچیدگی و کاهش پتانسیل خطای انسانی می شود، در حالی که زمان ارزشمند توسعه دهنده را نیز آزاد می کند.
با پیادهسازی الگوریتم اجماع Raft و تقسیم خودکار قطعه داده، TiDB ثبات دادهها و در دسترس بودن بالا را تضمین میکند و در عین حال مقیاسپذیری را فراهم میکند. این ترکیب یکپارچه به کسبوکارها اجازه میدهد تا به جای نگرانی در مورد پیچیدگیهای اساسی مدیریت داده در محیطهای توزیعشده، بر استخراج بینشهای عملی از دادههای خود تمرکز کنند.
تراکنش های توزیع شده در TiDB
یکی دیگر از اجزای سازنده معماری توزیعشده TiDB، تراکنشهای توزیعشده است که ویژگیهای ضروری ACID (اتمی، سازگاری، جداسازی و دوام) را که برای پایگاههای داده رابطهای است، حفظ میکند. این قابلیت تضمین می کند که عملیات روی داده ها به طور قابل اعتمادی پردازش می شوند و یکپارچگی داده ها در چندین گره در خوشه حفظ می شود.
پشتیبانی بومی TiDB برای تراکنش های توزیع شده برای برنامه ها شفاف است. هنگامی که یک برنامه یک تراکنش را انجام می دهد، TiDB به طور خودکار از توزیع تراکنش در گره های درگیر مراقبت می کند. نیازی به توسعه دهندگان برای نوشتن منطق کنترل تراکنش پیچیده، مستعد خطا و توزیع شده در لایه برنامه نیست. علاوه بر این، TiDB از سازگاری قوی استفاده میکند، به این معنی که پایگاه داده تضمین میکند که هر خوانده شده آخرین نوشته یا خطا در مورد تراکنشهای متناقض جاری را دریافت میکند.
از آنجایی که تراکنش های توزیع شده به صورت بومی توسط موتور ذخیره سازی TiKV پشتیبانی می شوند، هر گره در لایه SQL می تواند هم به عنوان خواننده و هم به عنوان نویسنده عمل کند. این طراحی نیاز به یک گره اولیه تعیینشده برای نوشتن را حذف میکند، در نتیجه مقیاسپذیری افقی پایگاه داده را افزایش میدهد و گلوگاههای بالقوه یا نقاط شکست منفرد را حذف میکند. این یک مزیت قابل توجه در مقایسه با سیستمهایی است که با استفاده از گرههای جداگانه برای مقیاس خواندن، مقیاس را به دست میآورند، در حالی که هنوز از یک گره برای نوشتن استفاده میکنند. با حذف مشکل تکنویسنده، TiDB به ترتیب TPS بالاتری دست مییابد.
در بحث مقیاسپذیری، نگاهی فراتر از حجم دادهها و پرسوجوها در ثانیه (QPS) ضروری است. همچنین توانایی مدیریت بارهای کاری غیرقابل پیش بینی و اجرای برنامه ریزی هوشمندانه مهم است. TiDB برای پیشبینی و انطباق با انواع حجم کار و افزایش ناگهانی تقاضا طراحی شده است. الگوریتمهای زمانبندی آن بهصورت پویا منابع را تخصیص میدهند، مدیریت کار را بهینه میکنند، و از تنگناهای عملکردی جلوگیری میکنند و از عملکرد سازگار و کارآمد اطمینان میدهند.
رویکرد TiDB به مقیاسپذیری در مدیریت عملیات پایگاه داده در مقیاس بزرگ نیز مشهود است. معماری TiDB وظایف زبان تعریف پایگاه داده (DDL) را ساده می کند، که اغلب یک گلوگاه در سیستم های بزرگ و پیچیده هستند. این تضمین میکند که حتی با رشد پایگاه داده TiDB، عملیاتهایی مانند تغییرات طرحواره به طور موثر انجام میشوند.
در اینجا من به شما دو نمونه واقعی از مقیاس پذیری TiDB را اشاره می کنم. نمونه اول یک خوشه TiDB را نشان می دهد که ۵۰۰ ترابایت داده را مدیریت می کند که ۱.۳ تریلیون رکورد را در بر می گیرد. نمودار زیر تصویر صفحه نمایش داشبورد مانیتورینگ کلاستر TiDB است.
نمونه دوم، از Flipkart، بزرگترین شرکت تجارت الکترونیک در هند، یک خوشه TiDB را در مقیاس ۱ میلیون QPS نشان می دهد. در مقایسه با راه حل قبلی Flipkart، TiDB به عملکرد بهتری دست می یابد و فضای ذخیره سازی را تا ۸۲% کاهش می دهد.
قابلیت اطمینان در TiDB
برنامهها و خدمات به عملکرد بدون وقفه و حفاظت قوی از دادهها بستگی دارند. بدون آنها، کاربران به سرعت اعتماد خود را به ابزار سیستم پایگاه داده و خروجی آن از دست خواهند داد.
TiDB پشتیبانی بومی را برای در دسترس بودن بالا ارائه می دهد تا زمان خرابی برنامه ها و خدمات مهم را به حداقل برساند. همچنین ویژگیها و ابزارهایی را برای بازیابی سریع دادهها در صورت قطعی عمده فراهم میکند.
تکثیر و قرار دادن ماکت
ما در مورد نحوه استفاده TiDB از الگوریتم Raft برای دستیابی به تکرار قوی و ثابت بحث کردهایم. بسته به توپولوژی شبکه و انواع خرابیهایی که کاربران میخواهند از آنها محافظت کنند، میتوان مکان کپیها را به روشهای مختلفی تعریف کرد.
سناریوهای معمولی که توسط TiDB پشتیبانی میشوند عبارتند از:
- اجرای سرورهای مختلف در یک رک برای کاهش خرابی سرور
- اجرای سرورهای مختلف بر روی رک های مختلف در مرکز داده برای کاهش قدرت رک و خرابی شبکه
- اجرای سرورهای مختلف در مناطق مختلف در دسترس ( AZ) برای کاهش قطعی منطقه
با یک چارچوب زمانبندی مکانیابی داده، TiDB میتواند نیازهای استراتژیهای داده مختلف را پشتیبانی کند.
درمان خودکار
برای خرابیهای کوتاهمدت، مانند راهاندازی مجدد سرور، TiDB از Raft استفاده میکند تا تا زمانی که اکثر نسخهها در دسترس هستند، به طور یکپارچه ادامه دهد. Raft تضمین می کند که در صورت شکست رهبر سابق، یک “رهبر” جدید برای هر گروه از کپی ها انتخاب می شود تا تراکنش ها ادامه یابد. کپیهای تحت تأثیر پس از آنلاین شدن دوباره میتوانند به گروه خود بپیوندند.
برای خرابیهای طولانیمدت (تایم وقفه پیشفرض ۳۰ دقیقه است)، مانند قطع منطقه یا از کار افتادن سرور برای مدت طولانی، TiDB بهطور خودکار کپیها را از گرههای گمشده مجدداً متعادل میکند و از کپیهای بدون تأثیر به عنوان منبع استفاده میکند. با استفاده از اطلاعات ظرفیت از گرههای ذخیرهسازی، TiDB مکانهای جدید را در خوشه شناسایی میکند و کپیهای گمشده را به صورت توزیعشده، با استفاده از تمام گرههای موجود و دیسک مجموع و پهنای باند شبکه خوشه، دوباره تکرار میکند.
بازیابی بلایا
علاوه بر Raft، TiDB طیف گستردهای از ابزارها و ویژگیها را برای بازیابی بلایا فراهم میکند، از جمله انعکاس دادهها، تصحیح سریع خطا، پشتیبانگیری مداوم از دادهها، و بازیابی در مقیاس کامل.
- TiCDC (تغییر گرفتن داده): TiCDC تغییرات را در زمان واقعی از پایگاه داده اولیه به پایگاه داده پاییندست منعکس میکند و تنظیم تکرار اولیه و ثانویه را تسهیل میکند. در صورت خرابی سرور اولیه، TiCDC حداقل از دست دادن داده را تضمین می کند، زیرا تراکنش ها به طور مداوم تکرار می شوند. این سیستم نه تنها به بازیابی بلایا کمک می کند، بلکه به متعادل کردن بارها و تخلیه عملیات خواندن کمک می کند. انعکاس زنده تغییرات دادهها بهویژه برای برنامههایی که به در دسترس بودن بالا نیاز دارند بسیار مهم است، زیرا تضمین میکند که راهاندازی ثانویه میتواند بهسرعت و با زمان کم یا بدون توقف انجام شود.
- Flashback: ویژگی Flashback TiDB از یکی از غیرقابل پیش بینی ترین علل فاجعه محافظت می کند: خطای انسانی. فلاش بک به پایگاه داده اجازه می دهد تا در یک نقطه زمانی خاص در طول عمر جمع آوری زباله (GC) بازیابی شود، بنابراین اشتباهاتی مانند حذف تصادفی داده ها یا به روز رسانی های اشتباه را می توان به سرعت و بدون توقف گسترده اصلاح کرد، تداوم عملیاتی و اعتماد کاربر حفظ می شود.
- PiTR (بازیابی نقطه در زمان): PiTR به طور مداوم از تغییرات داده ها نسخه پشتیبان تهیه می کند و امکان بازیابی خوشه را در یک نقطه زمانی خاص فراهم می کند. این نه تنها برای بازیابی فاجعه، بلکه برای ممیزی های تجاری نیز بسیار مهم است و توانایی بررسی وضعیت داده های تاریخی را ارائه می دهد. PiTR یک لایه اضافی از امنیت داده را فراهم می کند، تداوم کسب و کار را حفظ می کند و به انطباق با مقررات کمک می کند.
- پشتیبانگیری و بازیابی کامل: علاوه بر ابزارهای ذکر شده برای موارد استفاده خاص، TiDB به یک ویژگی جامع پشتیبانگیری و بازیابی کامل مجهز است که ابزاری برای بازسازی کل خوشه در صورت لزوم فراهم میکند. در سناریوهای شکست فاجعه بار، که در آن ساختار داده به خطر می افتد یا بخش قابل توجهی از داده ها خراب شده است، یک نسخه پشتیبان کامل ضروری است. این تضمین میکند که خدمات میتوانند در کوتاهترین زمان ممکن به حالت عادی بازگردند، و شبکه ایمنی قوی برای بدترین سناریوها فراهم میکند.
پایگاه داده ای طراحی شده برای تغییر
دنیای کسب و کار حول محور داده ها می چرخد. افزایش جهانی تراکنشهای مالی آنلاین، که توسط مدلهای کسبوکار مانند پرداخت بهحساب انجام میشود، تقاضای بیسابقهای برای عملکرد ایجاد کرده است، همراه با این اطمینان که این عملکرد در صورت نیاز وجود خواهد داشت.
پایگاه داده SQL توزیع شده همان چیزی است که هنگام طراحی مجدد پایگاه داده های رابطه ای حول ایده تغییر به دست می آورید. بهعنوان پایه و اساس برنامههای تجاری، پایگاههای اطلاعاتی باید بتوانند خود را با موارد غیرمنتظره تطبیق دهند، خواه رشد غیرمنتظره، ترافیک غیرمنتظره، یا فجایع غیرمنتظره باشد.
همه اینها به مقیاس و قابلیت اطمینان، ظرفیت اجرا و اعتماد به عملکرد برمی گردد. مقیاس به کاربران این توانایی را می دهد که چیزهایی را بسازند که جهان قبلاً ندیده است. قابلیت اطمینان به آنها این ایمان را می دهد که آنچه می سازند به کار خود ادامه خواهد داد. این چیزی است که یک نمونه اولیه را به یک تجارت سودآور تبدیل می کند. و در قلب کسب و کار، پشت رابط آشنای SQL، یک معماری جدید برای دنیایی وجود دارد که داده ها در آن اولویت دارند.
لی شن معاون ارشد در PingCAP، شرکت پشت TiDB.
—
انجمن فناوری جدید مکانی را برای رهبران فناوری – از جمله فروشندگان و سایر مشارکتکنندگان خارجی – فراهم میکند تا فناوری سازمانی نوظهور را در عمق و وسعت بیسابقه بررسی و بحث کنند. انتخاب ذهنی است، بر اساس انتخاب ما از فناوری هایی که معتقدیم مهم هستند و برای خوانندگان InfoWorld بیشترین علاقه را دارند. InfoWorld وثیقه بازاریابی را برای انتشار نمی پذیرد و حق ویرایش تمام محتوای ارائه شده را برای خود محفوظ می دارد. همه پرس و جوها را به doug_dineley@foundryco.com.
پست های مرتبط
چگونه یک معماری پایگاه داده جدید از مقیاس و قابلیت اطمینان در TiDB پشتیبانی می کند
چگونه یک معماری پایگاه داده جدید از مقیاس و قابلیت اطمینان در TiDB پشتیبانی می کند
چگونه یک معماری پایگاه داده جدید از مقیاس و قابلیت اطمینان در TiDB پشتیبانی می کند