Spring Data MongoDB Webiner

Preview:

Citation preview

Spring Data MongoDB Webiner

Hakan Özler ozler.hakan@gmail.com

/ozlerhakan

İç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

Teşekkürler!

Hakan Özler ozler.hakan@gmail.com

/ozlerhakan

Recommended