Dipublikasikan: 11 Desember 2025
Terakhir diperbarui: 11 Desember 2025
Dipublikasikan: 11 Desember 2025
Terakhir diperbarui: 11 Desember 2025
Raymond Kelvin Nando — Avro Binary Encoding merupakan format pengkodean biner yang digunakan dalam ekosistem Apache Avro untuk menyimpan dan mentransmisikan data secara efisien berdasarkan skema terstruktur. Sistem ini dirancang untuk kecepatan, portabilitas, kompatibilitas skema, serta efisiensi ukuran, sehingga menjadi fondasi penting dalam sistem data terdistribusi modern seperti Hadoop, Kafka, dan berbagai platform big data lainnya.
Daftar Isi
Avro Binary Encoding adalah metode serialisasi data yang diatur oleh skema JSON Avro, namun hasil encoding data ditulis dalam format biner yang ringkas, cepat dibaca, dan efisien. Avro memisahkan skema dan data, sehingga data yang di-encode tidak perlu memuat informasi tipe secara berulang.
Ciri utama Avro Binary Encoding:
Encoding Avro lebih efisien dibanding JSON atau XML karena menghilangkan deskripsi struktur data pada setiap objek dan hanya menyimpan nilai-nilai sesuai urutan dalam skema.
Avro dikembangkan oleh Apache Software Foundation sebagai bagian dari proyek Hadoop pada akhir 2000-an. Kebutuhan akan sistem serialisasi yang cepat dan portabel menjadi pendorong utama perancangannya. Pada waktu itu, format seperti Thrift dan Protocol Buffers sudah ada, namun Avro menawarkan keunggulan integrasi lebih erat dengan ekosistem Hadoop dan dukungan evolusi skema yang lebih fleksibel.
Avro menjadi standar dalam banyak sistem streaming seperti Apache Kafka, karena mendukung versioning skema dan memungkinkan komunikasi antara produser dan konsumer data yang menggunakan skema berbeda namun kompatibel. Seiring berjalannya waktu, Avro berkembang menjadi komponen penting dalam data lake, pipeline ETL, distributed messaging, serta aplikasi event-driven modern.
Prinsip Avro Binary Encoding mengacu pada pengkodean nilai berdasarkan tipe data dalam skema Avro. Setiap elemen memiliki aturan biner spesifik.
Skema:
Record {
name: string,
age: int
}
Input:
name = Alice
age = 30
Output biner (disederhanakan):
05 41 6C 69 63 65 3C
Penjelasan:
05 → panjang string 5
41 6C 69 63 65 → “Alice”
3C → zig-zag varint untuk 30
TRUE → 01
FALSE → 00
LONG 150 → zig-zag 300 → varint: AC 02
Output:
01 AC 02
Array: [10, 20, 30]
Block count: 3
Nilai (zig-zag → varint):
10 → 14
20 → 28
30 → 3C
Output:
06 14 28 3C 00
Union: [“null”, “string”]
Value: “Hi”
Index string = 1 → varint 02
String “Hi” → length 2 → 04
Data: 48 69
Output:
02 04 48 69
Fixed(4) = 0A 0B 0C 0D
Output:
0A 0B 0C 0D
Map: { “x”: 100 }
Block count = 1
Key length = 1 → 02
Key: 78
Value: zig-zag 200 → C8 01
Output:
02 02 78 C8 01 00
Record:
id: long
tags: array string
active: boolean
Input:
id = 1
tags = [“red”, “blue”]
active = true
Berbagai panjang & varint menghasilkan output modular. Representasi biner akan menyerupai:
02 06 06 72 65 64 08 62 6C 75 65 01
Kelebihan:
Kekurangan: