BSON (Binary JSON) adalah serialisasi berkode biner dari dokumen mirip JSON yang digunakan dalam basis data MongoDB. Artikel ini memberikan ikhtisar tentang BSON, format data biner yang digunakan oleh MongoDB untuk menyimpan dokumen.
Artikel ini menjelaskan apa itu BSON, bagaimana BSON memperluas kemampuan JSON, dan perbedaan utama antara BSON dan JSON. Selain itu, artikel ini juga menjelaskan bagaimana Apidog menangani hal ini secara otomatis. Artikel ini juga menunjukkan contoh operasi CRUD dasar dan perintah basis data menggunakan Apidog untuk berinteraksi dengan MongoDB.
Apa itu Bson di MongoDB?
BSON (Binary JSON) adalah format data utama yang digunakan dalam basis data MongoDB. Beberapa hal penting yang perlu diketahui tentang BSON di MongoDB:
- BSON adalah representasi biner dari dokumen JSON. BSON memperluas JSON dengan tipe data tambahan seperti tanggal, stempel waktu, data biner, dll.
- MongoDB menyimpan semua data secara internal sebagai BSON. Saat Anda memasukkan dokumen ke MongoDB, dokumen tersebut pertama-tama diubah menjadi BSON sebelum ditulis ke disk.
- BSON menyandikan informasi tipe dan panjang, yang memungkinkan MongoDB untuk memindai dan melintasi dokumen secara efisien tanpa memeriksa dan menafsirkan setiap dokumen. Hal ini meningkatkan kinerja.
- BSON dirancang agar ringan, mudah dilintasi, dan efisien untuk menyandikan/mendekode. Hal ini menjadikannya sangat cocok sebagai format penyimpanan dan pertukaran data untuk MongoDB.
- Ekstensi file default untuk file BSON adalah .bson. Alat Mongo seperti Mongoexport dapat digunakan untuk mengekspor data MongoDB ke BSON untuk pencadangan atau migrasi.
- BSON dirancang agar sangat mudah dilintasi. Kueri MongoDB menggunakan indeks untuk dengan cepat menemukan dan mengambil hasil tanpa memindai setiap dokumen.
Struktur Dokumen BSON
BSON (Binary JSON) adalah serialisasi berkode biner dari dokumen mirip JSON yang digunakan dalam basis data MongoDB. Dokumen BSON berisi pasangan bidang-nilai yang terurut mirip dengan objek JSON.
Bidang dapat berupa string UTF-8 yang valid, sedangkan nilai dapat berupa salah satu dari beberapa tipe data BSON seperti string, integer, double, data biner, array, dokumen, boolean, tanggal, null, dll. Struktur dokumen BSON dimulai dengan integer 4-byte yang menunjukkan ukuran total dokumen.
Berikutnya adalah pasangan bidang-nilai yang berisi bidang "_id" yang secara unik mengidentifikasi dokumen. Konten dokumen mengikuti dengan setiap pasangan bidang-nilai yang disandikan dalam format biner tertentu berdasarkan tipe data.
Contoh yang menunjukkan struktur dokumen BSON:
// Contoh dokumen BSON
{
_id: ObjectId("507f1f77bcf86cd799439011"), // ID unik 12-byte
name: "John Doe", // String
age: 35, // Integer
address: { // Dokumen tersemat
street: "123 Main St",
city: "Anytown",
state: "CA"
},
hobbies: ["reading", "hiking","swimming"], // Array
graduated: true, // Boolean
birthday: ISODate("1980-05-15T00:00:00Z"), // Tanggal
data: BinData(0, "SGVsbG8gV29ybGQ="), // Data biner
ts: Timestamp(1590583045633, 1) // Stempel waktu
}
Hal-hal penting yang perlu diperhatikan:
- Bidang
_id
secara unik mengidentifikasi dokumen - Pasangan bidang-nilai memiliki urutan yang ditentukan
- Mendukung tipe data tambahan seperti ISODate, ObjectId, dll
- Dapat menyematkan dokumen dan array
- Data biner disimpan secara efisien
Apa perbedaan antara JSON dan BSON?
Berikut adalah perbedaan utama antara JSON dan BSON:
- Penyandian: JSON berbasis teks dan disandikan dalam UTF-8, sedangkan BSON disandikan secara biner.
- Tipe data: JSON mendukung tipe data terbatas seperti string, angka, boolean, array, dan objek. BSON mendukung tipe tambahan seperti tanggal, data biner, ekspresi reguler, dll.
- Efisiensi: Penyandian BSON biner memungkinkan penyimpanan dan pencarian data yang lebih efisien dibandingkan dengan JSON. Dokumen BSON memiliki awalan panjang dan tidak mengandung spasi kosong sehingga dapat diurai lebih cepat.
- Pengurutan: Pasangan bidang-nilai dalam dokumen BSON diurutkan sehingga memungkinkan lintasan dan pengindeksan yang efisien. Objek JSON tidak memiliki jaminan pengurutan.
- Fleksibilitas: BSON memberikan beberapa fleksibilitas dibandingkan JSON seperti memungkinkan nama bidang untuk mengandung karakter khusus dan Unicode.
- Penggunaan: JSON adalah format umum yang digunakan secara luas di seluruh web dan aplikasi. BSON digunakan secara khusus dalam basis data MongoDB sebagai representasi data utama.
- Skema: JSON tidak memiliki skema secara default, sedangkan MongoDB memungkinkan penerapan skema untuk dokumen BSON melalui aturan validasi.
- Nilai null: JSON memiliki satu nilai null. BSON membedakan antara bidang null dan bidang yang hilang.
Konversi JSON dan BSON di MongoDB dengan Apidog
Apidog adalah toolkit API yang menyederhanakan pengembangan API. Apidog menawarkan MongoDB sebagai salah satu pilihan basis data terintegrasinya. Dengan menggunakan MongoDB dengan Apidog, Anda dapat menyimpan mock dan pengujian API di MongoDB sebagai backend.
Respons API mock yang dikirimkan oleh Apidog dapat didorong oleh data yang disimpan dalam basis data MongoDB. Hal ini memungkinkan Apidog untuk memanfaatkan MongoDB sebagai sumber data persisten untuk API yang di-mock. Selanjutnya, kami akan menjelaskan hubungan JSON dan BSON dengan Anda.
MongoDB menyimpan data sebagai dokumen BSON, yang dapat dilihat sebagai superset dari JSON. Saat mengoperasikan basis data MongoDB dengan Apidog, JSON digunakan untuk menyusun konten. Apidog akan secara otomatis memetakan setiap bidang ke tipe data BSON yang sesuai berdasarkan konten JSON yang sebenarnya.
Satu kasus khusus adalah bidang _id
. Menurut konvensi MongoDB, setiap dokumen harus memiliki bidang _id
sebagai kunci utama, dengan ObjectId
sebagai tipe data default alih-alih string
.
Dengan Apidog, untuk mendeklarasikan bidang _id
dari tipe ObjectId
, gunakan format string reguler. Jika konten string sesuai dengan format ObjectId
, Apidog akan secara otomatis memetakannya ke tipe ObjectId
BSON.
Misalnya, di MongoDb ada dokumen BSON seperti:
Copy code
{
_id: ObjectId('654e056de3662b1c09477cc3
'),
name: "Apidog"
}
Kemudian untuk mengkueri dokumen ini berdasarkan _id
dengan Apidog, JSON yang dimasukkan ke dalam "Kondisi Kueri" adalah:
Copy code
{
"_id": "654e056de3662b1c09477cc3"
}
