Avro Binary Encoding

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.

Pengertian Avro Binary Encoding

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:

  • Menggunakan skema untuk menentukan struktur data.
  • Data ditulis dalam format biner padat.
  • Tidak membawa metadata tipe di dalam payload.
  • Mendukung tipe primitif, kompleks, array, map, union, dan record.
  • Sangat cocok untuk transmisi data performa tinggi.

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.

Sejarah Perkembangan Avro Binary Encoding

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.

Orang lain juga membaca :  Adaptive Arithmetic Coding

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 Dasar dan Metode Avro Binary Encoding

Prinsip Avro Binary Encoding mengacu pada pengkodean nilai berdasarkan tipe data dalam skema Avro. Setiap elemen memiliki aturan biner spesifik.

  1. Penggunaan Skema
    Semua data di-encode mengikuti urutan field pada skema.
    Data tidak memiliki tag atau label field, sehingga ukuran lebih kecil.
  2. Tipe Primitif
    BOOLEAN: 0x00 (false), 0x01 (true)
    INT/LONG: menggunakan zig-zag encoding + variable-length encoding.
    FLOAT/DOUBLE: disimpan dalam 4/8 byte IEEE 754.
    STRING/BYTES: ditulis sebagai panjang (varint) + data.
  3. Tipe Kompleks
    Record: nilai field diurutkan sesuai definisi skema.
    Array: ditulis dalam block count → block size → elemen.
    Map: jumlah entri, lalu key dan value.
    Union: ditandai dengan indeks tipe dalam union.
    Enum: integer index.
    Fixed: disimpan sebagai byte-array dengan panjang tetap.
  4. Zig-Zag Encoding
    Digunakan untuk integer agar angka negatif tetap efisien:
    0 → 0
    -1 → 1
    1 → 2
    -2 → 3
    2 → 4
  5. Variable-Length Encoding
    Bilangan ditulis menggunakan varint, sehingga angka kecil memakai byte lebih sedikit.
  6. Optimasi Tanpa Header
    Tidak seperti format lain, Avro Binary Encoding tidak menyimpan tipe data atau nama field dalam payload biner.
  7. Evolusi Skema
    Skema dapat berubah dari waktu ke waktu, selama kompatibilitas dipertahankan:
  • Backward compatible
  • Forward compatible
  • Fully compatible
  1. Penggunaan Codec
    Avro Binary dapat dikompresi dengan codec seperti Snappy, Deflate, atau Zstandard.

Contoh Input → Output Avro Binary Encoding

Contoh 1: Record sederhana

Skema:
Record {
name: string,
age: int
}

Orang lain juga membaca :  Base62

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

Contoh 2: Boolean dan Long

TRUE → 01
FALSE → 00
LONG 150 → zig-zag 300 → varint: AC 02

Output:
01 AC 02

Contoh 3: Array

Array: [10, 20, 30]

Block count: 3
Nilai (zig-zag → varint):
10 → 14
20 → 28
30 → 3C

Output:
06 14 28 3C 00

Contoh 4: Union

Union: [“null”, “string”]
Value: “Hi”

Index string = 1 → varint 02
String “Hi” → length 2 → 04
Data: 48 69

Output:
02 04 48 69

Contoh 5: Fixed

Fixed(4) = 0A 0B 0C 0D

Output:
0A 0B 0C 0D

Contoh 6: Map

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

Contoh 7: Record kompleks

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 Avro Binary Encoding

Kelebihan:

  • Sangat cepat dan ringan.
  • Kompatibel dengan evolusi skema.
  • Efisien untuk penyimpanan data besar.
  • Ideal untuk streaming dan messaging seperti Kafka.
  • Tidak membawa metadata field → ukuran berkurang.
  • Mudah diintegrasikan dengan ekosistem Hadoop.
  • Mendukung kompresi.
  • Portabel lintas bahasa pemrograman.

Kekurangan:

  • Membutuhkan skema untuk decoding.
  • Debugging lebih sulit dibanding JSON.
  • Tanpa skema yang tepat → data tidak dapat dibaca.
  • Hanya cocok untuk sistem yang mengelola skema secara terpusat.
  • Representasi biner tidak ramah manusia.
Orang lain juga membaca :  AX.25 Encoding

Referensi

  • Apache Software Foundation. (2024). Avro Documentation.
  • White, T. (2015). Hadoop: The Definitive Guide.
  • Kleppmann, M. (2017). Designing Data-Intensive Applications.
  • Noghabi, S. A. et al. (2020). The Evolution of Apache Kafka.
  • Lin, J., & Ryaboy, D. (2013). Scaling Big Data with Hadoop.

Citation

Previous Article

Audio ADPCM

Next Article

AX.25 Encoding

Citation copied!