الطابع الزمني
يشرح هذا الموضوع مفهوم الطابع الزمني ويقدم المعلمات الأربعة الرئيسية المتعلقة بالطابع الزمني في قاعدة بيانات متجه ميلفوس.
نظرة عامة
Milvus هي قاعدة بيانات متجهة يمكنها البحث والاستعلام عن المتجهات المحولة من بيانات غير منظمة. عند إجراء عملية بلغة معالجة البيانات (DML)، بما في ذلك إدراج البيانات وحذفها، تقوم Milvus بتعيين طوابع زمنية للكيانات المشاركة في العملية. لذلك، تحتوي جميع الكيانات في Milvus على سمة الطابع الزمني. وتشترك مجموعات الكيانات في نفس عملية DML في نفس قيمة الطابع الزمني.
معلمات الطابع الزمني
يتم تضمين العديد من المعلمات المتعلقة بالطابع الزمني عند إجراء بحث أو استعلام تشابه متجه في Milvus.
Guarantee_timestamp
Service_timestamp
Graceful_time
Travel_timestamp
Guarantee_timestamp
Guarantee_timestamp
هي نوع من الطوابع الزمنية المستخدمة للتأكد من أن جميع تحديثات البيانات بواسطة عمليات DML قبل Guarantee_timestamp
تكون مرئية عند إجراء بحث أو استعلام تشابه متجه. على سبيل المثال، إذا قمت بإدراج دفعة من البيانات في الساعة 3 مساءً، ودفعة أخرى في الساعة 5 مساءً، وتم تعيين قيمة Guarantee_timestamp
على أنها 6 مساءً أثناء إجراء بحث تشابه المتجهات. هذا يعني أن دفعتي البيانات التي تم إدراجها في الساعة 3 مساءً و5 مساءً على التوالي يجب أن تكونا متضمنتين في البحث.
إذا لم يتم تكوين Guarantee_timestamp
، فإن ميلفوس يأخذ تلقائيًا النقطة الزمنية التي يتم فيها طلب البحث. لذلك، يتم إجراء البحث على طريقة عرض البيانات مع جميع تحديثات البيانات بواسطة عمليات DML قبل البحث.
لتوفير عناء فهم TSO داخل Milvus، لا يتعين عليك كمستخدم تكوين معلمة Guarantee_timestamp
مباشرةً. تحتاج فقط إلى اختيار مستوى الاتساق، ويتعامل Milvus تلقائيًا مع المعلمة Guarantee_timestamp
نيابةً عنك. يتوافق كل مستوى تناسق مع قيمة Guarantee_timestamp
معينة.
Guarantee_Timestamp.
مثال
كما هو موضح في الرسم التوضيحي أعلاه، يتم تعيين قيمة Guarantee_timestamp
على أنها 2021-08-26T18:15:00
(للتبسيط، يتم تمثيل الطابع الزمني في هذا المثال بالوقت الفعلي). عند إجراء بحث أو استعلام، يتم البحث أو الاستعلام عن جميع البيانات قبل 2021-08-26T18:15:00.
Service_timestamp
Service_timestamp
هو نوع من الطوابع الزمنية التي يتم إنشاؤها وإدارتها تلقائيًا بواسطة عقد الاستعلام في Milvus. يتم استخدامه للإشارة إلى عمليات DML التي يتم تنفيذها بواسطة عقد الاستعلام.
يمكن تصنيف البيانات التي تديرها عقد الاستعلام إلى نوعين:
البيانات التاريخية (أو تسمى أيضًا البيانات الدفعية)
البيانات التزايدية (أو تسمى أيضاً البيانات المتدفقة).
في ميلفوس، تحتاج إلى تحميل البيانات قبل إجراء بحث أو استعلام. لذلك، يتم تحميل البيانات الدفعية في المجموعة بواسطة عقدة الاستعلام قبل إجراء بحث أو طلب استعلام. ومع ذلك، يتم إدراج البيانات المتدفقة في Milvus أو حذفها منه بشكل سريع، الأمر الذي يتطلب من عقدة الاستعلام الاحتفاظ بجدول زمني لعمليات DML وطلبات البحث أو الاستعلام. ونتيجةً لذلك، تستخدم عقد الاستعلام Service_timestamp
للاحتفاظ بمثل هذا الجدول الزمني. Service_timestamp
يمكن اعتباره النقطة الزمنية التي تكون فيها بيانات معينة مرئية حيث يمكن لعقد الاستعلام التأكد من اكتمال جميع عمليات DML قبل Service_timestamp
.
عند وجود طلب بحث أو استعلام وارد، تقوم عقدة الاستعلام بمقارنة قيم Service_timestamp
و Guarantee_timestamp
. هناك سيناريوهان أساسيان.
Service_Timestamp.
السيناريو 1: Service_timestamp
>= Guarantee_timestamp
كما هو موضح في الشكل 1، يتم تعيين قيمة Guarantee_timestamp
على أنها 2021-08-26T18:15:00
. عندما يتم زيادة قيمة Service_timestamp
إلى 2021-08-26T18:15:01
، فهذا يعني أن جميع عمليات DML قبل هذه النقطة الزمنية يتم تنفيذها وإكمالها بواسطة عقدة الاستعلام، بما في ذلك عمليات DML قبل الوقت المشار إليه Guarantee_timestamp
. ونتيجة لذلك، يمكن تنفيذ طلب البحث أو الاستعلام على الفور.
السيناريو 2: Service_timestamp
< Guarantee_timestamp
كما هو موضح في الشكل 2، يتم تعيين قيمة Guarantee_timestamp
على أنها 2021-08-26T18:15:00
، والقيمة الحالية لـ Service_timestamp
هي فقط 2021-08-26T18:14:55
. هذا يعني أن عمليات DML فقط قبل 2021-08-26T18:14:55
يتم تنفيذها وإكمالها، تاركًا جزءًا من عمليات DML بعد هذه النقطة الزمنية ولكن قبل Guarantee_timestamp
غير مكتملة. إذا تم تنفيذ البحث أو الاستعلام عند هذه النقطة، فإن بعض البيانات المطلوبة تكون غير مرئية وغير متوفرة بعد، مما يؤثر بشكل خطير على دقة نتائج البحث أو الاستعلام. لذلك، تحتاج عقدة الاستعلام إلى تأجيل طلب البحث أو الاستعلام حتى تكتمل عمليات DML قبل guarantee_timestamp
(أي عندما Service_timestamp
>= Guarantee_timestamp
).
Graceful_time
من الناحية الفنية، Graceful_time
ليس طابعًا زمنيًا، بل هو فترة زمنية (على سبيل المثال 100 مللي ثانية). ومع ذلك، فإن Graceful_time
جدير بالذكر لأنه يرتبط ارتباطًا وثيقًا بـ Guarantee_timestamp
و Service_timestamp
. Graceful_time
هو معلمة قابلة للتكوين في ملف تكوين ميلفوس. يتم استخدامه للإشارة إلى الفترة الزمنية التي يمكن تحملها قبل أن تصبح بيانات معينة مرئية. باختصار، يمكن التسامح مع عمليات DML غير المكتملة أثناء Graceful_time
.
عندما يكون هناك طلب بحث أو استعلام وارد، يمكن أن يكون هناك سيناريوهان.
وقت_المهلة.
السيناريو 1: Service_timestamp
+ Graceful_time
>= Guarantee_timestamp
كما هو موضح في الشكل 1، يتم تعيين قيمة Guarantee_timestamp
على أنها 2021-08-26T18:15:01
، و Graceful_time
على أنها 2s
. يتم زيادة قيمة Service_timestamp
إلى 2021-08-26T18:15:00
. على الرغم من أن قيمة Service_timestamp
لا تزال أصغر من قيمة Guarantee_timestamp
ولا تكتمل جميع عمليات DML قبل 2021-08-26T18:15:01
، يتم التسامح مع فترة ثانيتين من عدم رؤية البيانات كما هو موضح في قيمة Graceful_time
. لذلك، يمكن تنفيذ طلب البحث أو الاستعلام الوارد على الفور.
السيناريو 2: Service_timestamp
+ Graceful_time
< Guarantee_timestamp
كما هو موضح في الشكل 2، يتم تعيين قيمة Guarantee_timestamp
على أنها 2021-08-26T18:15:01
، و Graceful_time
على أنها 2s
. القيمة الحالية لـ Service_timestamp
هي 2021-08-26T18:14:54
فقط، وهذا يعني أن عمليات DML المتوقعة لم تكتمل بعد وحتى مع إعطاء ثانيتين من الوقت المريح، لا يزال إخفاء البيانات غير محتمل. لذلك، تحتاج عقدة الاستعلام إلى تأجيل البحث أو طلب الاستعلام حتى تكتمل طلبات DML معينة (أي عندما Service_timestamp
+ Graceful_time
>= Guarantee_timestamp
).