التجزئة المتسقة

في علم الحاسوب ، التجزئة المتسقة [ 1 ] [ 2 ] هي نوع خاص من تقنيات التجزئة بحيث عند تغيير حجم جدول التجزئة ، فقطن/م{\displaystyle n/m}يجب إعادة تعيين المفاتيح في المتوسط ​​حيثن{\displaystyle n}هو عدد المفاتيح وم{\displaystyle m}يمثل عدد الخانات. يوزع التجزئة المتسقة مفاتيح التخزين المؤقت بالتساوي عبر الأجزاء ، حتى في حالة تعطل بعض الأجزاء أو عدم توفرها. [ 3 ] في المقابل، في معظم جداول التجزئة التقليدية، يؤدي تغيير عدد خانات المصفوفة إلى إعادة تعيين جميع المفاتيح تقريبًا لأن التعيين بين المفاتيح والخانات يتم تحديده بواسطة عملية نمطية .

تستخدم شبكات توصيل المحتوى التجزئة المتسقة لأنها مفيدة في توزيع طلبات المحتوى من مجموعة متغيرة من خوادم الويب. يُنسب الفضل إلى تيم بيرنرز لي، ومخترع خوارزميات التجزئة المتسقة، إلى دانيال ليوين ، في حل مشكلة النقاط المائلة التي عانت منها شبكة الويب العالمية في التسعينيات. [ 4 ]

تاريخ

صاغ ديفيد كارغر وزملاؤه في معهد ماساتشوستس للتكنولوجيا مصطلح "التجزئة المتسقة" لاستخدامه في التخزين المؤقت الموزع ، وخاصةً للويب . [ 5 ] وقدّمت هذه الورقة البحثية، المنشورة عام 1997 في ندوة نظرية الحوسبة، مصطلح "التجزئة المتسقة" كوسيلة لتوزيع الطلبات بين مجموعة متغيرة من خوادم الويب. [ 6 ] ويمثل كل خانة خادمًا في نظام أو مجموعة خوادم موزعة. ولا تتطلب إضافة خادم أو إزالته (أثناء قابلية التوسع أو انقطاع الخدمة) سوىنuم_كهـys/نuم_sلoتs{\displaystyle num\_keys/num\_slots}يُعاد ترتيب العناصر عند تغيير عدد الخانات (أي الخوادم). يشير المؤلفون إلى التجزئة الخطية وقدرتها على التعامل مع إضافة الخوادم وإزالتها بشكل متسلسل، بينما تسمح التجزئة المتسقة بإضافة الخوادم وإزالتها بترتيب عشوائي. [ 1 ] أُعيد استخدام الورقة لاحقًا لمعالجة التحدي التقني المتمثل في تتبع ملف في شبكات الند للند، مثل جدول التجزئة الموزع . [ 7 ] [ 8 ]

استخدمت شركة Teradata هذه التقنية في قاعدة بياناتها الموزعة ، التي أُصدرت عام ١٩٨٦، على الرغم من أنها لم تستخدم هذا المصطلح. ولا تزال Teradata تستخدم مفهوم جدول التجزئة لتحقيق هذا الغرض تحديدًا. تأسست شركة Akamai Technologies عام ١٩٩٨ على يد العالِمين دانيال ليوين وإف . طومسون لايتون (المؤلفين المشاركين للمقال الذي صاغ مصطلح "التجزئة المتسقة"). في شبكة توصيل المحتوى الخاصة بشركة Akamai، [ ٩ ] تُستخدم التجزئة المتسقة لموازنة الحمل داخل مجموعة من الخوادم، بينما تُستخدم خوارزمية دمج مستقرة لموازنة الحمل عبر المجموعات. [ ٢ ]

استُخدمت التجزئة المتسقة أيضًا للحد من تأثير الأعطال الجزئية في تطبيقات الويب الكبيرة، وذلك لتوفير تخزين مؤقت قوي دون التسبب في تداعيات عطل على مستوى النظام بأكمله. [ 10 ] كما تُعد التجزئة المتسقة حجر الزاوية في جداول التجزئة الموزعة (DHTs)، التي تستخدم قيم التجزئة لتقسيم مساحة المفاتيح عبر مجموعة موزعة من العقد، ثم تُنشئ شبكة تراكبية من العقد المتصلة التي توفر استرجاعًا فعالًا للعقد باستخدام المفتاح.

تُعدّ تقنية التجزئة Rendezvous ، التي صُممت عام 1996، تقنيةً أبسط وأكثر عمومية . وهي تحقق أهداف التجزئة المتسقة باستخدام خوارزمية الوزن العشوائي الأعلى (HRW) المختلفة تمامًا.

التقنية الأساسية

في هذه الحالة، سيؤدي استخدام التجزئة المتسقة إلى تخزين "BLOB" على الخادم 139. يتم ربط BLOB بالخادم التالي الذي يظهر على الدائرة بترتيب عقارب الساعة حتى يصل إلى خادم هوζمعرف الخادم{\displaystyle \zeta \leq {\text{server ID}}}

في مشكلة موازنة الأحمال ، على سبيل المثال، عندما يتعين تعيين كائن BLOB إلى أحدن{\displaystyle n}في حالة الخوادم الموجودة على مجموعة ، يمكن استخدام دالة تجزئة قياسية لحساب قيمة التجزئة لهذا الكائن الثنائي الكبير (BLOB)، بافتراض أن القيمة الناتجة للتجزئة هيβ{\displaystyle \beta }نقوم بتنفيذ عمليات معيارية باستخدام عدد من الخوادم (ن{\displaystyle n}(في هذه الحالة) لتحديد الخادم الذي يمكننا وضع الكائن الثنائي الكبير (BLOB) فيه:ζ=β % ن{\displaystyle \zeta =\beta \ \%\ n}وبالتالي، سيتم وضع الكائن الثنائي الكبير (BLOB) في الخادم الذيمعرف الخادم{\displaystyle {\text{server ID}}}هو خليفة لـζ{\displaystyle \zeta }في هذه الحالة. ومع ذلك، عند إضافة خادم أو إزالته أثناء انقطاع الخدمة أو توسيع نطاقها (عندمان{\displaystyle n}التغييرات)، يجب إعادة تعيين ونقل جميع الكائنات الثنائية الكبيرة (BLOBs) في كل خادم بسبب إعادة التجزئة ، ولكن هذه العملية مكلفة.

صُممت تقنية التجزئة المتسقة لتجنب مشكلة إعادة تعيين كل كائن ثنائي كبير (BLOB) عند إضافة خادم أو إزالته من المجموعة. وتتمثل الفكرة الأساسية في استخدام دالة تجزئة تربط كلاً من الكائن الثنائي الكبير والخوادم بدائرة الوحدة، عادةً2π{\displaystyle 2\pi }الراديان. على سبيل المثال،ζ=Φ % 360{\displaystyle \zeta =\Phi \ \%\ 360}(أينΦ{\displaystyle \Phi }هي دالة تجزئة لمعرف كائن ثنائي كبير (BLOB) أو خادم (مثل عنوان IP أو UUID ). يُخصص كل كائن ثنائي كبير (BLOB) للخادم التالي الذي يظهر على الدائرة بترتيب عقارب الساعة. عادةً ما تُستخدم خوارزمية البحث الثنائي أو البحث الخطي للعثور على "موقع" أو خادم لوضع هذا الكائن الثنائي الكبير (BLOB) فيه.يا(سجلشمال){\displaystyle O(\log N)}أويا(شمال){\displaystyle O(N)}التعقيدات على التوالي؛ وفي كل تكرار، والذي يحدث بطريقة في اتجاه عقارب الساعة، عمليةζ  Ψ{\displaystyle \zeta \ \leq \ \Psi }(أينΨ{\displaystyle \Psi }تُجرى هذه العملية (قيمة الخادم داخل المجموعة) لتحديد الخادم المناسب لوضع كائن البيانات الثنائية الكبيرة (BLOB). يضمن هذا توزيعًا متساويًا لكائنات البيانات الثنائية الكبيرة على الخوادم. والأهم من ذلك، في حال تعطل خادم وإزالته من دائرة التوزيع، لا يلزم إعادة تعيين سوى كائنات البيانات الثنائية الكبيرة التي كانت مرتبطة بالخادم المتعطل إلى الخادم التالي في اتجاه عقارب الساعة. وبالمثل، عند إضافة خادم جديد، يُضاف إلى دائرة التوزيع، ولا يلزم إعادة تعيين سوى كائنات البيانات الثنائية الكبيرة المرتبطة بهذا الخادم.

الأهم من ذلك، عند إضافة خادم أو إزالته، فإن الغالبية العظمى من كائنات BLOB تحتفظ بتعيينات الخادم السابقة، وإضافةنتح{\displaystyle n^{th}}الخادم يسبب فقط1/ن{\displaystyle 1/n}جزء من كائنات BLOB المراد نقلها. على الرغم من أن عملية نقل كائنات BLOB بين خوادم التخزين المؤقت في المجموعة تعتمد على السياق، إلا أنه عادةً ما يُحدد خادم التخزين المؤقت المُضاف حديثًا "خادمه السابق" وينقل منه جميع كائنات BLOB التي تنتمي إلى هذا الخادم (أي التي تكون قيمة تجزئتها أقل من قيمة تجزئته). مع ذلك، في حالة ذاكرة التخزين المؤقت لصفحات الويب ، لا تتضمن معظم التطبيقات نقلًا أو نسخًا، بافتراض أن حجم كائن BLOB المُخزن مؤقتًا صغير بما يكفي. عندما يصل طلب إلى خادم تخزين مؤقت مُضاف حديثًا، يحدث خطأ في ذاكرة التخزين المؤقت ، ويتم إرسال طلب إلى خادم الويب الفعلي ، ويتم تخزين كائن BLOB مؤقتًا محليًا للطلبات المستقبلية. تُزال كائنات BLOB الزائدة على خوادم التخزين المؤقت المستخدمة سابقًا وفقًا لسياسات إخلاء ذاكرة التخزين المؤقت . [ 11 ]

تطبيق

يتركحب(x){\displaystyle h_{b}(x)}وحs(x){\displaystyle h_{s}(x)}تُستخدم دوال التجزئة لحساب مُعرّف BLOB الفريد ومعرّف الخادم الفريد على التوالي. عمليًا، تُستخدم شجرة بحث ثنائية (BST) للحفاظ على هذا المُعرّف بشكل ديناميكي.معرف الخادم{\displaystyle {\text{server ID}}}يتم استخدام اجتياز الشجرة داخل مجموعة أو تجزئة، ولإيجاد الخلف أو الحد الأدنى داخل BST .

إدخالx{\displaystyle x}داخل المجموعة
يتركβ{\displaystyle \beta }ليكن قيمة التجزئة لـ BLOB بحيث،حب(x)=β % 360{\displaystyle h_{b}(x)=\beta \ \%\ 360}أينxبلياب{\displaystyle x\in \mathrm {BLOB} }وحب(x)=ζ{\displaystyle h_{b}(x)=\zeta }لإدخالx{\displaystyle x}ابحث عن خليفةζ{\displaystyle \zeta }في التوقيت الصيفي البريطاني لـمعرف الخادم{\displaystyle {\text{server ID}}}إذاζ{\displaystyle \zeta }أكبر من جميعمعرف الخادم{\displaystyle {\text{server ID}}}s، يتم وضع BLOB في الخادم ذي أصغر حجممعرف الخادم{\displaystyle {\text{server ID}}}قيمة.
حذفx{\displaystyle x}من المجموعة
ابحث عن خليفة لـζ{\displaystyle \zeta }في شجرة البحث الثنائية، قم بإزالة الكائن الثنائي الكبير من البيانات المُعادةمعرف الخادم{\displaystyle {\text{server ID}}}. لوζ{\displaystyle \zeta }ليس له خليفة، قم بإزالة الكائن الثنائي الكبير من أصغرهامعرف الخادم{\displaystyle {\text{server ID}}}[ 12 ]
أدخل خادمًا في المجموعة
يتركΦ{\displaystyle \Phi }ليكن قيمة التجزئة لمعرف الخادم بحيث،حs(x)=Φ % 360{\displaystyle h_{s}(x)=\Phi \ \%\ 360}أينx{عنوان IP، UUID}{\displaystyle x\in \{{\text{عنوان IP، UUID}}\}}وحs(x)=θ{\displaystyle h_{s}(x)=\theta }انقل جميع الكائنات الثنائية الكبيرة (BLOBs) التي تكون قيمة التجزئة الخاصة بها أصغر منθ{\displaystyle \theta }، من الخادم الذيمعرف الخادم{\displaystyle {\text{server ID}}}هو خليفة لـθ{\displaystyle \theta }. لوθ{\displaystyle \theta }وهو الأكبر بين جميعمعرف الخادم{\displaystyle {\text{server ID}}}s، انقل الكائنات الثنائية الكبيرة ذات الصلة من أصغرهامعرف الخادم{\displaystyle {\text{server ID}}}s intoθ{\displaystyle \theta }[ 13 ]
حذف خادم من المجموعة
ابحث عن خليفة لـθ{\displaystyle \theta }في شجرة البحث الثنائية، انقل الكائنات الثنائية الكبيرة منθ{\displaystyle \theta }إلى الخادم الذي سيخلفه. إذاθ{\displaystyle \theta }إذا لم يكن لديه خليفة، انقل الكائنات الثنائية الكبيرة (BLOBs) إلى أصغرها.معرف الخادم{\displaystyle {\text{server ID}}}[ 14 ]

تقليل التباين

لتجنب انحراف توزيع العقد المتعددة ضمن النطاق الزاوي، والذي يحدث نتيجة عدم التوزيع المنتظم للخوادم داخل المجموعة، تُستخدم عدة تصنيفات. تُسمى هذه التصنيفات المكررة "العقد الافتراضية"، أي تصنيفات متعددة تشير إلى تصنيف "حقيقي" واحد أو خادم واحد داخل المجموعة. يُطلق على عدد العقد الافتراضية أو التصنيفات المكررة المستخدمة لخادم معين داخل المجموعة اسم "وزن" ذلك الخادم. [ 15 ]

امتدادات عملية

يتطلب استخدام التجزئة المتسقة بفعالية لتحقيق توازن الأحمال في التطبيق العملي عددًا من التحسينات على التقنية الأساسية. في المخطط الأساسي المذكور أعلاه، إذا تعطل خادم، تُعاد جميع كائنات BLOB الخاصة به إلى الخادم التالي بترتيب عقارب الساعة، مما قد يُضاعف حمل ذلك الخادم. قد لا يكون هذا مرغوبًا فيه. لضمان إعادة توزيع أكثر توازنًا لكائنات BLOB عند تعطل الخادم، يمكن تجزئة كل خادم إلى مواقع متعددة على دائرة الوحدة. عند تعطل خادم، تُعاد كائنات BLOB المخصصة لكل نسخة من نسخه على دائرة الوحدة إلى خادم مختلف بترتيب عقارب الساعة، وبالتالي إعادة توزيع كائنات BLOB بشكل أكثر توازنًا. يتعلق تحسين آخر بحالة يصبح فيها كائن BLOB واحد "مُستَخدَمًا بكثرة" ويتم الوصول إليه عددًا كبيرًا من المرات، مما يستدعي استضافته على خوادم متعددة. في هذه الحالة، يمكن تخصيص كائن BLOB لخوادم متجاورة متعددة من خلال اجتياز دائرة الوحدة بترتيب عقارب الساعة. تنشأ اعتبارات عملية أكثر تعقيدًا عندما يتم تجزئة كائنين من نوع BLOB بالقرب من بعضهما البعض في دائرة الوحدة، ويصبح كلاهما "ساخنًا" في الوقت نفسه. في هذه الحالة، سيستخدم كلا الكائنين نفس مجموعة الخوادم المتجاورة في دائرة الوحدة. يمكن تحسين هذا الوضع باختيار كل كائن دالة تجزئة مختلفة لربط الخوادم بدائرة الوحدة. [ 2 ]

مقارنة مع التجزئة عند نقطة الالتقاء والبدائل الأخرى

تُعدّ تقنية التجزئة Rendezvous ، التي صُممت عام 1996، تقنيةً أبسط وأكثر عمومية، وتسمح بالاتفاق الموزع بالكامل على مجموعة منك{\displaystyle k}خيارات من بين مجموعة محتملة منن{\displaystyle n}خيارات. في الواقع، يمكن إثبات أن التجزئة المتسقة هي حالة خاصة من التجزئة التلاقية. وبسبب بساطتها وعموميتها، تُستخدم التجزئة التلاقية الآن بدلاً من التجزئة المتسقة في العديد من التطبيقات.

إذا كانت قيم المفاتيح ستزداد دائمًا بشكل رتيب ، فقد يكون النهج البديل باستخدام جدول تجزئة بمفاتيح رتيبة أكثر ملاءمة من التجزئة المتسقة.

تعقيد

التعقيدات الزمنية التقاربية لـشمال{\displaystyle N}العقد (أو الفتحات) وك{\displaystyle K}مفاتيح
طاولة الهاش الكلاسيكيةالتجزئة المتسقة
أضف عقدةيا(ك){\displaystyle O(K)}يا(ك/شمال+سجلشمال){\displaystyle O(K/N+\log N)}
إزالة عقدةيا(ك){\displaystyle O(K)}يا(ك/شمال+سجلشمال){\displaystyle O(K/N+\log N)}
ابحث عن مفتاحيا(1){\displaystyle O(1)}يا(سجلشمال){\displaystyle O(\log N)}
أضف مفتاحًايا(1){\displaystyle O(1)}يا(سجلشمال){\displaystyle O(\log N)}
إزالة مفتاحيا(1){\displaystyle O(1)}يا(سجلشمال){\displaystyle O(\log N)}

اليا(ك/شمال){\displaystyle O(K/N)}يمثل متوسط ​​تكلفة إعادة توزيع المفاتيح ويا(سجلشمال){\displaystyle O(\log N)}تكمن صعوبة التجزئة المتسقة في حقيقة أن البحث الثنائي بين زوايا العقد مطلوب للعثور على العقدة التالية على الحلقة.

أمثلة

تشمل الأمثلة المعروفة للاستخدام المتسق للتجزئة ما يلي:

مراجع

  1. 1 2 كارغر، د.؛ ليمان، إ.؛ لايتون، ت .؛ بانيغراهي، ر.؛ ليفين، م.؛ ليوين، د. (1997). التجزئة المتسقة والأشجار العشوائية: بروتوكولات التخزين المؤقت الموزعة لتخفيف الازدحام على شبكة الويب العالمية . وقائع الندوة السنوية التاسعة والعشرين لجمعية آلات الحوسبة حول نظرية الحوسبة . مطبعة جمعية آلات الحوسبة، نيويورك، نيويورك، الولايات المتحدة الأمريكية. الصفحات 654-663 . doi : 10.1145/258533.258660 . 
  2. 1 2 3 بروس ماغز وراميش سيتارامان (2015). "التقنيات الخوارزمية في توصيل المحتوى" (ملف PDF) . مجلة ACM SIGCOMM لمراجعة اتصالات الحاسوب . 45 (3).
  3. تصميم أنماط ونماذج الأنظمة الموزعة لخدمات قابلة للتوسع وموثوقة . دار نشر أورايلي ميديا. 2018. رقم ISBN 9781491983607.
  4. بيرنرز-لي، تيم (2025). هذا للجميع: القصة غير المكتملة للشبكة العنكبوتية العالمية . فارار، ستراوس وجيرو. ص 156. ISBN  978-0-374-61246-7.
  5. Roughgarden & Valiant 2021 ، ص. 2.
  6. Roughgarden & Valiant 2021 ، ص 7.
  7. Roughgarden & Valiant 2021 ، ص 8.
  8. I. Stoica et al., “Chord: a scalable peer-to-peer lookup protocol for Internet applications,” in IEEE/ACM Transactions on Networking, vol. 11, no. 1, pp. 17–32, Feb. 2003, doi: 10.1109/TNET.2002.808407.
  9. نيغرين، إي.؛ سيتارامان، آر. كيه.؛ صن، جيه. (2010). "شبكة أكاماي: منصة لتطبيقات الإنترنت عالية الأداء" ( ملف PDF) . مجلة ACM SIGOPS لأنظمة التشغيل . 44 (3): 2-19 . doi : 10.1145/1842733.1842736 . S2CID 207181702. مؤرشف (ملف PDF) من الأصل في 30 نوفمبر 2022. تم الاطلاع عليه في 29 أغسطس 2023 . 
  10. كارغر، د.؛ شيرمان، أ.؛ بيركهايمر، أ.؛ بوغستاد، ب.؛ دانيدينا، ر.؛ إيواموتو، ك.؛ كيم، ب.؛ ماتكينز، ل.؛ يروشالمي، ي. (1999). "التخزين المؤقت للويب باستخدام التجزئة المتسقة" . شبكات الحاسوب . 31 (11): 1203-1213 . doi : 10.1016/S1389-1286(99)00055-9 . مؤرشف من الأصل في 21 يوليو 2008. تم الاسترجاع في 5 فبراير 2008 .
  11. Roughgarden & Valiant 2021 ، ص. 6.
  12. مويترا 2016 ، ص. 2.
  13. مويترا 2016 ، ص 2-3.
  14. مويترا 2016 ، ص 3.
  15. Roughgarden & Valiant 2021 ، ص. 6–7.
  16. "ما هو Membase بالضبط؟" . 16 ديسمبر 2014. تم الاطلاع عليه بتاريخ 29 أكتوبر 2020 .
  17. هولت، جريج (فبراير 2011). "بناء حلقة تجزئة متسقة" . openstack.org . تم الاسترجاع في 17 نوفمبر 2019 .
  18. ^ ديكانديا، ج. هستورون، د.؛ جامباني، م. كاكولاباتي، ج.؛ لاكشمان، أ. بيلشين، أ.؛ سيفاسوبرامانيان، S .؛ فوسشال، ب. فوجلز، فيرنر (2007). "دينامو" (PDF) . مراجعة أنظمة التشغيل ACM SIGOPS . 41 (6): 205-220 . دوى : 10.1145 / 1323293.1294281 . تم الاسترجاع 2018-06-07 .
  19. لاكشمان، أفيناش؛ مالك، براشانت (2010). "كاساندرا: نظام تخزين هيكلي لامركزي". مجلة ACM SIGOPS لأنظمة التشغيل . 44 (2): 35-40 . doi : 10.1145/1773912.1773922 . S2CID 916681 . 
  20. "مقارنة قواعد بيانات NoSQL: MongoDB مقابل ScyllaDB" . benchant.com . تم الاطلاع عليه بتاريخ 21 مارس 2024 .
  21. "التصميم - فولدمورت" . www.project-voldemort.com/ . مؤرشف من الأصل في 9 فبراير 2015. تم الاسترجاع في 9 فبراير 2015. التجزئة المتسقة هي تقنية تتجنب هذه المشاكل، ونستخدمها لحساب موقع كل مفتاح على المجموعة.
  22. "توجيه أكا" . akka.io. تم ​​الاطلاع عليه بتاريخ 16-11-2019 .
  23. "مفاهيم رياك" . مؤرشف من الأصل بتاريخ 19-09-2015 . تم الاطلاع عليه بتاريخ 06-12-2016 .
  24. "خوارزميات GlusterFS: التوزيع" . gluster.org . 2012-03-01 . تم الاطلاع عليه بتاريخ 2019-11-16 .
  25. رافغاردن، تيم؛ فاليانت، غريغوري (28 مارس 2016). "مجموعة أدوات الخوارزميات الحديثة" (ملف PDF) . stanford.edu . تاريخ الاسترجاع: 17 نوفمبر 2019 .
  26. فيشنفسكي، ستانيسلاف (2017-07-06). "كيف وسّعت ديسكورد نطاق استخدام إليكسير إلى 5,000,000 مستخدم متزامن" . تم الاطلاع عليه بتاريخ 2022-08-16 .
  27. "موازنة تحميل التجزئة المتسقة لـ gRPC" . 24 نوفمبر 2021. تم الاسترجاع في 4 سبتمبر 2023 .
  28. ستويكا، آي .؛ موريس، آر.؛ ليبن-نويل، دي.؛ كارغر، دي.؛ كاشوك، إم إف؛ دابيك، إف.؛ بالاكريشنان، إتش. (25 فبراير 2003). "Chord: بروتوكول بحث قابل للتوسع من نظير إلى نظير لتطبيقات الإنترنت". معاملات IEEE/ACM في الشبكات . 11 (1): 17-32 . doi : 10.1109/TNET.2002.808407 . S2CID 221276912 . 
  29. "نظرة معمقة على إصدارات MinIO والبيانات الوصفية والتخزين" . 3 يناير 2022. تم الاطلاع عليه بتاريخ 24 أكتوبر 2023 .

المراجع