SlideShare ist ein Scribd-Unternehmen logo
1 von 26
NoSQL, Spring Data MongoDB
Ümit VARDAR
@umitvardar
NoSQL (Not Only SQL)
• Yeni Nesil Veritabanları
• Özellikler:
• İlişkisel değil
• Dağıtık
• Enlemesine ve boylamasına ölçeklenebilirlik
Web Çağına Uygun Özellikler (Big Data)
• Şema serbestisi
• Büyük miktarda veri
• Map-Reduce işlevleri
• Kolay replikasyon desteği
• Basit API
• Açık Kaynak (genellikle)
NoSQL DB Listesi
• Big Table: Hadoop, Cassandra, ...
• Document: MongoDB, CouchDB, ...
• Key-Value: Redis, Riak, ...
• Graph: Neo4J, ...
• ...
Mongo DB
MongoDB
• Belge tabanlı saklama yöntemi; BSON (binary JSON)
• Belgedeki her nitelik indekslenebilir
• Replikasyon ve Erişilebilirlik
• GridFS
• Sürücüler: C, C++, JavaScript, Perl, PHP, Java...
• C++ ile geliştirilmiş
• http://mongodb.org
MongoDB Kullanım Senaryoları
• Web Uygulamaları
• İçerik Yönetimi, “schema free”
• Log ve Analitik Uygulamaları, hızlı, map-reduce özelliği
• Çevik Geliştirme
• “Caching”, MySQL-memcached ikilisi yerine
• JSON’ın yoğun bir şekilde kullanıldığı ortamlar..
MongoDB ve Şema Tasarımı
• MongoDB de dokümanlar:
• “Database” ve “Collections”
yapıları altında hiyerarşik bir şekilde saklanırlar
• Şema tasarlarken verileri “doğal”, “de-normalized” bir şekilde düşünün.
• Şemalar, veriler kendi içerisinde “bütün”; “self-contained” olacak şekilde
tasarlanmalıdır.
MongoDB Yüklenmesi ve Kullanımı
• 64 bit sürümlerini tercih edilmeli. Verilerin “big-data” olduğu unutlmamalı, 32
bit tüm veriyi adreslemek için yetmeyecektir.
• Linux, Windows, OS X, Solaris desteklenen ortamlar
• *.tgz formatında dağıtım..
• www.mongodb.org/downloads
MongoDB Kullanım
• Sunucunun başlatılması
<MongoDB Dir>/bin/mongod --dbpath ./data/db
• Etkileşim, yönetim için “shell” uygulamasını kullanabiliriz.
<MongoDB Dir>/bin/mongo
• Çeşitli MongoDB istemcileri var
• MongoHUB (OS/X),
• Mongo UI (JavaFX), Kamil ÖRS liderliğinde geliştirilmekte, Açık kaynak :)
https://github.com/droidpark/mongodbui
• MongoExplorer (.NET)
Mongo Shell
• MongoDB shell version: 2.2.0
connecting to: test
> help
Mongo Shell
• JavaScript destekli komut satır arayüz kullanımı, komutlar harf büyüklüğüne
duyarlı
• Örnek Admin Komutları
>show dbs db leri listeler
>show collections doküman topluluklarını listeler
>use test sonraki komutlarda belirtilen db yi kullanır
>db.createCollection(“documents”) doküman topluluğu oluşturur
>db.”collection”.drop() topluluğu siler
>db.help() yardımları listeler
>db.version() mongodb sürüm numarası
>db.stats() istatistikleri verir
Mongo Shell Temel Komutlar
• Ekleme
> db.documents.save( { docNo : 1 })
• Güncelleme
> db.documents.update( { docNo : 1 }, { $set : { “desc” : “ dilekçe” }})
> db.documents.update( { docNo : 1 }, { $unset : { “desc” : 1 }})
• Sorgulama
>db.documents.find( {docNo : { $gt : 4, $lt : 100 } } )
• Silme
>db.documents.remove( { docNo : 100 } )
Mongo Shell Temel Komutlar
• Explain
>db.documents.find( { docNo : { $gt : 21 } } ).explain()
• Indeks Oluşturma
>db.documents.ensureIndex( { docNo : 1 } )
>db.documents.getIndexes()
>db.documents.getIndexKeys()
>db.documents.dropIndexes()
>db.documents.dropIndex(“index adı”)
Demo
Spring Data MongoDB
Spring Data Projesi
• Springframework içerisinde geliştirilen veri erişim çatısı.
• JPA, Hadoop,
• Neo4j, Gemfire,
• HBase, Redis,
• ElasticSearch, Solr, ...
• MongoDB
ayrı projeler, aynı ilkeler
Spring Data MongoDB Özellikleri
• Spring ilkelerine bağlı, XML ve @Configuration desteği, isimlendirme
(namepsace) desteği.
• POJO dan Dokümana eşleştirme desteği
• MongoTemplate ile verilere kolay, etkin erişim. İstisnaları (exception) ortak ele
alma özelliği
• DSL kullanımı, Query, Criteria, Update DSL
• Repository arayüzü
Spring Data MongoDB Özellikleri, devam
• GridFS desteği
• Geospatial desteği
• JMX ve CDI desteği
• “Cross Store” JPA varlıkları MongoDB varlıklarıyla saklanır/getirilir
son günlerin gözde konularından biri..
XML Context Config
XML Context Config devam
Query, Criteria
• Query örnek
List<CMSDocument> documents = mongoTemplate.find(query(where
(“docNo”).lt(100)));
• Query
addCriteria, limit, fields, skip, sort metodlarına sahiptir
• Criteria
all, and, andOperator, exists, gte, gt, in, is, ne vb
metodları destekler
Repository
• PagingAndSortingRepsitory ve CrudRepsitory i extend eden bir interfacedir.
• DSL, metod isminden sorguyu üretir. Bu nedenle kullanılan sozcüklerin model
içerisinde bir alana karşılık gelmesine dikkate edilmelidir.
• find, findAll, delete, deleteAll, save metodları hazırdır.
• Diğerlerini yazmak kolay :-)
Repository devam
• // parentID ve isCurrent değerleri verilenlerle aynı olanı bul
Page<DMSContent> findByParentIdAndIsCurrentWithPermission(String parentId, boolean
isCurrent, Pageable pageable);
Page ve Pageable nesneleri Spring Data trafından sağlanır.
// pti ve serial number’ı aynı olan ve lastUpdate tarihi daha yeni olanı bul.
@Query("{ passTypeIdentifier : { $eq : ?0 }, serialNumber : { $eq : ?1},
lastUpdated : { $gt : ?2} }")
Pass findByPassTypeIdentifierAndSerialNumberAndModifiedSince(
String passTypeIdentifier, String serialNumber, Date modifiedSince);
	 @Query("{ value : { $gt : ?0 }, DocNo : { $lt : ?1 }}")
	 List<CMSDocument> findByValueDocNo(int value, int docNo);
	
	 @Query("{ tags : {$in: ?0 } }")
	 List<CMSDocument> findByTags(String[] tags);
Repository Kullanımı
• Repository “inject” edilir
@Autowired(required = true)
CMSRepository repository;
• .. ve kullanılır
CMSDocument document = repository.findByDocNo(1);
document.getTags().add("bir");
document.getTags().add("diğer");
repository.save(document);
List<CMSDocument> documents = repository.findByTags(new
String[]{"bir"});
Demo

Weitere ähnliche Inhalte

Was ist angesagt?

Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı GözleyelimOguz Yarimtepe
 
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek HususlarCeph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek HususlarHuseyin Cotuk
 
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans OptimizasyonuOpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans OptimizasyonuHuseyin Cotuk
 
Veri Depolama ve Diskler
Veri Depolama ve DisklerVeri Depolama ve Diskler
Veri Depolama ve DisklerMustafa
 
Spring Data MongoDB Webiner
Spring Data MongoDB WebinerSpring Data MongoDB Webiner
Spring Data MongoDB WebinerHakan Özler
 
Azure Sanal Makineler
Azure Sanal MakinelerAzure Sanal Makineler
Azure Sanal MakinelerMustafa
 
Coğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
Coğrafik Veri Ambarlarının Modellenmesi ve SorgulanmasıCoğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
Coğrafik Veri Ambarlarının Modellenmesi ve SorgulanmasıFerhat Kurt
 

Was ist angesagt? (9)

Nosql ve mongoDB
Nosql ve mongoDBNosql ve mongoDB
Nosql ve mongoDB
 
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı BakışıylaNoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
 
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek HususlarCeph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
 
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans OptimizasyonuOpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
 
Veri Depolama ve Diskler
Veri Depolama ve DisklerVeri Depolama ve Diskler
Veri Depolama ve Diskler
 
Spring Data MongoDB Webiner
Spring Data MongoDB WebinerSpring Data MongoDB Webiner
Spring Data MongoDB Webiner
 
Azure Sanal Makineler
Azure Sanal MakinelerAzure Sanal Makineler
Azure Sanal Makineler
 
Coğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
Coğrafik Veri Ambarlarının Modellenmesi ve SorgulanmasıCoğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
Coğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
 

Ähnlich wie AnkaraJUG Haziran 2013 - No SQL / Big Data

Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkHakan Sarıbıyık
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.comHakan Ilter
 
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationDspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationMesut Güngör
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış Veysel Taşcıoğlu
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel BakışBerkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakıştechbase
 
MongoDB - JSON'a Genel Bakış
MongoDB - JSON'a Genel BakışMongoDB - JSON'a Genel Bakış
MongoDB - JSON'a Genel BakışCihan Özhan
 
Javascript - from past to present
Javascript - from past to present Javascript - from past to present
Javascript - from past to present Kubilay TURAL
 
Pig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri AnaliziPig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri AnaliziHakan Ilter
 
WordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli sitelerWordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli sitelerMustafa UYSAL
 
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaHüseyin Mert
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web ProgramlamaCihan Özhan
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008mtcakmak
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy TalksMetin Uslu
 

Ähnlich wie AnkaraJUG Haziran 2013 - No SQL / Big Data (20)

MongoDB Overview
MongoDB OverviewMongoDB Overview
MongoDB Overview
 
MongoDB ve C# Driver'ı
MongoDB ve C# Driver'ıMongoDB ve C# Driver'ı
MongoDB ve C# Driver'ı
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.com
 
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationDspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik Integration
 
Delphi 7
Delphi 7Delphi 7
Delphi 7
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel BakışBerkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış
 
yazılımmuh10.pptx
yazılımmuh10.pptxyazılımmuh10.pptx
yazılımmuh10.pptx
 
Linkle mimari
Linkle mimariLinkle mimari
Linkle mimari
 
MongoDB - JSON'a Genel Bakış
MongoDB - JSON'a Genel BakışMongoDB - JSON'a Genel Bakış
MongoDB - JSON'a Genel Bakış
 
Javascript - from past to present
Javascript - from past to present Javascript - from past to present
Javascript - from past to present
 
Veri tabanı
Veri tabanıVeri tabanı
Veri tabanı
 
Modern Frontend
Modern FrontendModern Frontend
Modern Frontend
 
Pig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri AnaliziPig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri Analizi
 
WordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli sitelerWordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli siteler
 
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web Programlama
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy Talks
 

Mehr von Ankara JUG

Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in actionAnkara JUG
 
Home Automation Using RPI
Home Automation Using  RPIHome Automation Using  RPI
Home Automation Using RPIAnkara JUG
 
Ankara JUG Şubat 2014 Etkinliği - Design Patterns
Ankara JUG Şubat 2014 Etkinliği - Design PatternsAnkara JUG Şubat 2014 Etkinliği - Design Patterns
Ankara JUG Şubat 2014 Etkinliği - Design PatternsAnkara JUG
 
Ankara JUG Eylül 2013 Etkinliği - Eclipse RCP 4
Ankara JUG Eylül 2013 Etkinliği - Eclipse RCP 4Ankara JUG Eylül 2013 Etkinliği - Eclipse RCP 4
Ankara JUG Eylül 2013 Etkinliği - Eclipse RCP 4Ankara JUG
 
Ankara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADFAnkara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADFAnkara JUG
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 DemystifiedAnkara JUG
 
Ankara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumuAnkara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumuAnkara JUG
 
AnkaraJUG Nisan 2013 - Java Persistance API
AnkaraJUG Nisan 2013 - Java Persistance APIAnkaraJUG Nisan 2013 - Java Persistance API
AnkaraJUG Nisan 2013 - Java Persistance APIAnkara JUG
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?Ankara JUG
 
AnkaraJUG Aralık 2012 - Agile, Adaptasyon ve Dönüşüm
AnkaraJUG Aralık 2012 - Agile, Adaptasyon ve DönüşümAnkaraJUG Aralık 2012 - Agile, Adaptasyon ve Dönüşüm
AnkaraJUG Aralık 2012 - Agile, Adaptasyon ve DönüşümAnkara JUG
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkara JUG
 
Ankara jug 201211
Ankara jug 201211Ankara jug 201211
Ankara jug 201211Ankara JUG
 

Mehr von Ankara JUG (12)

Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in action
 
Home Automation Using RPI
Home Automation Using  RPIHome Automation Using  RPI
Home Automation Using RPI
 
Ankara JUG Şubat 2014 Etkinliği - Design Patterns
Ankara JUG Şubat 2014 Etkinliği - Design PatternsAnkara JUG Şubat 2014 Etkinliği - Design Patterns
Ankara JUG Şubat 2014 Etkinliği - Design Patterns
 
Ankara JUG Eylül 2013 Etkinliği - Eclipse RCP 4
Ankara JUG Eylül 2013 Etkinliği - Eclipse RCP 4Ankara JUG Eylül 2013 Etkinliği - Eclipse RCP 4
Ankara JUG Eylül 2013 Etkinliği - Eclipse RCP 4
 
Ankara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADFAnkara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADF
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 Demystified
 
Ankara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumuAnkara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumu
 
AnkaraJUG Nisan 2013 - Java Persistance API
AnkaraJUG Nisan 2013 - Java Persistance APIAnkaraJUG Nisan 2013 - Java Persistance API
AnkaraJUG Nisan 2013 - Java Persistance API
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?
 
AnkaraJUG Aralık 2012 - Agile, Adaptasyon ve Dönüşüm
AnkaraJUG Aralık 2012 - Agile, Adaptasyon ve DönüşümAnkaraJUG Aralık 2012 - Agile, Adaptasyon ve Dönüşüm
AnkaraJUG Aralık 2012 - Agile, Adaptasyon ve Dönüşüm
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFaces
 
Ankara jug 201211
Ankara jug 201211Ankara jug 201211
Ankara jug 201211
 

AnkaraJUG Haziran 2013 - No SQL / Big Data

  • 1. NoSQL, Spring Data MongoDB Ümit VARDAR @umitvardar
  • 2. NoSQL (Not Only SQL) • Yeni Nesil Veritabanları • Özellikler: • İlişkisel değil • Dağıtık • Enlemesine ve boylamasına ölçeklenebilirlik
  • 3. Web Çağına Uygun Özellikler (Big Data) • Şema serbestisi • Büyük miktarda veri • Map-Reduce işlevleri • Kolay replikasyon desteği • Basit API • Açık Kaynak (genellikle)
  • 4. NoSQL DB Listesi • Big Table: Hadoop, Cassandra, ... • Document: MongoDB, CouchDB, ... • Key-Value: Redis, Riak, ... • Graph: Neo4J, ... • ...
  • 6. MongoDB • Belge tabanlı saklama yöntemi; BSON (binary JSON) • Belgedeki her nitelik indekslenebilir • Replikasyon ve Erişilebilirlik • GridFS • Sürücüler: C, C++, JavaScript, Perl, PHP, Java... • C++ ile geliştirilmiş • http://mongodb.org
  • 7. MongoDB Kullanım Senaryoları • Web Uygulamaları • İçerik Yönetimi, “schema free” • Log ve Analitik Uygulamaları, hızlı, map-reduce özelliği • Çevik Geliştirme • “Caching”, MySQL-memcached ikilisi yerine • JSON’ın yoğun bir şekilde kullanıldığı ortamlar..
  • 8. MongoDB ve Şema Tasarımı • MongoDB de dokümanlar: • “Database” ve “Collections” yapıları altında hiyerarşik bir şekilde saklanırlar • Şema tasarlarken verileri “doğal”, “de-normalized” bir şekilde düşünün. • Şemalar, veriler kendi içerisinde “bütün”; “self-contained” olacak şekilde tasarlanmalıdır.
  • 9. MongoDB Yüklenmesi ve Kullanımı • 64 bit sürümlerini tercih edilmeli. Verilerin “big-data” olduğu unutlmamalı, 32 bit tüm veriyi adreslemek için yetmeyecektir. • Linux, Windows, OS X, Solaris desteklenen ortamlar • *.tgz formatında dağıtım.. • www.mongodb.org/downloads
  • 10. MongoDB Kullanım • Sunucunun başlatılması <MongoDB Dir>/bin/mongod --dbpath ./data/db • Etkileşim, yönetim için “shell” uygulamasını kullanabiliriz. <MongoDB Dir>/bin/mongo • Çeşitli MongoDB istemcileri var • MongoHUB (OS/X), • Mongo UI (JavaFX), Kamil ÖRS liderliğinde geliştirilmekte, Açık kaynak :) https://github.com/droidpark/mongodbui • MongoExplorer (.NET)
  • 11. Mongo Shell • MongoDB shell version: 2.2.0 connecting to: test > help
  • 12. Mongo Shell • JavaScript destekli komut satır arayüz kullanımı, komutlar harf büyüklüğüne duyarlı • Örnek Admin Komutları >show dbs db leri listeler >show collections doküman topluluklarını listeler >use test sonraki komutlarda belirtilen db yi kullanır >db.createCollection(“documents”) doküman topluluğu oluşturur >db.”collection”.drop() topluluğu siler >db.help() yardımları listeler >db.version() mongodb sürüm numarası >db.stats() istatistikleri verir
  • 13. Mongo Shell Temel Komutlar • Ekleme > db.documents.save( { docNo : 1 }) • Güncelleme > db.documents.update( { docNo : 1 }, { $set : { “desc” : “ dilekçe” }}) > db.documents.update( { docNo : 1 }, { $unset : { “desc” : 1 }}) • Sorgulama >db.documents.find( {docNo : { $gt : 4, $lt : 100 } } ) • Silme >db.documents.remove( { docNo : 100 } )
  • 14. Mongo Shell Temel Komutlar • Explain >db.documents.find( { docNo : { $gt : 21 } } ).explain() • Indeks Oluşturma >db.documents.ensureIndex( { docNo : 1 } ) >db.documents.getIndexes() >db.documents.getIndexKeys() >db.documents.dropIndexes() >db.documents.dropIndex(“index adı”)
  • 15. Demo
  • 17. Spring Data Projesi • Springframework içerisinde geliştirilen veri erişim çatısı. • JPA, Hadoop, • Neo4j, Gemfire, • HBase, Redis, • ElasticSearch, Solr, ... • MongoDB ayrı projeler, aynı ilkeler
  • 18. Spring Data MongoDB Özellikleri • Spring ilkelerine bağlı, XML ve @Configuration desteği, isimlendirme (namepsace) desteği. • POJO dan Dokümana eşleştirme desteği • MongoTemplate ile verilere kolay, etkin erişim. İstisnaları (exception) ortak ele alma özelliği • DSL kullanımı, Query, Criteria, Update DSL • Repository arayüzü
  • 19. Spring Data MongoDB Özellikleri, devam • GridFS desteği • Geospatial desteği • JMX ve CDI desteği • “Cross Store” JPA varlıkları MongoDB varlıklarıyla saklanır/getirilir son günlerin gözde konularından biri..
  • 22. Query, Criteria • Query örnek List<CMSDocument> documents = mongoTemplate.find(query(where (“docNo”).lt(100))); • Query addCriteria, limit, fields, skip, sort metodlarına sahiptir • Criteria all, and, andOperator, exists, gte, gt, in, is, ne vb metodları destekler
  • 23. Repository • PagingAndSortingRepsitory ve CrudRepsitory i extend eden bir interfacedir. • DSL, metod isminden sorguyu üretir. Bu nedenle kullanılan sozcüklerin model içerisinde bir alana karşılık gelmesine dikkate edilmelidir. • find, findAll, delete, deleteAll, save metodları hazırdır. • Diğerlerini yazmak kolay :-)
  • 24. Repository devam • // parentID ve isCurrent değerleri verilenlerle aynı olanı bul Page<DMSContent> findByParentIdAndIsCurrentWithPermission(String parentId, boolean isCurrent, Pageable pageable); Page ve Pageable nesneleri Spring Data trafından sağlanır. // pti ve serial number’ı aynı olan ve lastUpdate tarihi daha yeni olanı bul. @Query("{ passTypeIdentifier : { $eq : ?0 }, serialNumber : { $eq : ?1}, lastUpdated : { $gt : ?2} }") Pass findByPassTypeIdentifierAndSerialNumberAndModifiedSince( String passTypeIdentifier, String serialNumber, Date modifiedSince); @Query("{ value : { $gt : ?0 }, DocNo : { $lt : ?1 }}") List<CMSDocument> findByValueDocNo(int value, int docNo); @Query("{ tags : {$in: ?0 } }") List<CMSDocument> findByTags(String[] tags);
  • 25. Repository Kullanımı • Repository “inject” edilir @Autowired(required = true) CMSRepository repository; • .. ve kullanılır CMSDocument document = repository.findByDocNo(1); document.getTags().add("bir"); document.getTags().add("diğer"); repository.save(document); List<CMSDocument> documents = repository.findByTags(new String[]{"bir"});
  • 26. Demo