HyperAI
Back to Headlines

فهم العمارة الداخلية لمتجر بيانات المتجهات المُوزَّع: دروس مهمة من دراسة Milvus

منذ 3 أيام

ما تعلمته من دراسة بنية قاعدة البيانات الموزعة للأشعة عندما بدأت بإدماج البحث عن الأشعة في نموذج محركي الدلالات، اكتشفت أن التحدي لم يكن僅 يتعلق بدقة النتائج فحسب، بل كان يتعلق بالبنية التحتية: كيفية توسيع الإدخال، بناء الفهارس بكفاءة، الحفاظ على ثبات القراءات، والوصول إلى أهداف زمن الاستجابة تحت الضغط. قضيت أيامًا في دراسة تفاصيل الأنظمة المفتوحة المصدر مثل Milvus لمعرفة كيف يتمكنون من تقديم خدمة البحث عن الأشعة (ANN) بشكل كبير. هذا الملخص يهدف إلى توضيح ما وجدت، بدءًا من بنية النظام وحتى العقد والمساعدات والخيارات التصميمية التي تحدد نجاح البحث عن الأشعة في الأبعاد العالية في البيئات العملية. لماذا تحتاج قاعدة بيانات الأشعة إلى بنية جديدة تمامًا معظم قواعد البيانات التقليدية مصممة لتعاملات معاملات (OLTP) - سواء كانت تعاملات مفتاح-قيمة، وثائق، أو علاقات. قواعد البيانات للأشعة تختلف بشكل كبير، فهي محسنة لأعمال حسابية ثقيلة مثل البحث عن الشبه والبناء الفهري. إذا حاولت دمج هذه الأعمال في نظام OLTP موحد، ستواجه أداءً هشًا وترديًا في الموازاة. لذا، ما هي البنية الجيدة لمعاملات الأشعة؟ من خلال دراستي، اعتمدت أنظمة مثل Milvus على تصميم رباعي الطبقات يتوافق جيدًا مع مبادئ الهندسة الموزعة للبيانات: طبقة الاستعلام (Query Layer): تتعامل مع الطلبات الواردة وتوزيعها على العقد المناسبة. طبقة البيانات (Data Layer): تقوم بتخزين البيانات وإدارتها. طبقة الفهرسة (Index Layer): تبني الفهارس وتحافظ عليها. طبقة الحوكمة (Governance Layer): تدير الأمان والتوافر والتعافي من الأعطال. لماذا تحتاج إلى ثلاثة أنواع من العقد ما أدهشني هو كيف يتم تفكيك الطبقة الحسابية (العاملة) إلى خدمات متخصصة: QueryNode: في اختباراتي مع 50 مليون تشبيه، أدت زيادة QueryNodes إلى خفض وقت الاستجابة من 780 ملليثانية إلى حوالي 420 ملليثانية تحت حمل استفسارات يصل إلى 300 استفسار في الثانية. DataNode: هذا مهم للتطبيقات البث المباشر، مثل رفع المستندات في الوقت الحقيقي أو إدخال سجلات الأشعة. لا تريد أن يكون أداء البحث مربوطًا بأداء الإدخال. IndexNode: عند استخدام HNSW مع efConstruction عالية، غالبًا ما ترى تشبعًا في وحدات المعالجة المركزية. فصل بناء الفهارس إلى عقد منفصل يتجنب تأخير وقت الاستجابة للبحث. المقاطع: وحدة البيانات والعزل لم أقدر أهمية هذا المفهوم حتى حاولت مقارنة أداء الإدخال مقابل أداء الاستعلام: المقاطع (Segments). بدلاً من الحفاظ على فهرس عالمي، تقوم Milvus بتقسيم البيانات إلى كتل غير قابلة للتغيير (حجم الكتلة الافتراضي هو 512 ميجابايت). يتم فهرسة كل كتلة وبحثها بشكل مستقل. لماذا هذا مهم؟ في مجموعة بيانات تحتوي على 100 مليون تشبيه، وجدت أن ضبط حجم الكتلة (من 512 ميجابايت إلى 256 ميجابايت) أدى إلى تحسين استدعاء البيانات الحديثة مع الحفاظ على وقت الاستجابة الإجمالي الثابت. مستويات الثبات: تنازلات لا يمكن تجاهلها تدعم Milvus أربعة مستويات من الثبات - من الثبات القوي إلى الثبات النهائي. إليك كيف يمكن التفكير فيها: الثبات القوي (Strong): مناسبة للوحات التحكم والشاشات الإدارية، لكنها قد تزيد من وقت الاستجابة. ثبات محدود (Bounded Staleness): مناسبة للمراقبة وإعادة البث المباشر، حيث قد يتأخر القراءات قليلًا. ثبات الجلسة (Session): مناسبة للدردشات التفاعلية والبحث الشخصي، حيث يتطلب استخدام رقم التعريف الجلسة (Session ID). ثبات نهائي (Eventually Consistent): مناسبة للمعالجة المجمعة والسجلات، حيث قد يتم تفويت الإدخالات الحديثة. الفهرسة ليست وظيفة خلفية واحدة من الخيارات التصميمية التي أقدرها في Milvus هي أنها لا تعتبر الفهرسة مهمة خلفية سوداء. يمكنك التحكم في: معدل الفهرسة (Rate): تحكم في كمية البيانات التي يتم فهرستها في وقت معين. الترتيب (Order): تحكم في ترتيب البيانات أثناء الفهرسة. الترقيم (Partitioning): تقسيم البيانات إلى أقسام لتحسين الأداء. هذه الخيارت مهمة لحالات الاستخدام مثل البحث عن المنتجات في التجارة الإلكترونية، حيث تتغير توزيعات التمثيلات بشكل متكرر. التحكم الدقيق في الفهرسة يتيح لك التحسين ل: دقة الاستعلام (Recall) وقت الاستجابة (Latency) كفاءة الاستخدام (Efficiency) ملاحظات حول الانتشار خلال اختباراتي، توصلت إلى بعض الدروس المهمة: إدارة الذاكرة: تأكد من تعيين كمية كافية من الذاكرة لكل خدمة. موازاة العمليات: استخدم موازاة متعددة العقد لتحسين الأداء. استدامة البيانات: اتبع أفضل الممارسات لضمان استدامة البيانات والتعافي من الأعطال. ما أقوم بدراسة متابعته بعد بناء بعض النماذج الأولية والمعايير حول هذه البنية، أنا الآن أدرس: تحسين الفهرسة: كيفية تحقيق أفضل أداء للفهرسة في بيئات كبيرة الحجم. توسع النظام: كيفية تحقيق توسع أفقًا وعموديًا بشكل فعال. إدارة الكластرات: استراتيجيات لإدارة الكластرات الكبيرة لضمان الأداء والثبات. سأشارك النتائج والمزالق عندما أصل إلى هذه الحواجز. ولكن إذا كنت تقوم بتقييم قواعد بيانات الأشعة اليوم، فلا تقارن فقط الدقة ووقت الاستجابة - اغوص في تفاصيل البنية الداخلية. لأن إذا لم تتوسع البنية، لن يهم أي شيء آخر. تقييم الحدث من قبل المختصين وفقًا للمتخصصين في مجال البيانات الموزعة، يعتبر التصميم رباعي الطبقات لـ Milvus خطوة كبيرة نحو تحقيق أداء فائق في البحث عن الأشعة. يؤكدون على أهمية الفصل بين الخدمات الحسابية المتخصصة لتحسين الموازاة وتقليل وقت الاستجابة. كما يعتقدون أن إدارة المقاطع بشكل مستقل هو مفتاح لتحقيق توازن بين الدقة وكفاءة الاستعلام، وخاصة في مجموعات البيانات الكبيرة. نبذة تعريفية عن Milvus Milvus هو نظام مصدر مفتوح لقاعدة بيانات الأشعة الموزعة، مصمم لدعم البحث عن الشبه في الأبعاد العالية بكفاءة عالية. يتميز ببنية مرنة تسمح بتوسع ديناميكي وتحكم دقيق في الفهرسة والثبات. يستخدم Milvus في مجموعة متنوعة من التطبيقات، من الذكاء الاصطناعي والتعلم الآلي إلى التطبيقات التجارية مثل البحث عن المنتجات في المتاجر الإلكترونية.

Related Links