Download - Spring Data MongoDB Webiner
İçerik
• NoSQL & MongoDB
• Spring Data MongoDB (SDM) Giriş
• SDM Etkinleştirme
• SDM Konfigürasyonu
• SDM Nesne-Doküman Eşleşmesi
• SDM Sorgu Oluşturma
• SDM Mongo Depo Oluşturma
• Mongolastic
2
NoSQL & MongoDB
NoSQL
4
İşlenebilir veri
NoSQL veritabanları BigData
huMONGOus Veritabanı
• CreateReadUpdateDelete
• Yönetimsel Komutlar
• Performans
– Storage Engine, Endekslemeler
• Deployment Seçenekleri
5
Standalone Deployment
Avantajlar:
– Sadelik
– Ucuz Maliyet
Dezavantajlar:
– Ölçekleme yok
– Süreklilik yok
6
Replica Set Deployment
Avantajlar:
– Süreklilik
– Ulaşılabilirlik
Dezavantajlar:
– Ölçekleme yok
– Kompleks Yapı
7
Sharded Cluster Deployment
Avantajlar:
– Ölçekleme
– Süreklilik
– Ulaşılabilirlik
Dezavantajlar:
– Maliyet
– Karmaşıklık
8
Spring Data MongoDB (SDM)
Giriş
10
Giriş
• Şablon tabanlı veritabanı erişimi
• Nesne-doküman eşleşmesi
• Otomatik Mongo deposu
11
Giriş
• 1.7 versiyon
• >= MongoDB 2.6 Uyumluluk
• Mongo Java Driver 2/3-beta3
• JavaScript fonksiyonları yazılabilir
• Java 8 Stream<T> desteği
12
SDM Etkinleştirme
Etkinleştirme
• Xml tabanlı metadata
• Java anotasyon tabanlı metadata
14
Etkinleştirme
• com.mongodb.MongoClient
• org.springframework.data.mongodb.core.MongoClientFactoryBean
• org.springframework.data.document.mongodb.MongoTemplate
15
Etkinleştirme
MongoTemplate Özellikleri:
– Mongo Driver Api’den geçişi kolaylaştırma
– SDM yaklaşımının merkezi
– Thread-safe
– CRUD desteği
– MongoDB doküman – nesne eşleşmesi kullanmakta
16
SDM Konfigürasyonu
Java Tabanlı #1
18
konfigürasyon sınıfı tanımlanır
stereotype anotasyonlu sınıfları tara
com.mongodb.MongoClient API üretici bean
MongoTemplate üretici bean
dönüş tipine dikkat
Java Tabanlı #2
19
tanımlı gelen konfigürasyon sınıfı
bir mongo client üretimi
veritabanı ismi belirleniyor
mongoTemplate nesnesi için
XML Tabanlı #1
20
mongo namespace
MongoClient deklerasyonu
mongoTemplate bean üretimi
bağımlılık enjeksiyonu
SDM Nesne-Doküman Eşleşmesi
Nesne-Doküman Eşleşmesi
22
koleksiyona bağlantı
metin arama dili
tweet dokümanı
metin arama fonksiyonuna özel
gömülü kullanıcı nesnesi
_id alanı
gömülü entity nesnesi
23
gömülü kullanıcı nesnesi
varsayılan alan ismi ezilmekte
dizi tanımlamaları
Nesne-Doküman Eşleşmesi
gömülü entity nesnesi
SDM Sorgu Oluşturma
MongoOperations Arayüzü
25
• org.springframework.data.mongodb.core.MongoOperations#
Criteria Sınıfı
26
• Fluent API tasarımına sahip
• Sorgu oluşturmada merkezi sınıf
criteria nesnesi başlangıcı
Criteria Sınıfı
27
• MongoDB operasyonlarının karşılığı olan metodları:
$gte operatörü ile bir kriter oluşturma
$is operatörü ile bir kriter oluşturma
$lt operatörü ile bir kriter oluşturma
$gt operatörü ile bir kriter oluşturma
$in operatörü ile bir kriter oluşturma
$exists operatörü ile bir kriter oluşturma
$not operatörü ile bir kriter oluşturma
$near operatörü ile bir kriter oluşturma
Query Sınıfı
28
• Fluent API tasarımına sahip
kriterlerin bulunduğu CriteriaDefinition nesnesi
Query nesnesi için statik üretici metod
TextQuery ve TextCriteria
29
tam metin aramanın kriterlerini oluşturur
tam metin arama sorgusu için gerekli sınıf
Aggregation Desteği
30
kümeleme işlemleri için gereken statik üretici metod
sıralı listelenmiş MongoDB kümeleme operasyonları mevcut operasyonlar: project, skip, limit, unwind, group, sort ve geoNear
dönen değerler için gerekli genel konteyner çıktı eşleşmesi için gerekli bir sınıf
MongoDB kümeleme operasyonu için temsili sınıf
Sorgu #1
31
MongoDB persistence
{ "favorite_count“ : { $gte: favoriteCount } }
Sorgu #2
32
Türkçe karakterleri dikkate alan textCriteria nesnesi oluşur
“text” alanına girilen metin aranır
SDM Mongo Depo Oluşturma
MongoRepository
34
İsimleri aynı olmalı
özel sınıfın son eki DAO olmalı
SDM deposu özel orta TweetDAO arayüzü
MongoRepository Etkinleştirme
35
mongoRepository özelliğini etkinleştirme paket yolu çözümlenir özel oluşturulan depo
sınıfın son eki “DAO” olanı tara
Repository Örnekleri
36
hepsi aynı
depo metod için özel sorgular Query ile yapılabilir
Özel sorgu depo metodları ile sorgu oluşturma
full text search sorguları
Mongolastic
MongoDB koleksiyonları ElasticSearch ortamına kaydeder
37
https://github.com/ozlerhakan/mongolastic
Daha fazlası için
• Örnek demo projesi:
– https://github.com/kodcu/spring-data-mongodb-webinar-project
• Spring Data MongoDB Projesi:
– http://projects.spring.io/spring-data-mongodb/
• SDM Kaynak:
– http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/
– http://kodcu.com/2015/05/spring-data-mongodb-ve-mongodb-java-
driver-kullanarak-sorgular-olusturma/
38