BSON (Binary JSON), MongoDB veritabanlarında kullanılan, JSON benzeri belgelerin ikili kodlanmış bir serileştirmesidir. Bu makale, MongoDB tarafından belgeleri depolamak için kullanılan ikili veri formatı olan BSON'a genel bir bakış sunmaktadır.
BSON'un ne olduğunu, JSON yeteneklerini nasıl genişlettiğini ve BSON ile JSON arasındaki temel farklılıkları açıklamaktadır. Ek olarak, Apidog 'un bunu nasıl otomatik olarak ele aldığına da yer vermektedir. Ayrıca, MongoDB ile etkileşim kurmak için Apidog kullanarak temel CRUD işlemleri ve veritabanı komutlarına örnekler göstermektedir.
MongoDB'de BSON Nedir?
BSON (Binary JSON), MongoDB veritabanlarında kullanılan birincil veri formatıdır. MongoDB'de BSON hakkında bilinmesi gereken bazı önemli şeyler şunlardır:
- BSON, JSON belgelerinin ikili bir temsilidir. JSON'u tarihler, zaman damgaları, ikili veriler vb. gibi ek veri türleriyle genişletir.
- MongoDB, tüm verileri dahili olarak BSON olarak depolar. Bir belgeyi MongoDB'ye eklediğinizde, diske yazılmadan önce BSON'a dönüştürülür.
- BSON, tür ve uzunluk bilgilerini kodlar ve bu sayede MongoDB'nin her birini incelemeden ve yorumlamadan belgeleri verimli bir şekilde taramasına ve geçmesine olanak tanır. Bu, performansı artırır.
- BSON, hafif, geçilebilir ve kodlanması/kodunun çözülmesi verimli olacak şekilde tasarlanmıştır. Bu, onu MongoDB için bir veri depolama ve değişim formatı olarak uygun hale getirir.
- BSON dosyaları için varsayılan dosya uzantısı .bson'dur. Mongoexport gibi Mongo araçları, yedeklemeler veya geçişler için MongoDB verilerini BSON'a aktarmak için kullanılabilir.
- BSON, son derece geçilebilir olacak şekilde tasarlanmıştır. MongoDB sorguları, her belgeyi taramadan sonuçları hızlı bir şekilde bulmak ve almak için dizinleri kullanır.
Bir BSON Belgesinin Yapısı
BSON (Binary JSON), MongoDB veritabanlarında kullanılan, JSON benzeri belgelerin ikili kodlanmış bir serileştirmesidir. Bir BSON belgesi, JSON nesnelerine benzer şekilde sıralı alan-değer çiftleri içerir.
Alanlar herhangi bir geçerli UTF-8 dizisi olabilirken, değerler dize, tamsayı, çift, ikili veri, dizi, belge, boole, tarih, null vb. gibi çeşitli BSON veri türlerinden biri olabilir. Bir BSON belgesinin yapısı, toplam belge boyutunu gösteren 4 baytlık bir tamsayı ile başlar.
Ardından, belgeyi benzersiz bir şekilde tanımlayan "_id" alanını içeren bir alan-değer çifti gelir. Belge içeriği, her alan-değer çiftinin veri türüne göre belirli bir ikili formatta kodlanmasıyla devam eder.
Bir BSON belgesinin yapısını gösteren bir örnek:
// Örnek BSON belgesi
{
_id: ObjectId("507f1f77bcf86cd799439011"), // 12 baytlık benzersiz ID
name: "John Doe", // Dize
age: 35, // Tamsayı
address: { // Gömülü belge
street: "123 Main St",
city: "Anytown",
state: "CA"
},
hobbies: ["reading", "hiking","swimming"], // Dizi
graduated: true, // Boole
birthday: ISODate("1980-05-15T00:00:00Z"), // Tarih
data: BinData(0, "SGVsbG8gV29ybGQ="), // İkili veri
ts: Timestamp(1590583045633, 1) // Zaman damgası
}
Dikkat edilmesi gereken önemli noktalar:
_id
alanı belgeyi benzersiz bir şekilde tanımlar- Alan-değer çiftleri tanımlı bir sıraya sahiptir
- ISODate, ObjectId vb. gibi ek veri türlerini destekler
- Belgeleri ve dizileri gömebilir
- İkili veriler verimli bir şekilde depolanır
JSON ve BSON Arasındaki Fark Nedir?
İşte JSON ve BSON arasındaki temel farklar:
- Kodlama: JSON metin tabanlıdır ve UTF-8 ile kodlanırken, BSON ikili kodlanmıştır.
- Veri türleri: JSON, dizeler, sayılar, boole değerleri, diziler ve nesneler gibi sınırlı veri türlerini destekler. BSON, tarihler, ikili veriler, normal ifadeler vb. gibi ek türleri destekler.
- Verimlilik: İkili BSON kodlaması, JSON'a kıyasla daha verimli veri depolama ve arama sağlar. BSON belgeleri bir uzunluk öneki içerir ve boşluk içermez, bu nedenle daha hızlı ayrıştırılabilirler.
- Sıralama: BSON belgelerindeki alan-değer çiftleri sıralıdır ve bu da verimli geçiş ve dizinleme sağlar. JSON nesneleri sıralama garantisi vermez.
- Esneklik: BSON, alan adlarının özel karakterler ve Unicode içermesine izin vermek gibi JSON üzerinde bazı esneklikler sağlar.
- Kullanım: JSON, web ve uygulamalarda yaygın olarak kullanılan genel bir formattır. BSON, birincil veri temsili olarak özellikle MongoDB veritabanlarında kullanılır.
- Şema: JSON varsayılan olarak şemasızdır, MongoDB ise doğrulama kuralları aracılığıyla BSON belgeleri için şemaların uygulanmasına izin verir.
- Null değerleri: JSON'un tek bir null değeri vardır. BSON, null ve eksik alanlar arasında ayrım yapar.
Apidog ile MongoDB'de JSON ve BSON Dönüşümü
Apidog, API geliştirmeyi basitleştiren bir API araç takımıdır. Entegre veritabanı seçeneklerinden biri olarak MongoDB'yi sunar. MongoDB'yi Apidog ile kullanarak, API sahtelerini ve testlerini MongoDB'de arka uç olarak depolayabilirsiniz.
Apidog tarafından sunulan sahte API yanıtları, bir MongoDB veritabanında depolanan veriler tarafından yönlendirilebilir. Bu, Apidog'un sahte API'ler için kalıcı veri kaynağı olarak MongoDB'den yararlanmasını sağlar. Ardından, sizinle JSON ve BSON arasındaki ilişkiyi açıklayacağız.
MongoDB, verileri JSON'un bir üst kümesi olarak görülebilen BSON belgeleri olarak depolar. Apidog ile MongoDB veritabanını çalıştırırken, içeriği oluşturmak için JSON kullanılır. Apidog, her alanı gerçek JSON içeriğine göre karşılık gelen BSON veri türüne otomatik olarak eşleyecektir.
Özel bir durum _id
alanıdır. MongoDB kurallarına göre, her belgenin birincil anahtar olarak _id
alanına sahip olması gerekir ve varsayılan veri türü string
yerine ObjectId
'dir.
Apidog ile, ObjectId
türünde bir _id
alanı bildirmek için, normal dize formatını kullanın. Dize içeriği ObjectId
formatına uygunsa, Apidog bunu otomatik olarak BSON'un ObjectId
türüne eşleyecektir.
Örneğin, MongoDb'de şöyle bir BSON belgesi vardır:
Copy code
{
_id: ObjectId('654e056de3662b1c09477cc3
'),
name: "Apidog"
}
Ardından, bu belgeyi Apidog ile _id
'ye göre sorgulamak için, "Sorgu Koşulu"na konulacak JSON şudur:
Copy code
{
"_id": "654e056de3662b1c09477cc3"
}
