bson – binary json nedir?

Bson, yani Binary JSON, JSON’ların binary şekilde encode edilmiş halidir.

Bson, tıpkı json gibi, içinde array ve döküman barındırırlar. Temelde 4 tipten oluşurlar, bunlar;

byte 1 byte (8-bits)
int32 4 bytes (32-bit signed integer)
int64 8 bytes (64-bit signed integer)
double 8 bytes (64-bit IEEE 754 floating point)

Çok küçük bir örnek vermek gerekirse;

{"hello": "world"}	→	"\x16\x00\x00\x00\x02hello\x00\x06\x00\x00\x00world\x00\x00"

Bu adresten, başka örneklere ve içerisinde saklanan söz dizimlerine ulaşabilirsiniz.

Önemli olan bir nokta, MongoDB, ağ ve disk yönetiminde BSON kullanmaktadır. Çoğu dil için, MongoDB’nin driverı mevcuttur (C, C++, Java, Perl, PHP, Python, Perl, Ruby vs.) Onların listesine de buradan ulaşabilirsiniz.

İyi çalışmalar.

Ubuntu MongoDb kurulumu (ubuntu mongodb installation)

MongoDb’yi Ubuntumuza kurmak için, öncelikle install edeceğimiz yerin GnuPG (GNU Privacy Guard) (GPG) keyini bilgisayarımıza tanıtıyoruz.

Terminale girip;

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

yazmamız gerekiyor. (Bu key, MongoDB’nin kendi internet sitesinde verilmiş.)

Sonrasında da, MongoDB’yi indireceğimiz yeri bilgisayarımıza tanıtmamız gerekiyor. Bunun için de /etc/apt/sources.list.d dizinini açıyoruz ve burada 10gen.list adında bir dosya yaratıyoruz (touch komutu ile yapabiliriz). Sonrasında bu dosyayı bir editör ile açıp aşağıdaki satırı ekleyip kaydediyoruz.

deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen

Ardından terminale girip sudo apt-get update yapıyoruz.

Şimdi sıra geldi MongoDB’yi kurmaya! 😀

Terminalimizi açıp, aşağıdaki satırı uyguluyoruz, ve MongoDB, Ubuntumuza kurulmuş oluyor.

sudo apt-get install mongodb-10gen

Terminale mongo yazdığımız zaman MongoDB shell’i karşımıza çıkıyor. Test database’inin test collectionunda deneme yapmamızı sağlıyor ilk açtığımızda. Aşağıdaki satırlarla ufak bir deneme yapabiliriz.

> db.test.save({a:1})
> db.test.find()

Bir sonraki yazımda, Ubuntu üzerinde çalışırken MongoDB’yi PHP ile nasıl kullanacağımızı anlatacağım.

Mongodb için phpmoadmin

Php ile mysql in yönetim toolu olan phpMyAdmin den sonra şimdi de mongo db için de bir php toolu yapmışlar. Adı phpmoadmin. PhpMyadmin kadar geniş kapsamlı ve kullanışlı olmasa da işinizi görebilecek özelliklerin hepsine sahip. Tabi ki Windows ortamında mongod.exe yi çalıştırdktan sonra girebiliyorsunuz.

İşinize yarayacağını düşünüyorsanız, tek dosya. Çok pratik. http://www.phpmoadmin.com adresinden indirebilirsiniz.

Sql’den Mongo’ya eşleşmeler (Sql to Mongo mapping chart)

MySQL executable Oracle executable Mongo executable
mysqld oracle mongod
mysql sqlplus mongo

 

MySQL term Mongo term
database database
table collection
index index
row BSON document
column BSON field
join embedding and linking
primary key _id field

 

MongoDB sorguları JSON (BSON) nesneleri olarka belirtilir.  Bu sorguları sayfanın en altındaki linkten tıklayarak görebilrisiniz.

MOngoDB’deki sorgu ifadesi (ve index key gibi diğer şeyler ) JSON (BSON) olarak gösterilir. fakat, gerçek fiil(örneğin find() metodundaki find kelimesi) bir yazılım dili için bu kelimedir. (bu da şu an javascript shell i için böyledir. mongo shell den çalıştırılabilir) Bu fiiller (yani find gibi metodların isimleri ) yazılım dilinden diline değişkenlik gösterebilir. Örneğin bu javada find değil de fetch olabilir.

Daha fazla eşleşme bilgisi için lütfen mongodb.org sitesine bakınız : :http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart

mongodb terimler ve fikirler

Geçen günlerde yazdığım bir yazıda mongo db yi windows 7 ortamında nasıl çalıştırabilceğimizden bahsetmiştik. Bugün de mongo db de geçen terimlerin bizim alışkın olduğumuz terimler cinsinden ifadelerinden bir kaç tanesini izah etmek istiyorum.

database :  database demek. Aynı yani.

  • show dbs komutu : kayıtlı veritabanları listeler.
  • use another_db  komutu : diğer bir veritabanını kullanmayı söyler.
  • show collections komutu : (o databasedeki collectionları gösterir. nam-ı diğer show tables komutuyla aynı. )

collection : table demek.

  • db.accounts.count(); : account collectionındaki (accounts tablosundaki) veri sayısını verir.
  • db.accounts.find(); account collectionındaki (accounts tablosundaki) verileri çeker.
  • db.accounts.find.foreach(function(doc){print(tojson(doc));}) : foreach ile accounts tablosundaki tüm verileri gezip rowları (satırları) json formatında basar.

doc : row demek. Yani satır demek.

  • var cursor = db.colors.find(); cursor.next(); şeklinde Array iteratör gibi kullanımı olabiliyor.
  • Select * from colors where name=’green’  : db.colors.find({name:’green’})

 

OKUDUKLARIM :

Mongo db, diğer veritabanları gibi, ifadeyi parse etmeyle çok fazla vakit harcamıyor. İfade imla kuralları ile değil de, yazılım kuralları ile tasarlandığından ötürü (örneğin Select * from bla_bla where foo>bar gibi ifadelerin yerine bildiğimiz fonksiyon parametre ve metod gibi ifadeler ile , yani bilgisayarın daha hızlı anlamlandırabileceği ifadeler ile yazdığımızdan) daha hızlı ve daha modelli çalışmamız mümkün.

Okuduklarıma göre genelde mysqlin yerine çok hızlı olarak devreye alınabilir gözüküyormuş. Tabi piyasadaki hosting firmalarının bir çoğu henüz serverlerinde mongodb desteğini sunmuyor. Ancak bu gelişmekte olduğu gözükebiliyor.

Size tavsiyem, önünüzdeki basit sayılabilecek bir projenizde mongodb’den faydalanarak yapmanız, size hem basitçe bu db yi kullanmayı, hem de az da olsa avantajlarını ve yapısını anlamanıza yardımcı olacaktır. Ben de kendim için hazırlayacğaım küçük bir projede kullanmayı düşünüyorum. Bunu da sizlerle yine paylaşacağım.

kaynak : http://www.slideshare.net/jnunemaker/why-mongodb-is-awesome