39
Spring Data MongoDB Webiner Hakan Özler [email protected] /ozlerhakan

Spring Data MongoDB Webiner

Embed Size (px)

Citation preview

Page 1: Spring Data MongoDB Webiner

Spring Data MongoDB Webiner

Hakan Özler [email protected]

/ozlerhakan

Page 2: 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

Page 3: Spring Data MongoDB Webiner

NoSQL & MongoDB

Page 4: Spring Data MongoDB Webiner

NoSQL

4

İşlenebilir veri

NoSQL veritabanları BigData

Page 5: Spring Data MongoDB Webiner

huMONGOus Veritabanı

• CreateReadUpdateDelete

• Yönetimsel Komutlar

• Performans

– Storage Engine, Endekslemeler

• Deployment Seçenekleri

5

Page 6: Spring Data MongoDB Webiner

Standalone Deployment

Avantajlar:

– Sadelik

– Ucuz Maliyet

Dezavantajlar:

– Ölçekleme yok

– Süreklilik yok

6

Page 7: Spring Data MongoDB Webiner

Replica Set Deployment

Avantajlar:

– Süreklilik

– Ulaşılabilirlik

Dezavantajlar:

– Ölçekleme yok

– Kompleks Yapı

7

Page 8: Spring Data MongoDB Webiner

Sharded Cluster Deployment

Avantajlar:

– Ölçekleme

– Süreklilik

– Ulaşılabilirlik

Dezavantajlar:

– Maliyet

– Karmaşıklık

8

Page 9: Spring Data MongoDB Webiner

Spring Data MongoDB (SDM)

Giriş

Page 10: Spring Data MongoDB Webiner

10

Page 11: Spring Data MongoDB Webiner

Giriş

• Şablon tabanlı veritabanı erişimi

• Nesne-doküman eşleşmesi

• Otomatik Mongo deposu

11

Page 12: Spring Data MongoDB Webiner

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

Page 13: Spring Data MongoDB Webiner

SDM Etkinleştirme

Page 14: Spring Data MongoDB Webiner

Etkinleştirme

• Xml tabanlı metadata

• Java anotasyon tabanlı metadata

14

Page 15: Spring Data MongoDB Webiner

Etkinleştirme

• com.mongodb.MongoClient

• org.springframework.data.mongodb.core.MongoClientFactoryBean

• org.springframework.data.document.mongodb.MongoTemplate

15

Page 16: Spring Data MongoDB Webiner

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

Page 17: Spring Data MongoDB Webiner

SDM Konfigürasyonu

Page 18: Spring Data MongoDB Webiner

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

Page 19: Spring Data MongoDB Webiner

Java Tabanlı #2

19

tanımlı gelen konfigürasyon sınıfı

bir mongo client üretimi

veritabanı ismi belirleniyor

mongoTemplate nesnesi için

Page 20: Spring Data MongoDB Webiner

XML Tabanlı #1

20

mongo namespace

MongoClient deklerasyonu

mongoTemplate bean üretimi

bağımlılık enjeksiyonu

Page 21: Spring Data MongoDB Webiner

SDM Nesne-Doküman Eşleşmesi

Page 22: Spring Data MongoDB Webiner

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

Page 23: Spring Data MongoDB Webiner

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

Page 24: Spring Data MongoDB Webiner

SDM Sorgu Oluşturma

Page 25: Spring Data MongoDB Webiner

MongoOperations Arayüzü

25

• org.springframework.data.mongodb.core.MongoOperations#

Page 26: Spring Data MongoDB Webiner

Criteria Sınıfı

26

• Fluent API tasarımına sahip

• Sorgu oluşturmada merkezi sınıf

criteria nesnesi başlangıcı

Page 27: Spring Data MongoDB Webiner

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

Page 28: Spring Data MongoDB Webiner

Query Sınıfı

28

• Fluent API tasarımına sahip

kriterlerin bulunduğu CriteriaDefinition nesnesi

Query nesnesi için statik üretici metod

Page 29: Spring Data MongoDB Webiner

TextQuery ve TextCriteria

29

tam metin aramanın kriterlerini oluşturur

tam metin arama sorgusu için gerekli sınıf

Page 30: Spring Data MongoDB Webiner

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

Page 31: Spring Data MongoDB Webiner

Sorgu #1

31

MongoDB persistence

{ "favorite_count“ : { $gte: favoriteCount } }

Page 32: Spring Data MongoDB Webiner

Sorgu #2

32

Türkçe karakterleri dikkate alan textCriteria nesnesi oluşur

“text” alanına girilen metin aranır

Page 33: Spring Data MongoDB Webiner

SDM Mongo Depo Oluşturma

Page 34: Spring Data MongoDB Webiner

MongoRepository

34

İsimleri aynı olmalı

özel sınıfın son eki DAO olmalı

SDM deposu özel orta TweetDAO arayüzü

Page 35: Spring Data MongoDB Webiner

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

Page 36: Spring Data MongoDB Webiner

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ı

Page 37: Spring Data MongoDB Webiner

Mongolastic

MongoDB koleksiyonları ElasticSearch ortamına kaydeder

37

https://github.com/ozlerhakan/mongolastic

Page 38: Spring Data MongoDB Webiner

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

Page 39: Spring Data MongoDB Webiner

Teşekkürler!

Hakan Özler [email protected]

/ozlerhakan