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.
]]>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.
]]>Persistent connection, bağlantının sürekli açık tutulduğu bağlanma biçimine denir.
Normal olarak, yazılım dilleri bir veritabanına bağlanacağı zaman, bilgisayardaki bir port üzerinden veritabanına bağlantı açar. Daha sonra kodun sonunda, veya isteğe bağlı bir yerine bağlantıyı kapatır. Ayrıca connection kapatılmadıysa, yazılım dillerinde otomatik kapatma seçenekleri de bulunmaktadır. Örneğin 5 sn sonra kapat, 10 sn sonra kapat, biter bitmez kapat gibi seçenekler mevcuttur.
Veritabanı bağlantısının otomatik. olarak açılıp kapatılması, en az ayar gerektiren şey olabilir. Ancak performansınızı persistent connection ile artırabilirsiniz.
Bir web sayfası isteği geldi diyelim. Yazılım dili kodu çalıştırdı. Varsayalım ki 1 Query gerekti bu sayfa için.
1- Hazırda bir bağlantı yok. İşletim sisteminden ilgili portu kullanmak için müsade istedi.
2- Daha sonra ilgili porta bağlandı.
3- Sonra querysini çalıştırdı.
4- Sonucunu ilgili porttan okudu.
5- Kod bitince de mysql bağlantısını kapattı.
persistent connection bu noktada, 1. aşamayı hızlandırır, 2. aşamayı direkt ortadan kaldırır, 4. aşamayı hızlandırır ve 5. aşamayı ortadan kaldırır.
…
Baktığımızda query önemli bir maliyet olabilir tabi ki querysine göre değişir ancak, yüklü bir serverda bahsettiğim durumun bariz hız kazandıracağı aşikar.
—-
Persistent connectionın diğer bir avantajı da , yüksek load altında, saçmalayan bir yapıya müsade etmemesidir. Persistent connection sayınızı yazılım dilinden ayarladığınızda, diyleim ki 200 verdiniz, sitenize aynı anda 1000 kişi bile gelse, serverinizin stabilliğini korur. Otomatik olarak bir sürü bağlantı açtırsaydık, bunları yönetmemiz imkansız olacaktır. (tabi kullanıcılar mysql bağlanamadı hatası alırlar, ancak siteniz çökmez bu daha önemlidir, en önemlisi de sistemi ince ayar yaparak bu ihtiyaçları da karşılayabilir hale getirmeniz sizin elinizdedir.)
Mysql olarak anlattık hep, mysql de persistent connection kullanmanız inanılmaz kolay. tek yapacağınız mysql_connect yerine mysql_pconnect kullanmanız. Bir de eğer mysql_close kullanıyorsanız, bunlar kodunuzdan kaldırmanız. (tabi ki başka bir database e bağlanacaksanız o ayrı durum)
—–
Bu sadece mysql için değil hemen hemen tüm veritabanlarında ortak olan bir özelliktir.
—
Hele ki database serverini ayrı bir server olarak kullanıyorsanız, ve bu makina sadece database e özel bir makina ise şiddetle tavsiye ederim. Ben aktif olarak mysql ve mongoda persistent connection kullanıyorum.
dipnot : Mysql ve Mongo persistent connectionları için PHP’de mod_php ile Apache ‘yi tercih etmeyiniz. Nginx veya lighthttpd yanında kurulu bir phpfcgi(php fast cgi), yüksek load altında apacheden hem çok daha stabil çalışıyor, hem de performans olarak %500 den fazla hızlı çalışıyor. En önemlisi, yapacağınız ayarları “DOĞRU” olarak çalıştırıyor.
]]>İşinize yarayacağını düşünüyorsanız, tek dosya. Çok pratik. http://www.phpmoadmin.com adresinden indirebilirsiniz.
]]>| 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
]]>database : database demek. Aynı yani.
collection : table demek.
doc : row demek. Yani satır demek.
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
]]>Download linkinden 32 veya 64 bit olan (windowsunuzun bit’ine göre) önceden built edilmiş versiyonlardan birini indirmeniz gerekiyor. (Production versiyonlarından en güncelini tercih ediniz) (kendiniz de build edebilirsiniz fakat bence buna gerek yok. ) İndirdiğiniz şey bir zip olduğundan bunu açmanız gerekiyor. (Bu noktada kullandığınız mongo versiyonunu unutmamanız için versiyon dosyasını aynı klasörde saklamanızda yarar var).
Varsayılan olarak bu şekilde tanımlı olduğu için, c:/ dizininde data adlı bir klasör ve onun da içinde db diye bir klasör açmanız yeterli. Fakat ille de varsayılanı kullanmayacağım diyorsanız, mongod.exe yi –dbpath parametresi ile veritabanı ana yolunu verebilirsiniz. (Ben varsayılanı kullanmayı tercih ettim).
mongod.exe asıl çalıştırılması gereken dosyadır. (Server) mongod.exe –help yazarak opsiyonları görebilirsiniz. mongo.exe yönetici kısmıdır. Yani mongod.exe yi çalıştırdıktan sonra , mongo.exe yi çalıştırıp mysql konsol gibi çalışabilirsiniz. (çekinmeden kurcalayınız.)
Bu yazıda windows için (windows 7 ) mongodb nin kurulmasını sağladık. Tabi ki birkaç küçük denemeden sonra bir yazılım dile ile çalışmasını isteyeceksinizdir. http://www.mongodb.org/display/DOCS/Drivers sayfasında mongodb tarafından desteklenen yazılım dillerinin bir listesini ve ilgili downloadlarını bulabilirsiniz.
Ben de Php ile çalışmasını sağlayan ve küçük bir örnek içeren halini de farklı bir yazıda eklemek istiyorum.
Kurcalayın, siz de çok seveceksiniz.
]]>