18
How to Use NoSQL in Enterprise Java Applications Patrick Baumgartner NoSQL Roadshow | Zürich | 26.04.2012

How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

Embed Size (px)

DESCRIPTION

Once you begin developing with NoSQL technologies you will quickly realize that accessing data stores or services often requires in-depth knowledge of proprietary APIs that are typically not designed for use in enterprise Java applications. Sooner or later you might find yourself wanting to write an abstraction layer to encapsulate those APIs and simplify your application code. Luckily such an abstraction layer already exits: Spring Data.

Citation preview

Page 1: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

How to Use NoSQLin Enterprise Java Applications

Patrick Baumgartner

NoSQL Roadshow | Zürich | 26.04.2012

Page 2: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

2

Agenda

• Speaker Profile• New Demands on Data Access• New Types of Data Stores• Integrating NoSQL Data Stores• Spring Data Overview • Example with MongoDB• Q & A

Page 3: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

3

Speaker Profile

Patrick Baumgartner• Senior Software Consultant | Partner• VMware/SpringSource Certified Instructor (Spring Trainer)• Spring Framework, OSGi & agile engineering practices• Co-author of „OSGi für Praktiker“ (Hanser)

Swiftmind GmbH http://www.swiftmind.com

• Enterprise Java, Spring & OSGi consulting• Spring & OSGi workshops & trainings• Agile engineering practices workshops

Page 4: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

4

New Demands on Data Access

• Structured and unstructured data

• Massive amounts of data • Inexpensive horizontal

scaling• Apps and data in the

cloud• Social network features• …

Page 5: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

5

New Types of Data Stores

Page 6: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

6

We are not architects!

Integrating NoSQL Data Stores #1

http://www.flickr.com/photos/sakeeb/4087246274

Page 7: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

7

Don’t re-invent the wheel!

Integrating NoSQL Data Stores #2

http://www.flickr.com/photos/dmott9/5921728819

Page 8: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

8

There is some Spring!

Integrating NoSQL Data Stores #3

http://www.springsource.org/spring-data

Page 9: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

9

Spring Data

• Same goals as the Spring Framework– Productivity improvement– Programming model consistency– Portability

• Umbrella for subprojects, specific to a given database• Mapping support for Java domain objects

• http://www.springsource.org/spring-data• http://github.com/SpringSource/spring-data-XXX

Page 10: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

10

Spring Data – Overview #1

• JPA• JDBC Extensions

Relational Databases

• Apache Hadoop

Big Data

• GemFire

Data Grid

• REST

HTTP

• Redis• Riak

Key Value Stores

Page 11: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

11

Spring Data – Overview #2

• Mongo DB• Couch DB (planned)

Document Stores

• Neo4J

Graph Databases

• HBase (planned)• Cassandra (planned)

Column Stores

• Amazon S3

Blob Stores

• Commons

Common Infrastructure

Page 12: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

12

Spring Data – Key Features

• Low level data access API abstraction– MongoTemplate, RiakTemplate, Neo4jTemplate– Exception translation– Transaction management

• Object Mapping (Java to data store)• Generic Repository Support

– Basic CRUD, dynamic finders, pagination and sorting • Spring namespaces• Cross Store Persistence Programming Model

– @Entity, @Document, @NodeEntity

Page 13: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

13

Spring Data MongoDB – Example

Page 14: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

14

Spring Data MongoDB – Entity

Stored JSON:{ "_id" : ObjectId("4f9886290364b533b3acd4ce"), "_class" : "com.acme.hello.domain.Person", "name" : "Bob", "age" : 33 }

Page 15: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

15

Spring Data MongoDB – Configuration

Page 16: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

16

Spring Data MongoDB – Repository

Page 17: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

17

Use a data model which really matches to your data …

Give it a try!

http://www.flickr.com/photos/juniorvelo/3267647833

Page 18: How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich

18

Q & A

Patrick Baumgartnerpatrick.baumgartner [at] swiftmind [dot] comhttp://www.swiftmind.com http://www.twitter.com/patbaumgartner