تقسیمبندی دادهها بر اساس شناسه کاربری در مقابل تقسیمبندی دادهها بر اساس موقعیت جغرافیایی
تقسیمبندی دادهها بر اساس شناسه کاربری، رکوردها را بر اساس شناسههای منحصر به فرد کاربر برای الگوهای دسترسی قابل پیشبینی توزیع میکند، در حالی که تقسیمبندی موقعیت جغرافیایی، دادهها را بر اساس منطقه تقسیم میکند تا تأخیر را به حداقل برساند و با قوانین حاکمیت دادهها مطابقت داشته باشد. هر دو استراتژی چالشهای مقیاسپذیری را حل میکنند، اما برای اولویتهای اساساً متفاوت بهینهسازی میشوند.
برجستهها
تقسیمبندی شناسه کاربری، پرسوجوهای متقاطع را برای عملیاتهای در محدوده کاربر حذف میکند و آن را برای برنامههای اجتماعی و مصرفی ایدهآل میسازد.
تقسیمبندی جغرافیایی به طور طبیعی قوانین مربوط به محل نگهداری دادهها را بدون پیچیدگی اجرایی در لایه برنامه، برآورده میکند.
نقاط داغ به طور متفاوتی خود را نشان میدهند: کاربران مشهور برای تقسیم شناسه کاربری، کلانشهرهای متراکم برای تقسیم جغرافیایی
معماریهای ترکیبی به طور فزایندهای هر دو استراتژی را برای پلتفرمهای جهانی که با فشار نظارتی مواجه هستند، ترکیب میکنند.
تقسیمبندی دادهها بر اساس شناسه کاربری چیست؟
دادهها را با استفاده از شناسههای منحصر به فرد کاربر به عنوان کلید توزیع، بین Shardها (بخشهای مختلف) تقسیم میکند.
پارتیشنبندی مبتنی بر هش یا مبتنی بر محدوده روی user_id تضمین میکند که تمام رکوردهای یک کاربر واحد در یک بخش (shard) قرار دارند.
حذف اتصالات بین بخشهای مختلف برای کوئریهای کاربر محور، که به طور چشمگیری عملکرد خواندن را بهبود میبخشد
هنگام اضافه کردن ظرفیت با انتقال محدودههای خاص کاربر، امکان متعادلسازی مجدد شارد را به صورت مستقیم فراهم میکند.
اگر برخی از کاربران به طور نامتناسبی داده یا ترافیک بیشتری تولید کنند، نقاط حساس بالقوهای ایجاد میکند
نیاز به طراحی دقیق انتساب user_id برای جلوگیری از الگوهای متوالی که باعث توزیع ناهموار میشوند.
شاردینگ بر اساس موقعیت جغرافیایی چیست؟
دادهها را بر اساس موقعیت فیزیکی یا نزدیکی، در بین Shardهای منطقهای توزیع میکند.
درخواستهای کاربر را به نزدیکترین شارد مرکز داده هدایت میکند و تأخیر رفت و برگشت را برای برنامههای سراسری کاهش میدهد.
انطباق با GDPR، CCPA و سایر مقررات منطقهای مربوط به نگهداری دادهها را ساده میکند
برای کاربرانی که در مناطق مختلف سفر میکنند، پیچیدگی ایجاد میکند و نیاز به همگامسازی دادهها یا لایههای پروکسی دارد.
امکان مقیاسبندی مستقل مناطق پرترافیک را بدون تأثیر بر سایر بخشهای جغرافیایی فراهم میکند.
نیاز به برنامهریزی قوی برای بازیابی پس از سانحه دارد، زیرا قطعیهای منطقهای میتواند کل جمعیت کاربران را منزوی کند.
جدول مقایسه
ویژگی
تقسیمبندی دادهها بر اساس شناسه کاربری
شاردینگ بر اساس موقعیت جغرافیایی
کلید توزیع اولیه
شناسه کاربری (هش یا محدوده)
منطقه جغرافیایی یا مرکز داده
بهینهسازی تأخیر
برای همه کاربران صرف نظر از موقعیت مکانی، سازگار است
برای کاربران نزدیک به شارد اختصاص داده شده به آنها بهینه شده است
حاکمیت دادهها
برای اجرای انطباق منطقهای به منطق بیشتری نیاز است
به طور طبیعی، اقامت منطقهای دادهها را اعمال میکند
کارایی الگوی پرسوجو
عالی برای عملیات در محدوده کاربر
عالی برای تجزیه و تحلیل مبتنی بر مکان
ریسک نقاط داغ
اگر فعالیت کاربر به طور ناموزون توزیع شود، بالا است
اگر تراکم جمعیت به طور قابل توجهی تغییر کند، بالا است
پیچیدگی بین شاردی
حداقل برای پرسوجوهای کاربر؛ بالا برای تجمیعهای جهانی
حداقل برای پرسوجوهای منطقهای؛ بالا برای گزارشهای جهانی
سربار عملیاتی
پایینتر؛ مدیریت سادهتر شارد
بالاتر؛ نیازمند هماهنگی چند منطقهای است
رفتار غلبه بر خرابی
دادههای کاربر از هر کپی از shard قابل دسترسی باقی میماند.
قطع منطقهای ممکن است نیاز به تغییر مسیر بین منطقهای داشته باشد
مقایسه دقیق
ویژگیهای عملکرد
تقسیمبندی شناسه کاربری عملکرد فوقالعاده قابل پیشبینی ارائه میدهد زیرا هر پرسوجو یک شارد واحد را هدف قرار میدهد. هنگامی که سیستم یک user_id را هش میکند و درخواست را مسیریابی میکند، هیچ ابهامی در مورد محل نگهداری دادهها وجود ندارد. از سوی دیگر، تقسیمبندی جغرافیایی زمانی میدرخشد که میلیثانیهها برای تجربه کاربر مهم هستند. کاربری در توکیو که به شارد مستقر در توکیو دسترسی پیدا میکند، تأخیر بسیار کمتری نسبت به زمانی که دادههایش در یک مرکز داده ویرجینیا ذخیره شده است، مشاهده خواهد کرد. این بدهبستان زمانی آشکار میشود که شخصی سفر میکند: دادههای او در جای خود باقی میمانند، بنابراین درخواستهای دور، جریمه تأخیر را میپردازند.
الزامات انطباق و قانونی
GDPR و چارچوبهای مشابه، شاردینگ جغرافیایی را به طور فزایندهای جذاب کردهاند. وقتی دادههای کاربران فرانسوی هرگز از شارد منطقه پاریس خارج نمیشوند، تیمهای انطباق راحتتر میخوابند. شاردینگ شناسه کاربری هنوز هم میتواند مقررات را برآورده کند، اما به منطق لایه کاربردی اضافی برای برچسبگذاری، ردیابی و محدود کردن جابجایی دادهها نیاز دارد. برخی سازمانها رویکردهای ترکیبی - شاردینگ بر اساس شناسه کاربر در محدودههای جغرافیایی - را برای بهرهمندی از مزایای هر دو استراتژی اجرا میکنند.
پیچیدگی عملیاتی
اجرای یک کلاستر شارد شده با شناسه کاربری از نظر عملیاتی سادهتر است. شما شاردهایی اضافه میکنید، محدودههای هش را دوباره توزیع میکنید و عدم تعادل را رصد میکنید. شارد کردن جغرافیایی، مساحت سطح عملیاتی را چند برابر میکند: چندین منطقه ابری، شبکهسازی بین آنها، نظارت بر تأخیر تکثیر در قارهها و حالتهای خرابی واگرا. تیمها برای مدیریت مؤثر استقرارهای جغرافیایی به شیوههای مشاهدهپذیری بالغ و اغلب منابع مهندسی پلتفرم اختصاصی نیاز دارند.
مدل داده و الگوهای دسترسی
برنامههایی با مدلهای عمیقاً کاربرمحور - پروفایلهای اجتماعی، تاریخچه پیامرسانی، داشبوردهای شخصی - به طور طبیعی بر روی تقسیمبندی شناسه کاربری نگاشت میشوند. هر درخواست ویژگی با «برای این کاربر» آغاز میشود، که کلید تقسیمبندی را آشکار میکند. تقسیمبندی جغرافیایی زمانی مناسبتر است که خودِ مکان، ارزش را تعیین کند: شبکههای تحویل محتوا، بازارهای منطقهای یا پلتفرمهای اینترنت اشیا که دادههای حسگر، موقعیت مکانی قوی دارند. انتخاب اشتباه اغلب شش ماه بعد به عنوان راهحلهای دردناک ظاهر میشود.
مسیر مقیاسپذیری
شاردینگ شناسه کاربری به صورت خطی با رشد پایگاه کاربر مقیاسپذیر میشود. هر شارد جدید بخشی از کاربران را جذب میکند و سیستم به طور قابل پیشبینی رشد میکند. شاردینگ جغرافیایی با تقاضای منطقهای مقیاسپذیر میشود: افزایش ناگهانی کاربران در آسیای جنوب شرقی به معنای مقیاسپذیری آن خوشه شارد خاص است. مورد دوم میتواند منجر به ظرفیت بلااستفاده در بازارهای بالغ شود، در حالی که تلاش برای تأمین منابع در بازارهای نوظهور ادامه دارد. برنامهریزی هوشمند ظرفیت ضروری میشود.
مزایا و معایب
تقسیمبندی دادهها بر اساس شناسه کاربری
مزایا
+مسیریابی پرسوجوی قابل پیشبینی
+مدل عملیاتی سادهتر
+بدون جستجوی کاربر بین شاردهای مختلف
+متعادلسازی آسان ظرفیت
+ساختار داده یکنواخت
مصرف شده
−انطباق با قوانین به منطق بیشتری نیاز دارد
−کاربران سیار با تأخیر مواجه هستند
−فعالیت ناهموار کاربران، نقاط حساسی را ایجاد میکند
−تجزیه و تحلیل جهانی نیاز به تجمیع دارد
−خرابیهای منطقهای روی کاربران تصادفی تأثیر میگذارد
شاردینگ بر اساس موقعیت جغرافیایی
مزایا
+تأخیر کم برای کاربران محلی
+انطباق با مقررات داخلی
+مقیاسبندی منطقهای مستقل
+جداسازی در بلایای طبیعی
+سفارشی سازی منطقه ای فعال شده است
مصرف شده
−عملیات پیچیده چند منطقهای
−دادههای کاربر در حال سفر باقی میمانند
−هزینههای تکثیر بین منطقهای
−درخواستهای جهانی نیاز به فدراسیون دارند
−قطعی برق در منطقه، جمعیت را منزوی میکند
تصورات نادرست رایج
افسانه
تقسیم شناسه کاربری نمیتواند الزامات حاکمیت دادهها را برآورده کند.
واقعیت
با کنترلهای کافی در لایه کاربرد - برچسبگذاری رکوردها با الزامات اقامت و اجرای قوانین مسیریابی - سیستمهای خرد شده شناسه کاربری میتوانند با مقررات مطابقت داشته باشند. بار این امر به جای عدم امکان معماری، بر دوش نظم مهندسی است. بسیاری از شرکتها با موفقیت این کار را اجرا میکنند، اگرچه به پیچیدگی کد بیشتری نسبت به خرد کردن جغرافیایی نیاز دارد.
افسانه
تقسیمبندی جغرافیایی همیشه عملکرد بهتری ارائه میدهد.
واقعیت
افزایش عملکرد فقط برای کاربرانی که در نزدیکی شارد اختصاص داده شده به آنها هستند، محقق میشود. یک کاربر برزیلی که در سائوپائولو داده دارد، تأخیر بسیار خوبی را تجربه میکند، اما همان کاربر در توکیو از این بابت رنج میبرد. بدون مسیریابی هوشمند یا تکثیر دادهها، شاردینگ جغرافیایی میتواند عملکرد را برای جمعیتهای سیار یا در حال سفر به طور قابل توجهی کاهش دهد.
افسانه
انتخاب کلید Shard دائمی و برگشتناپذیر است.
واقعیت
اگرچه تغییر کلیدهای Shard واقعاً دردناک و پرخطر است، اما غیرممکن نیست. سازمانها از طریق دورههای دقیق نوشتن دوگانه، مهاجرت دادهها و استراتژیهای Cutover، از شناسه کاربری به Sharding جغرافیایی و برعکس مهاجرت کردهاند. هزینه این کار بالاست - اغلب ماهها تلاش مهندسی - اما معماری میتواند با نیازهای تجاری تکامل یابد.
افسانه
تقسیم شناسه کاربری به طور خودکار از بروز نقاط داغ جلوگیری میکند.
واقعیت
هش کردن شناسههای کاربری، کلیدها را تنها در صورتی به طور یکنواخت پخش میکند که توزیع زیربنایی یکنواخت باشد. تخصیص متوالی شناسه کاربری، واردات انبوه یا کاربران پرمصرف که فعالیت نامتناسبی ایجاد میکنند، همگی باعث ایجاد عدم تعادل میشوند. نظارت و متعادلسازی مجدد، صرف نظر از انتخاب کلید شارد، همچنان وظایف عملیاتی ضروری هستند.
افسانه
تقسیمبندی جغرافیایی تمام جنبههای مدیریت پایگاه داده را ساده میکند.
واقعیت
در حالی که انطباق و تأخیر محلی بهبود مییابد، شاردینگ جغرافیایی پیچیدگی قابل توجهی را در مدلهای سازگاری، حل تعارض در طول پارتیشنها و نظارت عملیاتی در مناطق مختلف ایجاد میکند. سادهسازی در یک بعد اغلب هزینههای پنهانی را در ابعاد دیگر ایجاد میکند که در طول پاسخ به حادثه ظاهر میشوند.
سوالات متداول
چه اتفاقی برای دادههای کاربر هنگام سفر بینالمللی با شاردینگ جغرافیایی میافتد؟
دادههای آنها در ناحیه اصلی باقی میماند، مگر اینکه برنامه، مهاجرت صریح یا استراتژیهای ذخیرهسازی را پیادهسازی کند. برخی از پلتفرمها از کپیهای خوانده شده در نواحی دور برای کاهش تأخیر استفاده میکنند، در حالی که کپی معتبر را در ناحیه اصلی نگه میدارند. برخی دیگر مدلهای سازگاری نهایی را با حل تعارض پیادهسازی میکنند. تجربه کاربر کاملاً به این بستگی دارد که تیم مهندسی چگونه این سناریوی رایج را پیشبینی کرده است.
چگونه میتوان با یک کاربر با حجم عظیم داده در یک سیستم تقسیمشده با شناسه کاربری، رفتار کرد؟
مهندسان معمولاً استراتژیهای چندلایه را پیادهسازی میکنند: تقسیم دادههای کاربر بین بخشهای مختلف بر اساس زیرکلید (مانند محدودههای زمانی)، استفاده از بخشهای سرریز یا بایگانی دادههای سرد. برخی از پایگاههای داده از تقسیم بخشهای مختلف پشتیبانی میکنند، که در آن یک بخش داغ به دو بخش تقسیم میشود. نکته کلیدی، تشخیص زودهنگام عدم تعادل از طریق نظارت و داشتن اتوماسیون برای پاسخگویی قبل از کاهش عملکرد است.
آیا میتوانید هر دو استراتژی شاردینگ را در یک معماری ترکیب کنید؟
کاملاً، و بسیاری از پلتفرمهای بزرگ دقیقاً همین کار را انجام میدهند. یک الگوی رایج، ابتدا دادهها را بر اساس جغرافیا تقسیمبندی میکند - تضمین محل قرارگیری دادهها - سپس تقسیمبندی شناسه کاربری را در هر منطقه اعمال میکند. این رویکرد دو لایه، مزایای انطباق و کارایی پرسوجوی کاربر محور را به همراه دارد. در عوض، پیچیدگی سیستم افزایش مییابد و نیاز به منطق مسیریابی دقیق در لایههای متعدد احساس میشود.
کدام ارائهدهندگان خدمات ابری، سرویسهای مدیریتشدهای ارائه میدهند که این استراتژیهای شاردینگ را ساده میکنند؟
AWS، DynamoDB را با جداول جهانی برای توزیع جغرافیایی و کلیدهای پارتیشن برای تقسیمبندی به سبک شناسه کاربری ارائه میدهد. Google Cloud Spanner تقسیمبندی خودکار را با دستورالعملهای قرارگیری جغرافیایی ارائه میدهد. Azure Cosmos DB کلیدهای پارتیشن را با نوشتنهای چند منطقهای فعال میکند. هر کدام از این موارد مقداری پیچیدگی را خلاصه میکنند، اما همچنان نیاز به طراحی کلید متفکرانه و نظارت بر معیارهای تقسیمبندی برای جلوگیری از کاهش سرعت دارند.
چگونه تقسیمبندی بر اساس شناسه کاربری بر پشتیبانگیری و بازیابی اطلاعات پس از سانحه تأثیر میگذارد؟
پشتیبانگیری به عملیات سادهای برای هر شارد تبدیل میشود و بازیابی دادههای یک کاربر واحد دقیق است. با این حال، سازگاری جهانی در سراسر شاردها در طول پنجرههای پشتیبانگیری نیاز به هماهنگی دارد. برنامههای بازیابی فاجعه باید خرابیهای سطح شارد را در نظر بگیرند: از دست دادن یک شارد بر محدودههای خاص کاربر تأثیر میگذارد، بنابراین انتقال به شاردهای کپی و اهداف زمان بازیابی باید برای هر گروه شارد محاسبه شود.
کدام معیارهای نظارتی برای شاردینگ جغرافیایی بیشترین اهمیت را دارند؟
تأخیر در تکرار بین منطقهای در صدر فهرست قرار دارد و پس از آن توزیع تأخیر درخواست به ازای هر منطقه، واریانس نرخ خطا بین مناطق و هزینه به ازای هر منطقه قرار دارند. تیمها همچنین حجم انتقال داده بین مناطق را ردیابی میکنند زیرا هزینههای خروجی به سرعت جمع میشوند. هشدار در مورد سلامت منطقهای به طور مستقل مانع از پنهان شدن خرابیهای آبشاری توسط میانگینهای جهانی میشود.
آیا تفاوتی در عملکرد بین تقسیمبندی شناسه کاربری مبتنی بر هش و مبتنی بر محدوده وجود دارد؟
توزیع مبتنی بر هش، کاربران را به صورت تصادفی پراکنده میکند و از نقاط حساس متوالی جلوگیری میکند، اما پرسوجوهای محدوده را پیچیده میکند. تقسیمبندی مبتنی بر محدوده، ترتیب را حفظ میکند و اسکنهای کارآمد محدودههای شناسه کاربر را امکانپذیر میسازد، اما اگر شناسهها با الگوهای فعالیت مرتبط باشند، خطر نقاط حساس را به همراه دارد. اکثر سیستمهای در مقیاس بالا، توزیع مبتنی بر هش را برای توزیع نوشتن ترجیح میدهند، سپس برای نیازهای دسترسی به محدوده، شاخصهای جداگانهای را حفظ میکنند.
چگونه میتوان شاردها را بدون از کار افتادن (downtime) دوباره متعادل کرد؟
رویکردهای مدرن از هشینگ سازگار یا مهاجرت افزایشی با دورههای نوشتن دوگانه استفاده میکنند. سیستم در هر دو مکان شارد قدیمی و جدید مینویسد و در عین حال به تدریج دادههای تاریخی را دوباره پر میکند، سپس خواندن را تغییر میدهد. برخی از پایگاههای داده مانند کاساندرا به طور خودکار متعادلسازی مجدد را انجام میدهند. عنصر حیاتی حفظ ثبات برنامه در طول انتقال است که اغلب از طریق ترافیک سایه یا اعتبارسنجی چکسام تأیید میشود.
نقش حافظه پنهان (caching) در هر استراتژی شاردینگ چیست؟
ذخیرهسازی (caching) مزایا را به طور متفاوتی تقویت میکند. در تقسیمبندی شناسه کاربری (User ID sharding)، یک لایه ذخیرهسازی (cache) با محدوده کاربر (user-scope) به طور طبیعی در کنار تقسیمبندی قرار میگیرد و بار پایگاه داده را به طور قابل پیشبینی کاهش میدهد. تقسیمبندی جغرافیایی از ذخیرهسازی لبهای (edge caching) نزدیکتر به کاربران سود میبرد، اما نامعتبرسازی ذخیرهسازی (cache) در مناطق مختلف، پیچیدگیهایی را ایجاد میکند. هر دو استراتژی نیاز به بررسی انسجام ذخیرهسازی (cache coherence) دارند، اما استقرارهای جغرافیایی با چالشهای سازگاری بیشتری در سراسر گرههای ذخیرهسازی توزیعشده مواجه هستند.
چه زمانی یک استارتاپ باید یک استراتژی را به دیگری ترجیح دهد؟
شرکتهای نوپا با جاهطلبیهای جهانی اما منابع محدود، اغلب برای سادگی، با شاردینگ شناسه کاربری شروع میکنند و سپس با ظهور نیازهای انطباق، ابعاد جغرافیایی را اضافه میکنند. اگر محصول ذاتاً محلی باشد - املاک و مستغلات، تحویل محلی، بازارهای منطقهای - شاردینگ جغرافیایی از روز اول از مهاجرت دردناک بعدی جلوگیری میکند. این تصمیم بیشتر به جدول زمانی نظارتی و الگوهای تحرک کاربر بستگی دارد تا خلوص فنی.
چگونه کوئریهای تحلیلی در پایگاههای دادهی خرد شده کار میکنند؟
آنها معمولاً به لایههای تجمیع نیاز دارند - یا موتورهای پرسوجوی فدرال که از همه شاردها پراکنده-جمعآوری میکنند یا خطوط لوله ETL که در انبارهای داده تجمیع میشوند. تقسیمبندی شناسه کاربری، تجزیه و تحلیل سطح کاربر را سریع اما تجمیعهای جهانی را کند میکند. تقسیمبندی جغرافیایی، گزارشدهی منطقهای را سرعت میبخشد اما خلاصههای جهانی را پیچیده میکند. اکثر سازمانها این بدهبستان را میپذیرند و به جای بارگذاری بیش از حد شاردهای تراکنشی، در زیرساختهای تجزیه و تحلیل جداگانه سرمایهگذاری میکنند.
بزرگترین اشتباهی که تیمها هنگام اجرای هر یک از این استراتژیها مرتکب میشوند چیست؟
دست کم گرفتن انعطاف پذیری انتخاب اولیه کلید شارد. تیمها اغلب بدون پیشبینی تکامل کسبوکار - ورود به بازارهای جدید، خرید شرکتهایی با معماریهای متفاوت یا مواجهه با تغییرات نظارتی غیرمنتظره - برای محدودیتهای شناختهشده امروزی بهینهسازی میکنند. ایجاد لایههای انتزاعی پیرامون مسیریابی شارد و حفظ دفترچههای راهنمای مهاجرت از ابتدا، از فلج شدن معماری در سالهای بعد جلوگیری میکند.
حکم
زمانی که برنامه شما اساساً کاربر محور است، تأخیر برای هر کاربر جهانی قابل قبول است و سادگی عملیاتی اهمیت دارد، تقسیمبندی شناسه کاربری را انتخاب کنید. زمانی که انطباق منطقهای غیرقابل مذاکره است، تجربه کاربری مستلزم حضور محلی است یا دادههای شما روابط مکانی ذاتی دارند، تقسیمبندی جغرافیایی را انتخاب کنید. بسیاری از پلتفرمهای بالغ در نهایت به سمت یک رویکرد دو لایه تکامل مییابند: مرزهای جغرافیایی حاوی خوشههای تقسیمبندی شده با شناسه کاربری.