Format Atlas

Bandingkan

Avro atau Protocol Buffers

Apache Avro mengaitkan data dengan skema penulis dan menyelesaikannya terhadap skema pembaca. Protocol Buffers (Protobuf) menghasilkan kode dari definisi `.proto` dan nomor field, lalu mengodekan pesan dalam wire format biner bernomor.

Format mana yang sebaiknya dipilih?

Pertimbangkan Avro saat skema ikut bersama data dan resolusi skema penulis/pembaca berguna lintas runtime. Protobuf cocok untuk sistem yang membuat kode bertipe dari `.proto` dan bertukar pesan melalui RPC atau batas layanan.

Cocok untuk Avro

Menukar catatan dengan skema terdefinisi

  • Peristiwa dan alur data dengan versi skema

Cocok untuk Skema Protocol Buffers

Menentukan struktur pesan Protocol Buffers · Berbagi kontrak data lintas bahasa pemrograman

  • Menghasilkan kode untuk berbagai bahasa dengan protoc
  • Menentukan pesan untuk RPC dan komunikasi antarlayanan

Informasi dasar

ItemAvroSkema Protocol Buffers
Ekstensi.avro.proto
Tipe MIMEapplication/avrotext/plain
Penggunaan umumMenukar catatan dengan skema terdefinisiMenentukan struktur pesan Protocol Buffers · Berbagi kontrak data lintas bahasa pemrograman
Cara membukaGunakan alat Avro untuk memeriksa skema, bidang, tipe, dan catatan.Buka dengan editor teks atau IDE yang mendukung Protocol Buffers. Untuk memeriksa sintaks dan import, kompilasi memakai versi dan konfigurasi protoc yang digunakan proyek.
Ekspor atau konversiKe JSON atau Parquet, periksa nama bidang, tipe, null, tipe logis, jumlah catatan, dan kompatibilitas skema.Saat berpindah ke format skema lain, petakan tipe, nomor field, nilai default, enum, dan aturan kompatibilitas. Setelah itu, hasilkan kode dan uji dengan data nyata. Mengganti ekstensi menjadi .json atau ekstensi biner tidak mengonversi file.

Pilih menurut penggunaan

Peristiwa dan alur data dengan versi skema

Menukar catatan dengan skema terdefinisi

Avro

Menghasilkan kode untuk berbagai bahasa dengan protoc

Menentukan struktur pesan Protocol Buffers · Berbagi kontrak data lintas bahasa pemrograman

Skema Protocol Buffers

Menentukan pesan untuk RPC dan komunikasi antarlayanan

Menentukan struktur pesan Protocol Buffers · Berbagi kontrak data lintas bahasa pemrograman

Skema Protocol Buffers

Poin utama 1

Berkas Avro Object Container dapat menyimpan skema penulis bersama blok data. Wire data Protobuf tidak menyertakan definisi skema, sehingga file `.proto` atau descriptor perlu didistribusikan dan dikelola terpisah.

Perbedaan lebih lanjut

Poin utama 2

Avro menentukan resolusi antara skema penulis dan pembaca. Protobuf memakai nomor field sebagai pengenal wire dan mengandalkan aturan evolusi seperti tidak memakai ulang nomor yang dihapus.

Perbedaan lebih lanjut

Perbedaan lebih lanjut

Gunakan Avro bila berkas perlu membawa skema penulis dan pembaca perlu menyelesaikan skema. Gunakan Protobuf bila kelas pesan hasil generasi dan kontrak nomor field stabil sesuai. Keduanya memerlukan disiplin kompatibilitas; uji pembaca dan penulis lama serta baru ke arah yang dibutuhkan.

  • Berkas kontainer Avro dapat menyematkan skema dan blok data. Pesan biner Protobuf tidak mendeskripsikan diri tanpa skema atau descriptor yang cocok.
  • Avro menyelesaikan perbedaan skema menurut aturannya. Kompatibilitas Protobuf bergantung pada nomor field, wire type, semantik presence, dan praktik evolusi yang aman.
  • Wire format keduanya tidak dapat saling dipertukarkan. Petakan union/oneof, optional dan presence, nilai bawaan, enum, field tak dikenal, tipe logis, nomor field, dan perubahan tipe; lalu uji klien lama dan baru yang nyata.

Pertanyaan umum

Dapatkah Avro dan Protobuf langsung membaca berkas biner satu sama lain?

Tidak. Encoding berbeda. Konversi memerlukan pemetaan field dan tipe secara eksplisit serta pemeriksaan nilai bawaan, presence, field tak dikenal, dan evolusi skema.

Pelajari lebih lanjut

Referensi dan spesifikasi