MongoDb NoSQL serisinden, key-value dokuman depolayan bir veri tabani.
NoSQL: Aciklamasi tartismali biraz. No SQL mi, Not Only SQL mi kesin degil. Teoriyi birak, pratikte alisilmis tablo ve baglantilarin olmadigi bir database. Normalde bizim alistigimiz, kolonlar, satirlar ile 2 boyutlu tablolar. Tablolar biribirine iliskilerle bagli.
MongoDb'de (NoSQL serisinde bircok database var, MongoDb key-value store grubunda, key-value olanlarin hepsi boyle):
Tablolar yerine Collection var.
Kayit (record) yerine Document var.
Her dokuman icerisinde N tane key:value cifti var,
Ornek:
Kisiler koleksiyonunda:
Key, Value
Adi: Cetin
Soyadi: Basoz
Value kismi yukaridaki gibi basit bir string yerine, array, binary data, yeni bir document vs olabilir. Document ve/veya array olunca da hierarsik bir yapi olusuyor. XML'e benzeyen bir format var ve XML'den daha efektif JSON format (JavaScriptObjectNotation):
{
Adi: "Cetin",
Soyadi: "Basoz"
}
Icice dokuman ve array ile:
{
Adi: "Cetin",
Soyadi: "Basoz",
Adres:
{
CaddeNo: 1,
SokakNo: 2,
EvNo: 123,
Ilce: "Merkez",
Il: "Izmir"
},
Telefonlar: [
{ tipi: "Ev", alanKodu: 232 no: 1234567 },
{ tipi: "Cep", alanKodu: 532 no: 1234567 },
{ tipi: "Is", alanKodu: 232 no: 2785565 Dahili: 156 }
]
}
Yukaridaki sekilde SQL ile bir yapi yapsaydik en az iki tablo ve join gerekecekti. Bu gene de basit, bazen 6-7 tablo gerektiren isler de var. Burada tek bir "dokuman"da is halledilebiliyor.
MongoDb'nin bir ozelligi, semasiz olmasi. Yani biz ise baslarken tablo dizayn ediyoruz, kolonlari bilmemiz gerekiyor. Sonra bir kac kayit icin bile yeni birsey gerekse yeni kolon ekliyoruz. Oysa MongoDb'de dogrudan yazmaya baslayabiliyorsun. Sakla dediginde ne varsa saklaniyor. Birbirine mantiken yakin fakat icerikleri farkli seyleri boylece rahatlikla ayni "collection"da tutabiliyorsun. Ornegin:
"Cizimler"
{
Aciklama: "Ekran goruntusu",
Sekiller: [
{ Tip: "Daire", X: 10, Y: 10, Cap: 5 },
{ Tip: "Kare", X: 20, Y: 10, Width: 2 },
{ Tip: "Dikdortgen", X: 2, Y: 1, Height: 2, Width: 10 }
]
}
Yeteri kadar kafa karistirabildim mi bilmiyorum:) Bu daha aybergin ucunun ucu. Arrayler indexlenebiliyor, sanki normal alanmis gibi arama yapilabiliyor vs vs. Geospatial indexleri vs var. Aslinda kullanimi cok kolay. Genel olarak 20-30 sayfalik bir kitapciga sigiyor (tabii detaylari cok daha buyuk kitaplara:)
Ortaya cikislarinin ana nedeni, degisen veri isteklerinin artik SQL databaseler ile karsilanamaz hale gelmesi. Devasa verileriniz olmasa da karmasik joinler filan gerektirmedigi icin cazip bir database.
Dil olarak, ne yazik ki VFP kullanamiyorsunuz. Oyle ODBC veya OLEDB surucusu yok. C#, Java, C++, Python, Ruby, Scala, PHP ... gibi bircok dilde suruculeri var.
http://www.mongodb.org/display/DOCS/Drivers adresinde desteklenen dillerin listesi var. Bir kismi dogrudan mongodb.org tarafindan desteklenen diller, onun disinda bircok community destekli surucu var.
http://www.MongoDb.org
adresinden indirebilir, daha detayli okuyabilirsiniz. Bir ara bende oyle hizli bir giris olsun diye video kaydedeyim. Turkiye'de de olmak uzere baya ciddi kullanicilari var. SAP, ebay, sahibinden.com ... gibi. Liste cok uzun.
(isin ilginci bu database open source ve ucretsiz)