Format Atlas

مقارنة

Avro أم Protocol Buffers

يربط Apache Avro البيانات بمخطط الكاتب ويوائمها مع مخطط القارئ. أما Protocol Buffers (Protobuf) فيولد الشيفرة من تعريفات `.proto` وأرقام الحقول، ثم يرمز الرسائل بتنسيق wire ثنائي مرقم.

أي تنسيق يجب أن تختار؟

فكّر في Avro عندما ينتقل المخطط مع البيانات وتفيد مواءمة مخططي الكاتب والقارئ بين بيئات التشغيل. يناسب Protobuf الأنظمة التي تولد أنواعاً من `.proto` وتتبادل الرسائل عبر RPC أو حدود الخدمات.

مناسب لـ Avro

تبادل سجلات بمخطط محدد

  • الأحداث والتدفقات التي تتبع نسخ المخطط

مناسب لـ مخطط Protocol Buffers

تعريف بنية رسائل Protocol Buffers · مشاركة عقود البيانات بين لغات البرمجة

  • إنشاء شيفرة خاصة بكل لغة باستخدام protoc
  • تعريف رسائل RPC والاتصال بين الخدمات

المعلومات الأساسية

البندAvroمخطط Protocol Buffers
الامتداد.avro.proto
نوع MIMEapplication/avrotext/plain
الاستخدامات الشائعةتبادل سجلات بمخطط محددتعريف بنية رسائل Protocol Buffers · مشاركة عقود البيانات بين لغات البرمجة
طريقة الفتحاستخدم أداة Avro لفحص المخطط والحقول والأنواع والسجلات.افتحه في محرر نصوص أو بيئة تطوير تدعم Protocol Buffers. للتحقق من الصياغة وملفات الاستيراد، ترجمه بإصدار protoc وإعداداته المستخدمة في المشروع.
التصدير أو التحويلعند التحويل إلى JSON أو Parquet، تحقق من الأسماء والأنواع والقيم الفارغة والأنواع المنطقية وعدد السجلات والتوافق.عند الانتقال إلى صيغة مخطط أخرى، طابق الأنواع وأرقام الحقول والقيم الافتراضية والتعدادات وقواعد التوافق. ثم أنشئ الشيفرة واختبر بيانات فعلية. تغيير الامتداد إلى .json أو امتداد ثنائي لا يحوّل الملف.

الاختيار حسب الاستخدام

الأحداث والتدفقات التي تتبع نسخ المخطط

تبادل سجلات بمخطط محدد

Avro

إنشاء شيفرة خاصة بكل لغة باستخدام protoc

تعريف بنية رسائل Protocol Buffers · مشاركة عقود البيانات بين لغات البرمجة

مخطط Protocol Buffers

تعريف رسائل RPC والاتصال بين الخدمات

تعريف بنية رسائل Protocol Buffers · مشاركة عقود البيانات بين لغات البرمجة

مخطط Protocol Buffers

نقطة أساسية 1

يمكن لملف Avro Object Container تخزين مخطط الكاتب مع كتل البيانات. لا تتضمن بيانات Protobuf wire تعريف المخطط، لذا يجب توزيع ملفات `.proto` أو الواصفات وإدارتها منفصلة.

مزيد من التفاصيل حول الاختلافات

نقطة أساسية 2

يحدد Avro مواءمة مخططي الكاتب والقارئ. يستخدم Protobuf أرقام الحقول كمعرفات wire ويتطلب قواعد تطور مثل عدم إعادة استخدام الأرقام المحذوفة.

مزيد من التفاصيل حول الاختلافات

مزيد من التفاصيل حول الاختلافات

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

  • يمكن لملفات Avro الحاوية تضمين المخطط وكتل البيانات. رسائل Protobuf الثنائية ليست ذاتية الوصف دون مخطط أو واصف مطابق.
  • يوائم Avro اختلافات المخططات وفق قواعده. يعتمد توافق Protobuf على أرقام الحقول وأنواع wire ودلالة الحضور وممارسات التطور الآمنة.
  • لا يمكن تبادل تنسيقي wire مباشرة. طابق union/oneof وoptional والحضور والقيم الافتراضية والتعداد والحقول المجهولة والأنواع المنطقية وأرقام الحقول وتغييرات الأنواع، ثم اختبر عملاء فعليين قدامى وجدد.

الأسئلة الشائعة

هل يستطيع Avro وProtobuf قراءة الملفات الثنائية لبعضهما مباشرة؟

لا. الترميزان مختلفان. يتطلب التحويل تعييناً صريحاً للحقول والأنواع وفحوصاً للقيم الافتراضية والحضور والحقول المجهولة وتطور المخطط.

مزيد من المعلومات

المراجع والمواصفات