🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
  • Home
  • Blog
  • إدراج البيانات وثبات البيانات في قاعدة بيانات المتجهات

إدراج البيانات وثبات البيانات في قاعدة بيانات المتجهات

  • Engineering
April 06, 2022
Bingyi Sun

Cover image صورة الغلاف

هذا المقال بقلم بينغيي سون وأعدته أنجيلا ني.

في المنشور السابق في سلسلة الغوص العميق، قدمنا في المقالة السابقة كيفية معالجة البيانات في ميلفوس، قاعدة البيانات المتجهة الأكثر تقدمًا في العالم. في هذه المقالة، سنستمر في هذه المقالة في فحص المكونات المتضمنة في إدراج البيانات، وتوضيح نموذج البيانات بالتفصيل، وشرح كيفية تحقيق ثبات البيانات في ميلفوس.

الانتقال إلى:

ملخص بنية ميلفوس

Milvus architecture. بنية ميلفوس.

ترسل SDK طلبات البيانات إلى الوكيل، البوابة، عبر موازن التحميل. ثم يتفاعل الوكيل مع خدمة المنسق لكتابة طلبات DDL (لغة تعريف البيانات) و DML (لغة معالجة البيانات) في مخزن الرسائل.

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

الطبقة السفلية هي تخزين الكائن، والتي تستفيد بشكل أساسي من MinIO و S3 و AzureBlob لتخزين السجلات ومدونات دلتا الثنائية وملفات الفهرس.

بوابة طلبات إدراج البيانات

Proxy in Milvus. الوكيل في ميلفوس.

يعمل الوكيل كبوابة لطلبات إدراج البيانات.

  1. في البداية، يقبل الوكيل طلبات إدراج البيانات من حزم SDKs، ويخصص تلك الطلبات في عدة دلاء باستخدام خوارزمية التجزئة.
  2. ثم يطلب الوكيل تنسيق البيانات لتعيين المقاطع، وهي أصغر وحدة في Milvus لتخزين البيانات.
  3. بعد ذلك، يقوم الوكيل بإدراج معلومات المقاطع المطلوبة في مخزن الرسائل حتى لا تضيع هذه المعلومات.

تنسيق البيانات وعقدة البيانات

تتمثل الوظيفة الرئيسية لتنسيق البيانات في إدارة تخصيص القنوات والمقاطع بينما تتمثل الوظيفة الرئيسية لعقدة البيانات في استهلاك البيانات المدرجة واستمرارها.

Data coord and data node in Milvus. تنسيق البيانات وعقدة البيانات في ميلفوس.

الوظيفة

يعمل منسق البيانات في الجوانب التالية:

  • تخصيص مساحة المقطعيقوم منسق البيانات بتخصيص مساحة في المقاطع المتزايدة للوكيل بحيث يمكن للوكيل استخدام المساحة الخالية في المقاطع لإدراج البيانات.

  • تسجيل تخصيص المقطع ووقت انتهاء صلاحية المساحة المخصصة في المقطعالمساحة داخل كل مقطع مخصص من قبل منسق البيانات ليست دائمة، وبالتالي، يحتاج منسق البيانات أيضًا إلى الاحتفاظ بسجل لوقت انتهاء صلاحية كل تخصيص مقطع.

  • مسح بيانات المقطع تلقائيًاإذا كان المقطع ممتلئًا، يقوم منسق البيانات تلقائيًا بتشغيل مسح البيانات.

  • تخصيص قنوات لعُقد البياناتيمكن أن تحتوي المجموعة على عدة قنوات v. يحدد تنسيق البيانات القنوات الافتراضية التي تستهلكها عقد البيانات.

تعمل عقدة البيانات في الجوانب التالية:

  • استهلاك البياناتتستهلك عقدة البيانات البيانات تستهلك البيانات من القنوات التي خصصها منسق البيانات وتنشئ تسلسلاً للبيانات.

  • مثابرة البياناتتخزين البيانات المدرجة في الذاكرة وتخزين البيانات المدرجة تلقائيًا على القرص عندما يصل حجم البيانات إلى حد معين.

سير العمل

One vchannel can only be assigned to one data node. يمكن تعيين قناة vchannel واحدة فقط لعقدة بيانات واحدة.

كما هو موضح في الصورة أعلاه، تحتوي المجموعة على أربع قنوات vchannels (V1 و V2 و V3 و V4) وهناك عقدتا بيانات. من المحتمل جدًا أن يقوم منسق البيانات بتعيين عقدة بيانات واحدة لاستهلاك البيانات من V1 و V2، وعقدة البيانات الأخرى من V3 و V4. لا يمكن تعيين قناة vchannel واحدة إلى عقد بيانات متعددة وهذا لمنع تكرار استهلاك البيانات، الأمر الذي سيؤدي إلى إدراج نفس الدفعة من البيانات في نفس المقطع بشكل متكرر.

الإحداثي الجذري وعلامة الوقت

يدير الإحداثي الجذر TSO (الطابع الزمني أوراكل)، وينشر رسائل التجزئة الزمنية على مستوى العالم. يحتوي كل طلب إدراج بيانات على طابع زمني معيّن من قبل التنسيق الجذري. تيك الوقت هو حجر الزاوية في ميلفوس الذي يعمل مثل الساعة في ميلفوس ويشير إلى النقطة الزمنية التي يوجد فيها نظام ميلفوس.

عند كتابة البيانات في ميلفوس، يحمل كل طلب إدخال بيانات طابعًا زمنيًا. أثناء استهلاك البيانات، تستهلك كل عقدة بيانات زمنية بيانات تكون طوابعها الزمنية ضمن نطاق معين.

An example of data insertion and data consumption based on timestamp. مثال على إدخال البيانات واستهلاك البيانات بناءً على الطابع الزمني.

الصورة أعلاه هي عملية إدراج البيانات. يتم تمثيل قيمة الطوابع الزمنية بالأرقام 1،2،6،5،7،8. تتم كتابة البيانات في النظام بواسطة وكيلين: p1 و p2. أثناء استهلاك البيانات، إذا كان الوقت الحالي لعلامة الوقت هو 5، يمكن لعُقد البيانات قراءة البيانات 1 و2 فقط. ثم أثناء القراءة الثانية، إذا أصبح الوقت الحالي للتذكرة الزمنية 9، يمكن قراءة البيانات 6،7،8 بواسطة عقدة البيانات.

تنظيم البيانات: التجميع، والتقسيم، والجزء (القناة)، والقطعة

Data organization in Milvus. تنظيم البيانات في ميلفوس.

اقرأ هذه المقالة أولاً لفهم نموذج البيانات في ميلفوس ومفاهيم التجميع والجزء والجزء والجزء والجزء والمقطع.

باختصار، أكبر وحدة بيانات في ملفوس هي المجموعة التي يمكن تشبيهها بجدول في قاعدة بيانات علائقية. يمكن أن تحتوي المجموعة على أجزاء متعددة (كل منها يتوافق مع قناة) وأقسام متعددة داخل كل جزء. كما هو موضح في الرسم التوضيحي أعلاه، القنوات (الأجزاء) هي الأشرطة الرأسية بينما الأقسام هي الأجزاء الأفقية. في كل تقاطع يوجد مفهوم المقطع، وهو أصغر وحدة لتخصيص البيانات. في Milvus، يتم بناء الفهارس في Milvus على مقاطع. أثناء الاستعلام، يقوم نظام Milvus أيضًا بموازنة أحمال الاستعلام في عقد الاستعلام المختلفة وتتم هذه العملية بناءً على وحدة المقاطع. تحتوي المقاطع على العديد من المقاطع، وعندما يتم استهلاك بيانات المقاطع، يتم إنشاء ملف مدونة المقاطع.

المقطع

هناك ثلاثة أنواع من المقاطع ذات الحالة المختلفة في ميلفوس: المقطع المتنامي، والمقطع المغلق، والمقطع المسحوب.

المقطع المتنامي

القطعة المتنامية هي شريحة متنامية هي شريحة تم إنشاؤها حديثاً يمكن تخصيصها للوكيل لإدراج البيانات. يمكن استخدام المساحة الداخلية للقطعة المتنامية أو تخصيصها أو تحريرها.

Three status in a growing segment ثلاث حالات في القطعة المتنامية

  • مستخدمة: تم استهلاك هذا الجزء من مساحة القطعة المتنامية بواسطة عقدة البيانات.
  • مخصص: تم طلب هذا الجزء من مساحة القطعة المتنامية من قبل الوكيل وتم تخصيصه من قبل منسق البيانات. ستنتهي صلاحية المساحة المخصصة بعد فترة زمنية معينة.
  • حرة: لم يتم استخدام هذا الجزء من مساحة الجزء المتنامي. قيمة المساحة الخالية تساوي المساحة الكلية للمقطع مطروحًا منها قيمة المساحة المستخدمة والمخصصة. لذا تزداد المساحة الخالية للمقطع مع انتهاء المساحة المخصصة.

القطعة المغلقة

المقطع المغلق هو مقطع مغلق لم يعد بالإمكان تخصيصه للوكيل لإدراج البيانات.

Sealed segment in Milvus القطعة المغلقة في ميلفوس

يتم إغلاق القطعة المتنامية في الظروف التالية:

  • إذا وصلت المساحة المستخدمة في القطعة المتنامية إلى 75% من المساحة الإجمالية، يتم إغلاق القطعة.
  • يتم استدعاء Flush() يدويًا من قبل مستخدم Milvus لاستمرار جميع البيانات في المجموعة.
  • سيتم ختم المقاطع المتنامية التي لم يتم ختمها بعد فترة طويلة من الزمن، حيث أن الكثير من المقاطع المتنامية تتسبب في زيادة استهلاك عقد البيانات للذاكرة.

المقطع المسحوب

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

Flushed segment in Milvus المقطع المسحوب في ميلفوس

قناة

يتم تخصيص قناة :

  • عندما تبدأ عقدة البيانات أو تغلق؛ أو
  • عندما يتم طلب مساحة المقطع المخصص من قبل الوكيل.

ثم هناك عدة استراتيجيات لتخصيص القناة. يدعم ميلفوس 2 من الاستراتيجيات:

  1. تجزئة الاتساق

Consistency hashing in Milvus التجزئة المتسقة في ميلفوس

الاستراتيجية الافتراضية في ميلفوس. تستفيد هذه الاستراتيجية من تقنية التجزئة لتعيين موضع لكل قناة على الحلقة، ثم تبحث في اتجاه الساعة للعثور على أقرب عقدة بيانات إلى قناة. وبالتالي، في الرسم التوضيحي أعلاه، يتم تخصيص القناة 1 لعقدة البيانات 2، بينما يتم تخصيص القناة 2 لعقدة البيانات 3.

ومع ذلك، تتمثل إحدى مشاكل هذه الاستراتيجية في أن الزيادة أو النقصان في عدد عقد البيانات (على سبيل المثال، يمكن أن تؤثر الزيادة أو النقصان في عدد عقد البيانات (على سبيل المثال، بدء عقدة بيانات جديدة أو توقف عقدة بيانات فجأة) على عملية تخصيص القناة. لحل هذه المشكلة، يقوم منسق البيانات بمراقبة حالة عقد البيانات عبر إلخd بحيث يمكن إخطار منسق البيانات على الفور إذا كان هناك أي تغيير في حالة عقد البيانات. ثم يحدد منسق البيانات كذلك عقدة البيانات التي سيتم تخصيص القنوات لها بشكل صحيح.

  1. موازنة التحميل

تتمثل الاستراتيجية الثانية في تخصيص قنوات من نفس المجموعة إلى عقد بيانات مختلفة، مما يضمن تخصيص القنوات بالتساوي. الغرض من هذه الاستراتيجية هو تحقيق توازن الأحمال.

تخصيص البيانات: متى وكيف

The process of data allocation in Milvus عملية تخصيص البيانات في ميلفوس

تبدأ عملية تخصيص البيانات من العميل. يرسل أولاً طلبات إدراج البيانات مع الطابع الزمني t1 إلى الوكيل. ثم يرسل الوكيل طلبًا إلى منسق البيانات لتخصيص المقطع.

عند استلام طلب تخصيص المقطع، يتحقق منسق البيانات من حالة المقطع ويخصص المقطع. إذا كانت المساحة الحالية للمقاطع التي تم إنشاؤها كافية لصفوف البيانات المدرجة حديثًا، يقوم منسق البيانات بتخصيص تلك المقاطع التي تم إنشاؤها. ومع ذلك، إذا كانت المساحة المتوفرة في المقاطع الحالية غير كافية، يقوم منسق البيانات بتخصيص مقطع جديد. يمكن أن يعيد منسق البيانات مقطعًا واحدًا أو أكثر عند كل طلب. في هذه الأثناء، يقوم منسق البيانات أيضًا بحفظ المقطع المخصص في الخادم الوصفية لاستمرار البيانات.

بعد ذلك، يقوم منسق البيانات بإرجاع معلومات المقطع المخصص (بما في ذلك معرف المقطع وعدد الصفوف ووقت انتهاء الصلاحية t2 ، إلخ) إلى الوكيل. يرسل الوكيل هذه المعلومات الخاصة بالمقطع المخصص إلى مخزن الرسائل بحيث يتم تسجيل هذه المعلومات بشكل صحيح. لاحظ أن قيمة t1 يجب أن تكون أصغر من قيمة t2. القيمة الافتراضية لـ t2 هي 2000 ميلي ثانية ويمكن تغييرها من خلال تكوين المعلمة segment.assignmentExpiration في الملف data_coord.yaml.

بنية ملف Binlog واستمرار البيانات

Data node flush تدفق عقدة البيانات

تشترك عقدة البيانات في مخزن الرسائل لأن طلبات إدراج البيانات يتم الاحتفاظ بها في مخزن الرسائل وبالتالي يمكن لعقد البيانات أن تستهلك رسائل الإدراج. تقوم عقد البيانات أولاً بوضع طلبات الإدراج في مخزن إدراج مؤقت، ومع تراكم الطلبات يتم مسحها إلى مخزن الكائنات بعد الوصول إلى حد معين.

بنية ملف Binlog

Binlog file structure. بنية ملف Binlog.

تشبه بنية ملف Binlog في Milvus تلك الموجودة في MySQL. يتم استخدام Binlog لخدمة وظيفتين: استعادة البيانات وبناء الفهرس.

يحتوي ملف Binlog على العديد من الأحداث. يحتوي كل حدث على رأس حدث وبيانات الحدث.

تتم كتابة البيانات الوصفية بما في ذلك وقت إنشاء Binlog، ومعرف عقدة الكتابة، وطول الحدث، والموضع التالي (إزاحة الحدث التالي)، وما إلى ذلك في رأس الحدث.

يمكن تقسيم بيانات الحدث إلى قسمين: ثابت ومتغير.

File structure of an insert event. بنية ملف حدث الإدراج.

يحتوي الجزء الثابت في بيانات الحدث لحدث INSERT_EVENT على StartTimestamp و EndTimestamp و reserved.

يخزن الجزء المتغير في الواقع البيانات المدرجة. يتم تسلسل بيانات الإدراج في شكل باركيه وتخزينها في هذا الملف.

ثبات البيانات

إذا كانت هناك أعمدة متعددة في المخطط، سيقوم ميلفوس بتخزين المدونات الثنائية في الأعمدة.

Binlog data persistence. ثبات بيانات Binlog.

كما هو موضح في الصورة أعلاه، العمود الأول هو المفتاح الأساسي binlog. والثاني هو عمود الطابع الزمني. أما البقية فهي الأعمدة المحددة في المخطط. يُشار أيضًا إلى مسار ملف المدونات الثنائية في MinIO في الصورة أعلاه.

حول سلسلة الغوص العميق

مع الإعلان الرسمي عن توفر الإصدار 2.0 من ميلفوس 2.0 بشكل عام، قمنا بتنظيم سلسلة مدونة الغوص العميق هذه لتقديم تفسير متعمق لبنية ميلفوس وكود المصدر. تشمل الموضوعات التي تتناولها سلسلة المدونات هذه ما يلي:

Like the article? Spread the word

استمر في القراءة