6 Ocak 2014 Pazartesi

MongoDB'ye giriş

Ufaktan ufaktan MongoDB'ye giriş yapıyorum. Yaparken de öğrendiklerimi belki birilerine faydalı olur umuduyla paylaşıyorum.

MongoDB'deki kavramlar ve ilişkilendirilmiş veri tabanlarındaki karşılığı aşağıdaki tabloda yer alıyor. Teknoloji ile ilgili terimlerin türkçeleştirilmesini mantıklı karşılamayanlardan olduğum için orjinal kavramdan uzak kalmayacağım.



RDBMS MongoDB
Database Database
Row Document
Column Field

(RDBMS- Relational Database Management System)


MongoBD'de document ( döküman/belge/row ) kavramı

MongoDB içindeki key-value eklinde tutulan bir kayıt bir document'tır. Her document kendi dinamic  şemasına sahiptir. dinamik şemadan kasıt, aynı collection (tablo) içindeki document'ların aynı yapı ve aynı alanlara sahip olması gerekmiyor demektir. Farklı field da tanımlamalar yapılabilir.
Ortak alanlarda farklı tiplerde veri tutabilir. MongoDB'deki belgeler (documents) JSON nesnelerine benzer. 'deki "row" karvamına karşılık gelmektedir.


Örnek 1.
MongoDB'de bir document (row)


MongoDB'de Collection (Tablo) kavramı
Collection (Koleksiyon/tablo) MongoDB belgelerinin (documents) grubudur. RDBMS'deki karşılığı ise "TABLO"lardır. Collection içindeki Documents (belgeler) farklı alanlara sahip olabilir.
 Bir koleksiyondaki tüm belgeler (documents) benzer ya da bir amaçla bağlantılıdır.

MongoDB'deki "id" mantığı
_id her document'ın tekliğini sağlayan / garanti eden 12 byte'lık hexadecimal bir numaradır.
Document'ı eklerken bu değeri siz de verebilirsiniz. Siz vermediğiniz takdirde MongoDB kendi bir tane atayacaktır. Otomatik atanan _id'nin atanması ise şu şekildedir;

ilk 4 byte = şuanki zaman (current timestamp)
sonraki 3 byte = makine id'si (machine id)
sonraki 3 byte = mongodb serverin işlem id'si (process id of mongodb server )
son 2 byte ise artan bir değerdir.


3 Ocak 2014 Cuma

MongoDB'ye başlangıç


Bu aralar MongoDB'ye merak saldım ve araştırmaya başladım. 

Araştırmaya başlarken genellikle ilgili teknolojinin kendi dökümanını okumayı tercih ediyorum fakat bu sefer önce var olan türkçe kaynaklara baktım. Gerçekten bir hayli kişi bu teknolojiye merak salmış ve araştırmış her ne kadar bazıları olduğu gibi çeviri yapmış olsa da bazıları anlayarak anlatmayı tercih etmiş. Önceden yazılım üzerine Türkçe kaynak bulmak gerçekten zordu. Neyse ki artık insanlarımız paylaşmanın önemini farkedip paylaşımcı bir ruh edinmiş :)

Bu siteler içerisinde bazıları şunlardır, belki siz de bir göz atmak istersiniz;









ve şuan okumakta olduğum Pro Hibernate and MongoDB isimli kitap,

Tüm bunlara istinaden ufak bir giriş;

MongoDB nedir?

C++ ile yazılmış, döküman tabanlı, ölçeklenebilir, NoSQL veri tabanı uygulamsıdır.
Windows, linux, Mac ve Solaris' için uygundur
Standart tablo tabanlı database yapısından kaçınır
JSON yapısını kullanarak dinamik belgeler oluşturur
2007'de 10gen isimli firma tarafından geliştirilmeye başlanmıştır. Şimdiki ismi ise MongoDB Inc.'tir


Zaten web'de olan kaynakları burada paylaşmamın bir mantığı olmadığından şimdilik bu kadar. Okudukça, öğrendikçe paylaşacağım.