فهم مستوى الاتساق في قاعدة بيانات ناقلات ميلفوس - الجزء الثاني
صورة_الغلاف
كتب هذه المقالة جيكوان لونج ونسختها أنجيلا ني.
في المدونة السابقة حول الاتساق، شرحنا في المدونة السابقة ما هو مدلول الاتساق في قاعدة البيانات المتجهة الموزعة، وغطينا مستويات الاتساق الأربعة - القوي، والثبات المحدود، والجلسة، والنهائي المدعوم في قاعدة بيانات ميلفوس المتجهة، وشرحنا سيناريو التطبيق الأنسب لكل مستوى من مستويات الاتساق.
في هذا المنشور، سنواصل دراسة الآلية الكامنة وراء تمكين مستخدمي قاعدة بيانات Milvus vector من اختيار مستوى الاتساق المثالي لسيناريوهات التطبيق المختلفة بمرونة. سنقدم أيضًا برنامجًا تعليميًا أساسيًا حول كيفية ضبط مستوى الاتساق في قاعدة بيانات Milvus vector.
الانتقال إلى:
آلية التجزئة الزمنية الأساسية
يستخدم Milvus آلية علامة الوقت لضمان مستويات مختلفة من الاتساق عند إجراء بحث أو استعلام متجه. علامة الوقت هي العلامة المائية لـ Milvus التي تعمل كساعة في Milvus وتدل على النقطة الزمنية التي يوجد فيها نظام Milvus. كلما كان هناك طلب بلغة معالجة البيانات (DML) يتم إرساله إلى قاعدة بيانات Milvus vector، فإنه يقوم بتعيين طابع زمني للطلب. كما هو موضح في الشكل أدناه، عندما يتم إدراج بيانات جديدة في قائمة انتظار الرسائل على سبيل المثال، لا يقوم Milvus بوضع طابع زمني على هذه البيانات المدرجة فحسب، بل يقوم أيضًا بإدراج علامات زمنية على فترات منتظمة.
timetick
لنأخذ syncTs1
في الشكل أعلاه كمثال. عندما يرى المستهلكون النهائيون مثل عقد الاستعلام syncTs1
، تفهم مكونات المستهلك أن جميع البيانات التي تم إدراجها قبل syncTs1
قد تم استهلاكها. بمعنى آخر، لن تظهر طلبات إدراج البيانات التي تكون قيم طابعها الزمني أصغر من syncTs1
في قائمة انتظار الرسائل.
ضمان الطابع الزمني
كما ذكرنا في القسم السابق، تحصل مكونات المستهلك النهائية مثل عقد الاستعلام باستمرار على رسائل طلبات إدراج البيانات وعلامة الوقت من قائمة انتظار الرسائل. في كل مرة يتم فيها استهلاك علامة زمنية، ستضع عقدة الاستعلام علامة على هذه العلامة الزمنية المستهلكة كوقت قابل للخدمة - ServiceTime
وجميع البيانات التي تم إدراجها قبل ServiceTime
مرئية لعقدة الاستعلام.
بالإضافة إلى ServiceTime
، تعتمد ميلفوس أيضًا نوعًا من الطابع الزمني - الطابع الزمني المضمون (GuaranteeTS
) لتلبية الحاجة إلى مستويات مختلفة من الاتساق والتوافر من قبل مختلف المستخدمين. هذا يعني أنه يمكن لمستخدمي قاعدة بيانات ميلفوس المتجهة تحديد GuaranteeTs
من أجل إبلاغ عقد الاستعلام بأن جميع البيانات قبل GuaranteeTs
يجب أن تكون مرئية ومشاركة عند إجراء بحث أو استعلام.
هناك عادةً سيناريوهان عندما تنفذ عقدة الاستعلام طلب بحث في قاعدة بيانات ميلفوس المتجهة.
السيناريو 1: تنفيذ طلب البحث على الفور
كما هو موضح في الشكل أدناه، إذا كان GuaranteeTs
أصغر من ServiceTime
، يمكن لعُقد الاستعلام تنفيذ طلب البحث على الفور.
تنفيذ_فوراً
السيناريو 2: انتظر حتى "وقت الخدمة> ضمانات"
إذا كان GuaranteeTs
أكبر من ServiceTime
، يجب أن تستمر عقد الاستعلام في استهلاك علامة الوقت من قائمة انتظار الرسائل. لا يمكن تنفيذ طلبات البحث حتى يصبح ServiceTime
أكبر من GuaranteeTs
.
انتظار_البحث
مستويات الاتساق
لذلك، يكون GuaranteeTs
قابلاً للتكوين في طلب البحث لتحقيق مستوى الاتساق الذي تحدده. يضمن GuaranteeTs
ذو القيمة الكبيرة اتساقًا قويًا على حساب زمن انتقال عالٍ للبحث. ويقلل GuaranteeTs
ذو القيمة الصغيرة من زمن انتقال البحث ولكن رؤية البيانات معرضة للخطر.
GuaranteeTs
في ميلفوس هو تنسيق طابع زمني هجين. وليس لدى المستخدم أي فكرة عن TSO داخل Milvus. لذلك، يعد تحديد قيمةGuaranteeTs
مهمة معقدة للغاية بالنسبة للمستخدمين. ولتوفير العناء على المستخدمين وتوفير تجربة مستخدم مثالية، لا يتطلب Milvus من المستخدمين سوى اختيار مستوى الاتساق المحدد، وستتعامل قاعدة بيانات Milvus المتجهة تلقائيًا مع قيمة GuaranteeTs
للمستخدمين. وهذا يعني أن مستخدم Milvus يحتاج فقط إلى الاختيار من بين مستويات الاتساق الأربعة: Strong
Bounded
و Session
و و Eventually
. ويتوافق كل مستوى من مستويات الاتساق مع قيمة GuaranteeTs
معينة.
ويوضح الشكل أدناه GuaranteeTs
لكل مستوى من مستويات الاتساق الأربعة في قاعدة بيانات ميلفوس المتجهة.
الضمانات
تدعم قاعدة بيانات ميلفوس المتجهة أربعة مستويات من الاتساق:
CONSISTENCY_STRONG
: يتم تعيينGuaranteeTs
إلى نفس قيمة أحدث طابع زمني للنظام، وتنتظر عقد الاستعلام حتى ينتقل وقت الخدمة إلى أحدث طابع زمني للنظام لمعالجة طلب البحث أو الاستعلام.CONSISTENCY_EVENTUALLY
::GuaranteeTs
يتم تعيينها إلى قيمة أصغر بكثير من أحدث طابع زمني للنظام من أجل تخطي التحقق من الاتساق. تبحث عقد الاستعلام على الفور في طريقة عرض البيانات الموجودة.CONSISTENCY_BOUNDED
: يتم تعيينGuaranteeTs
إلى قيمة أصغر نسبيًا من أحدث طابع زمني للنظام، وتبحث عقد الاستعلام على طريقة عرض بيانات أقل تحديثًا بشكل مقبول.CONSISTENCY_SESSION
: يستخدم العميل الطابع الزمني لآخر عملية كتابة كـGuaranteeTs
بحيث يمكن لكل عميل على الأقل استرداد البيانات التي تم إدراجها بنفسه.
كيف يمكن ضبط مستوى الاتساق في ميلفوس؟
يدعم Milvus ضبط مستوى الاتساق عند إنشاء مجموعة أو إجراء بحث أو استعلام.
إجراء بحث تشابه متجهي
لإجراء بحث تشابه متجه بمستوى الاتساق الذي تريده، ما عليك سوى تعيين قيمة المعلمة consistency_level
إما Strong
أو Bounded
أو Session
أو Eventually
. إذا لم تقم بتعيين قيمة المعلمة consistency_level
، فسيكون مستوى الاتساق Bounded
افتراضيًا. يقوم المثال بإجراء بحث تشابه متجه باستخدام Strong
الاتساق.
results = collection.search(
data=[[0.1, 0.2]],
anns_field="book_intro",
param=search_params,
limit=10,
expr=None,
consistency_level="Strong"
)
إجراء استعلام متجه
على غرار إجراء بحث تشابه متجه، يمكنك تحديد قيمة المعلمة consistency_level
عند إجراء استعلام متجه. يُجري المثال إجراء استعلام متجه بتناسق Strong
.
res = collection.query(
expr = "book_id in [2,4,6,8]",
output_fields = ["book_id", "book_intro"],
consistency_level="Strong"
)
ما التالي
مع الإصدار الرسمي لميلفوس 2.1، أعددنا سلسلة من المدونات التي تقدم الميزات الجديدة. اقرأ المزيد في سلسلة المدونات هذه:
- كيفية استخدام بيانات السلسلة لتمكين تطبيقات البحث عن التشابه لديك
- استخدام ميلفوس المدمج لتثبيت وتشغيل ميلفوس مع بايثون على الفور
- زيادة إنتاجية قراءة قاعدة بيانات المتجهات باستخدام النسخ المتماثلة في الذاكرة
- فهم مستوى الاتساق في قاعدة بيانات Milvus Vector في قاعدة بيانات Milvus
- فهم مستوى الاتساق في قاعدة بيانات Milvus Vector (الجزء الثاني)
- كيف تضمن قاعدة بيانات Milvus Vector أمان البيانات؟
- آلية التجزئة الزمنية الأساسية
- ضمان الطابع الزمني
- مستويات الاتساق
- كيف يمكن ضبط مستوى الاتساق في ميلفوس؟
- ما التالي
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word