Spring + QueryDSL + MongoDB Presentation

36
Spring + MongoDB + Querydsl June 18 th 2014 By Ranga Vadlamudi 1/20/2015

Transcript of Spring + QueryDSL + MongoDB Presentation

Page 1: Spring + QueryDSL + MongoDB Presentation

Spring + MongoDB + Querydsl

June 18th 2014

By Ranga Vadlamudi1/20/2015

Page 2: Spring + QueryDSL + MongoDB Presentation

About Speaker

Experience in Enterprise/Application Architecture

Extensive Startup experience

Big Data experience in Cloudera Stack, MongoDB, Cassandra

[email protected]

@webexl

webexl.blogspot.com

Page 3: Spring + QueryDSL + MongoDB Presentation

Experience in

• Based on the use case solutions need to be catered to make sure data resides in the right place, Nosql versus File system for example

• Approach will be crucial in delivering real time solutions and handle volumes of data

Data Storage Solutions

• Real time versus Offline data retrieval is crucial for any project success. Was a great learning experience in arriving at solutions to achieve velocity

• In memory solutions and Indexing help in achieving faster retrieval

Data Retrieval Solutions

• Analyze large sets of different variety of data to find patterns which help in business intelligence

• Data Visualization is great feature to view data graphically

Data Analytics & Visualization

Page 4: Spring + QueryDSL + MongoDB Presentation

About the Session

• Brief Introduction to Spring & Spring Data

• Introduction to Querydsl

• Introduction to MongoDB

• Spring + QueryDSL + MongoDB

Page 5: Spring + QueryDSL + MongoDB Presentation

Spring Framework

• An open source application framework

• A light weight solution for enterprise applications

• POJO Based

• One of the most popular Java enterprise frameworks

Page 6: Spring + QueryDSL + MongoDB Presentation

• Makes it easy to use data access technologies

• Reduces amount of boiler plate code

• Umbrella project with subprojects specific to a given database

• Community support from developers of specific databases

Spring Data

Page 7: Spring + QueryDSL + MongoDB Presentation

Spring Data Core Concepts

• Repositories reduces boiler plate code required to implement

data access layer across persistent stores

• Central Interface of Spring Data is Repository

• CrudRepository provides CRUD functionality

Page 8: Spring + QueryDSL + MongoDB Presentation

Spring Data Core Concepts

• Proxy instances are created for the interfaces at runtime

• Pagination Access to entities is provided by

PagingAndSortingRepository

Page 9: Spring + QueryDSL + MongoDB Presentation

Spring Data Core Concepts

Page 10: Spring + QueryDSL + MongoDB Presentation

Spring Data Configuration

• Using Java Config

• Using XML Config

Page 11: Spring + QueryDSL + MongoDB Presentation

Spring Data Keywords

Page 12: Spring + QueryDSL + MongoDB Presentation

Spring Data Build Dependency

Page 13: Spring + QueryDSL + MongoDB Presentation

Querydsl

• Querying tool for Java

• Type safe query language

• Syntactically close to SQL

• Great for dynamic query building

• Consistent API across databases

Page 14: Spring + QueryDSL + MongoDB Presentation

Querydsl

• Basic Query Example

• Sub Query Example

Page 15: Spring + QueryDSL + MongoDB Presentation

Querydsl

• Order Example

Page 16: Spring + QueryDSL + MongoDB Presentation

Flow

Code for Entity Class

Add Querydsl Dependency

Add Querydsl Plugin to generate

Classes from Entities

Import Generated classes into

Code

Build Dynamic

Query in Java

Specify Database and

issues queries

Page 17: Spring + QueryDSL + MongoDB Presentation

Querydsl Build Dependency

Page 18: Spring + QueryDSL + MongoDB Presentation

Querydsl Build Dependency

Page 19: Spring + QueryDSL + MongoDB Presentation

What is Big Data

• Volume: Large Amounts of Data at rest

• Velocity: milliseconds to seconds to respond

• Variety: Data in many forms (Structured, Unstructured,

Multimedia, Text etc.)

• Veracity: Data in doubt

Page 20: Spring + QueryDSL + MongoDB Presentation

Volumes of Data We are Seeing Currently

• 30 billion pieces of content a month

• 1 Peta byte of content every day

• 2 Billion videos watched everyday

• 3 Billion people will be online

• Sharing 8 zettabytes of data

Page 21: Spring + QueryDSL + MongoDB Presentation

Big Data Solutions

Big Data

Real Time

Batch

Mining & Analytics

Machine Learning

Storage

Page 22: Spring + QueryDSL + MongoDB Presentation

Big Data Solution Landscape

Page 23: Spring + QueryDSL + MongoDB Presentation

Technology Landscape

Page 24: Spring + QueryDSL + MongoDB Presentation

CAP Theorem/Selection Trade-off

Page 25: Spring + QueryDSL + MongoDB Presentation

MongoDB

• Schema Free, schemas change as applications evolve

• Full Index support for high availability

• Auto sharding for horizontal scaling

• Replication and Failover for high availability

Page 26: Spring + QueryDSL + MongoDB Presentation

Where to Use MongoDB

• RDBMS replacement for Web scale applications

• For Operational intelligence (Logging etc. temporal data)

• Product Data management including Catalogs

• Content Management systems like blog posts including

media

Page 27: Spring + QueryDSL + MongoDB Presentation

Where not to Use MongoDB

• Highly transactional applications

• Applications with traditional database requirements like

foreign key constraints etc.

Page 28: Spring + QueryDSL + MongoDB Presentation

Where MongoDB Stands

Page 29: Spring + QueryDSL + MongoDB Presentation

MongoDB Data Models

• Stores JSON documents

• Known as BSON (Binary JSON)

• References

• Embedded

Page 30: Spring + QueryDSL + MongoDB Presentation

MongoDB Operations

RDBMS MONGODB

Create Insert Insert

Read Select Find

Update Update Update

Delete Delete Remove

Page 31: Spring + QueryDSL + MongoDB Presentation

Demo

Page 32: Spring + QueryDSL + MongoDB Presentation

MongoDB Replication

Page 33: Spring + QueryDSL + MongoDB Presentation

MongoDB Automatic Failover

Page 34: Spring + QueryDSL + MongoDB Presentation

MongoDB Sharding

Page 35: Spring + QueryDSL + MongoDB Presentation

Questions?

Page 36: Spring + QueryDSL + MongoDB Presentation

Thank You