تمزيق JSON في Milvus: تصفية JSON أسرع ب 88.9 مرة مع المرونة
تنتج أنظمة الذكاء الاصطناعي الحديثة بيانات JSON شبه منظمة أكثر من أي وقت مضى. حيث يتم ضغط معلومات العملاء والمنتجات في كائن JSON، وتصدر الخدمات المصغرة سجلات JSON عند كل طلب، وتقوم أجهزة إنترنت الأشياء ببث قراءات أجهزة الاستشعار في حمولات JSON خفيفة الوزن، كما أن تطبيقات الذكاء الاصطناعي اليوم تعتمد بشكل متزايد على JSON للإخراج المنظم. والنتيجة هي فيضان من البيانات الشبيهة ب JSON التي تتدفق إلى قواعد البيانات المتجهة.
تقليديًا، هناك طريقتان للتعامل مع مستندات JSON:
التعريف المسبق لكل حقل من حقول JSON في مخطط ثابت وإنشاء فهرس: يوفر هذا النهج أداءً قويًا في الاستعلام، لكنه جامد. بمجرد أن يتغير تنسيق البيانات، فإن كل حقل جديد أو معدل يؤدي إلى جولة أخرى من تحديثات لغة تعريف البيانات (DDL) المؤلمة وترحيلات المخطط.
قم بتخزين كائن JSON بأكمله كعمود واحد (يستخدم كل من نوع JSON والمخطط الديناميكي في Milvus هذا النهج): يوفر هذا الخيار مرونة ممتازة، ولكن على حساب أداء الاستعلام. يتطلب كل طلب تحليل JSON في وقت التشغيل وغالبًا ما يتطلب مسحًا كاملاً للجدول، مما يؤدي إلى زمن استجابة يرتفع مع نمو مجموعة البيانات.
كانت هذه معضلة المرونة والأداء.
ليس بعد الآن مع ميزة JSON Shredding التي تم تقديمها حديثًا في Milvus.
مع تقديم خاصية JSON Shredding، تحقق Milvus الآن مرونة خالية من المخططات مع أداء التخزين العمودي، مما يجعل البيانات شبه المهيكلة على نطاق واسع مرنة وسهلة الاستعلام.
كيف يعمل تمزيق JSON
يؤدي تمزيق JSON إلى تسريع استعلامات JSON من خلال تحويل مستندات JSON المستندة إلى صف إلى تخزين عمودي مُحسَّن للغاية. يحافظ Milvus على مرونة JSON لنمذجة البيانات مع تحسين التخزين العمودي تلقائيًا - مما يحسن بشكل كبير من الوصول إلى البيانات وأداء الاستعلام.
للتعامل مع حقول JSON المتناثرة أو النادرة بكفاءة، يحتوي Milvus أيضًا على فهرس مقلوب للمفاتيح المشتركة. يحدث كل هذا بشفافية للمستخدمين: يمكنك إدراج مستندات JSON كالمعتاد، وترك الأمر ل Milvus لإدارة استراتيجية التخزين والفهرسة المثلى داخليًا.
عندما يتلقى Milvus سجلات JSON الخام بأشكال وهياكل مختلفة، فإنه يحلل كل مفتاح JSON لمعرفة نسبة حدوثه واستقرار نوعه (ما إذا كان نوع بياناته متناسقًا عبر المستندات). بناءً على هذا التحليل، يتم تصنيف كل مفتاح إلى واحدة من ثلاث فئات:
المفاتيح المكتوبة: المفاتيح التي تظهر في معظم المستندات ولها دائمًا نفس نوع البيانات (على سبيل المثال، جميع الأعداد الصحيحة أو جميع السلاسل).
مفاتيحديناميكية: المفاتيح التي تظهر بشكل متكرر ولكن لها أنواع بيانات مختلطة (على سبيل المثال، أحيانًا سلسلة وأحيانًا عدد صحيح).
مفاتيح مشتركة: مفاتيح غير متكررة أو متناثرة أو متداخلة تقل عن حد التردد القابل للتكوين.
يتعامل ميلفوس مع كل فئة بشكل مختلف لتحقيق أقصى قدر من الكفاءة:
تُخزَّنالمفاتيح المكتوبة في أعمدة مخصصة وقوية الكتابة.
أماالمفاتيح الديناميكية فتوضع في أعمدة ديناميكية بناءً على نوع القيمة الفعلية التي تمت ملاحظتها في وقت التشغيل.
يتم تخزين كل من الأعمدة المكتوبة والديناميكية في تنسيقات أعمدة السهم/الباركيه للمسح السريع وتنفيذ الاستعلامات المحسّنة للغاية.
يتم دمجالمفاتيح المشتركة في عمود ثنائي JSON مضغوط، مصحوبًا بفهرس مقلوب للمفتاح المشترك. يعمل هذا الفهرس على تسريع الاستعلامات على الحقول ذات التردد المنخفض عن طريق تشذيب الصفوف غير ذات الصلة في وقت مبكر وحصر البحث في تلك المستندات التي تحتوي على المفتاح المطلوب فقط.
يشكل هذا المزيج من التخزين العمودي التكيفي والفهرسة المقلوبة جوهر آلية تمزيق JSON في Milvus، مما يتيح المرونة والأداء العالي على نطاق واسع.
سير العمل الكلي موضح أدناه:
والآن بعد أن قمنا بتغطية أساسيات كيفية عمل تمزيق JSON Shredding، دعونا نلقي نظرة فاحصة على القدرات الرئيسية التي تجعل هذا النهج مرنًا وعالي الأداء.
التقطيع والتقطيع العمودي
عندما تتم كتابة مستند JSON جديد، يقوم Milvus بتقسيمه وإعادة تنظيمه إلى تخزين عمودي محسّن:
يتم تحديد المفاتيح المكتوبة والديناميكية تلقائيًا وتخزينها في أعمدة مخصصة.
إذا كان مستند JSON يحتوي على كائنات متداخلة، يقوم Milvus بإنشاء أسماء أعمدة قائمة على المسار تلقائيًا. على سبيل المثال، يمكن تخزين حقل
nameداخل كائنuserباسم العمود/user/name.يتم تخزين المفاتيح المشتركة معًا في عمود JSON ثنائي واحد مضغوط. نظرًا لأن هذه المفاتيح تظهر بشكل غير متكرر، يقوم Milvus ببناء فهرس مقلوب لها، مما يتيح التصفية السريعة ويسمح للنظام بتحديد موقع الصفوف التي تحتوي على المفتاح المحدد بسرعة.
الإدارة الذكية للأعمدة
بالإضافة إلى تقطيع JSON إلى أعمدة، يضيف Milvus طبقة إضافية من الذكاء من خلال إدارة الأعمدة الديناميكية، مما يضمن بقاء تقطيع JSON Shredding مرنًا مع تطور البيانات.
أعمدة يتم إنشاؤها حسب الحاجة: عندما تظهر مفاتيح جديدة في مستندات JSON الواردة، يقوم Milvus تلقائيًا بتجميع القيم التي تحمل نفس المفتاح في عمود مخصص. يحافظ هذا على مزايا الأداء للتخزين العمودي دون الحاجة إلى أن يقوم المستخدمون بتصميم المخططات مسبقًا. يستنتج Milvus أيضًا نوع البيانات للحقول الجديدة (على سبيل المثال، INTEGER، وDouble، وVARCHAR) ويحدد تنسيق عمودي فعال لها.
يتم التعامل مع كل مفتاح تلقائيًا: يقوم Milvus بتحليل ومعالجة كل مفتاح في مستند JSON. وهذا يضمن تغطية واسعة للاستعلام دون إجبار المستخدمين على تحديد الحقول مسبقًا أو إنشاء فهارس مسبقًا.
تحسين الاستعلام
بمجرد إعادة تنظيم البيانات في الأعمدة الصحيحة، يقوم Milvus بتحديد مسار التنفيذ الأكثر كفاءة لكل استعلام:
المسح المباشر للأعمدة للمفاتيح المكتوبة والديناميكية: إذا كان الاستعلام يستهدف حقلاً تم تقسيمه بالفعل إلى عمود خاص به، يمكن لـ Milvus مسح هذا العمود مباشرةً. يقلل هذا من إجمالي كمية البيانات التي يجب معالجتها ويستفيد من الحوسبة العمودية المسرّعة SIMD من أجل تنفيذ أسرع.
البحث المفهرس للمفاتيح المشتركة: إذا كان الاستعلام يتضمن حقلاً لم يتم ترقيته إلى عمود خاص به - عادةً ما يكون مفتاحًا نادرًا - يقوم ميلفوس بتقييمه مقابل عمود المفتاح المشترك. يسمح الفهرس المقلوب المبني على هذا العمود ل Milvus بتحديد الصفوف التي تحتوي على المفتاح المحدد بسرعة وتخطي الباقي، مما يحسن الأداء بشكل كبير للحقول ذات التردد المنخفض.
إدارة البيانات الوصفية التلقائية: يحتفظ Milvus باستمرار بالبيانات الوصفية والقواميس العالمية بحيث تظل الاستعلامات دقيقة وفعالة، حتى مع تطور بنية مستندات JSON الواردة بمرور الوقت.
معايير الأداء
لقد صممنا معيارًا لمقارنة أداء الاستعلام لتخزين مستند JSON بأكمله كحقل خام واحد مقابل استخدام ميزة تمزيق JSON التي تم إصدارها حديثًا.
بيئة الاختبار والمنهجية
الأجهزة: 1 نواة / 8 جيجابايت
مجموعة البيانات: 1 مليون مستند من JSONBench
المنهجية: قياس سرعة الاستجابة في الثانية والكمون عبر أنماط استعلام مختلفة
النتائج: مفاتيح مكتوبة
يقيس هذا الاختبار الأداء عند الاستعلام عن مفتاح موجود في معظم المستندات.
| تعبير الاستعلام | QPS (بدون تمزيق) | QPS (مع التقطيع) | تعزيز الأداء |
|---|---|---|---|
| json['time_us] > 0 | 8.69 | 287.5 | 33x |
| json['kind] = = 'التزام' | 8.42 | 126.1 | 14.9x |
النتائج: المفاتيح المشتركة
ركز هذا الاختبار على الاستعلام عن المفاتيح المتفرقة والمتداخلة التي تندرج ضمن فئة "المشتركة".
| تعبير الاستعلام | QPS (بدون تمزيق) | QPS (مع التقطيع) | تعزيز الأداء |
|---|---|---|---|
| json['identity]['seq] > 0 | 4.33 | 385 | 88.9x |
| json['identity']['did'] = = 'xxxxx' | 7.6 | 352 | 46.3x |
تُظهر الاستعلامات ذات المفتاح المشترك التحسينات الأكثر دراماتيكية (حتى 89 ضعفًا أسرع)، بينما تقدم الاستعلامات ذات المفتاح المكتوب تسريعًا ثابتًا يتراوح بين 15 و30 ضعفًا. بشكل عام، يستفيد كل نوع استعلام من JSON Shredding، مع تحقيق مكاسب واضحة في الأداء في جميع المجالات.
جرّبها الآن
سواءً كنت تعمل مع سجلات واجهة برمجة التطبيقات، أو بيانات مستشعر إنترنت الأشياء، أو حمولات التطبيقات سريعة التطور، تمنحك JSON Shredding القدرة النادرة على التمتع بالمرونة والأداء العالي.
الميزة متاحة الآن ونرحب بتجربتها الآن. يمكنك أيضًا مراجعة هذا المستند لمزيد من التفاصيل.
هل لديك أسئلة أو تريد التعمق في أي ميزة في أحدث إصدار من ميلفوس؟ انضم إلى قناة Discord الخاصة بنا أو قم بتسجيل المشكلات على GitHub. يمكنك أيضًا حجز جلسة فردية مدتها 20 دقيقة للحصول على رؤى وإرشادات وإجابات لأسئلتك من خلال ساعات عمل Milvus المكتبية.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



