+ All Categories
Home > Documents > Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot...

Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot...

Date post: 09-Aug-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
60
© Zühlke 2013 Michael Lehmann & Roman Kuczynski Polyglot Persistence with NoSQL Advanced software architecture by using multiple persistence technologies 19. September 2013
Transcript
Page 1: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

© Zühlke 2013

Michael Lehmann & Roman Kuczynski

Polyglot Persistence with NoSQL Advanced software architecture by using multiple persistence technologies

19. September 2013

Page 2: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

SELECT * FROM dbo.Presentation WHERE Title LIKE 'Polyglot pers%'

Page 3: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

http://mechiz.deviantart.com/art/India-32-327938771

Our holy cow!

Page 4: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

http://www.deviantart.com/art/swiss-army-knife-185060119

One size fits all

Page 5: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Michael Lehmann ‏‏@lehmamic

Senior Software Engineer @Zühlke since 2012

.Net enterprise and cloud applications

Roman Kuczynski ‏‏@qtschi

Senior Software Engineer @Zühlke since 2011

Data(base) architectures, BI and Big Data

Page 6: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Borat ‏‏@BoratNoSQL

Why should I change? It worked for me until now!

Page 7: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

http://memod.deviantart.com/art/Racing-Lights-12889655

Listen to the business

Page 8: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

RDBMS

Volume

Page 9: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

RDBMS

Volume

Velocity

Page 10: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

RDBMS

Volume

Velocity

Variability

Page 11: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

RDBMS

Volume

Agility Velocity

Variability

Page 12: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Borat ‏‏@BoratNoSQL

Sounds plausible, but what options do we have?

Page 13: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

#NoSQL

Page 14: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Increasing performance through scale out

Page 15: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Roger Federer

Rafael Nadal

Andy Murray

N. Djokovic

Scaling by sharding

Page 16: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Roger Federer Roger Federer

Scaling by replication

Roger Federer

N. Djokovic N. Djokovic N. Djokovic

Page 17: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Impedance mismatch using relational databases

public class BlogPost { public int Id { get; set; } public string Content { get; set; } public List<string> Tags { get; set; } }

BlogPost - Id (int) - Content (varchar)

Tag - Id (int) - BlogPostId (int) - Name (varchar)

Page 18: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Design for the relational model

public class BlogPost { public int Id { get; set;} public List<Tag> Tags { get; set; } } public class Tag { public int Id { get; set; } public PlogPost BelongsTo { get; set; } public string Name { get; set; } }

Page 19: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

NoSQL databases increase productivity

var post = new BlogPost { Id = 1, Content = "Any text content", Tags = new [] { "NoSQL", "Cloud", "PolyglotPersistence" } }; collection.Insert(post);

Page 20: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Data integrity cannot be enforced

Page 21: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

NoSQL databases are eventual consistent

Page 22: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

NY ZH

Free Free

We look for a hotel room

Page 23: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

NY ZH

booked Free

We book the room

Page 24: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

NY ZH

booked Free Inconsistency

Inconsistency window

Page 25: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

NY ZH

booked Free Inconsistency

Someone else books the same room

Page 26: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

NY ZH

booked booked Inconsistency

Conflict!

Page 27: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Why not handle such cases by business?

Page 28: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

performance consistency

Page 29: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

What do we have in our toolbox?

Page 30: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

A lot of database products

Page 31: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Borat ‏‏@BoratNoSQL

I feel swamped, how can I differentiate these products?

Page 32: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Key-value stores

Page 33: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Document stores

Page 34: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

{ "playerId": 1, "firstName": "Roger", "lastName": "Federer", "ranking": "#1", "address": { "city": "Wollerau" } "sponsors“: [ { "id": 1, "name": "Nike" "amount": "16’000 SFR" }, { "id": 2, "name": "Lindt" "amount": "5’000 SFR" }, { "id": 3, "name": "Credit Suisse" "amount": “13’000 SFR" }] }

The document store data model

Page 35: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Column-family stores

Page 36: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Row 1 FirstName:Roger LastName:Federer

Row 2 FirstName:Andy LastName:Murray

Row 3 NickName:Rafa LastName:Nadal

Row n-1 Fruit:Apple Price:1.40$

Row n Fruit:Cherry Price:2.60$

Column-Family: Players Column-Family: Fruits

The column-family data model

Page 37: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Graph databases

Page 38: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

The graph data model

Node [1] Name = ‘John’

Node [2] Name = ‘Sara’

Node [5] Name = ‘Joe’

Node [3] Name = ‘Maria’

Node [4] Name = ‘Steve’

friend friend

friend friend

Page 39: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application
Page 40: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

http://vallo29.deviantart.com/art/The-choice-150871274

Decisions, decisions…

Page 41: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Borat ‏‏@BoratNoSQL

With every database I have to take tradeoffs into‏account,‏I‏don’t‏want‏to‏choose‏only‏one!

Page 42: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Pol·y·glot – Adjective Knowing or using several languages

Per·sist·ence – Noun The continued or prolonged existence of something

Page 43: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Retail Store

Recomendations

Neo4J

Product Catalog

Raven DB

Financial Data

MSSQL

Shopping Cart

Redis

Polyglot persistence illustrated

Page 44: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Borat ‏‏@BoratNoSQL

Sounds great! But where is the catch?

Page 45: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

We need appropriate skills

Page 46: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

http://www.deviantart.com/art/architecture-71406568

Invest in software architecture

Page 47: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Integration databases have been used for years

Database

Application A

Application B

Page 48: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Polyglot persistence doesn’t work here

Database 1

Application A

Application B

Database 2

Page 49: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Application databases do not share it’s data

Database 1

Application A

Application B

Database 2

Page 50: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Borat ‏‏@BoratNoSQL

Fine! But I have not only one

application.

Page 51: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Application database with SOA

Database 1

Application A

Application B

Database 2

Service

Page 52: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

It’s all about layers

Page 53: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Well known layers

Presentation Layer

Domain Layer

Resource Access Layer ( Data Access Layer)

Resources

Page 54: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Common data tier design

Presentation

Domain

DAL

Resources RDBMS

Search

Transactions

Caching

Blobs

Triggers

Reporting

User Interface

Relational-Object Object-Relational

Page 55: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

http://gundross.deviantart.com/art/Chair-72928743

The truth of reusability

Page 56: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Data access with reusable and seamless services

Presentation

Domain

DAL

Resources RDBMS

Search

Transactions

Caching

Blobs

Triggers

Reporting

User Interface

Relational-Object Object-Relational

Presentation

Domain

DAL

Resources

User Interface

Search

Transactions

Caching

Blobs

Batch

Reporting

Key-Value Document RDBMS

Page 57: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Putting all together

Key-Value Document RDBMS

Search

Caching

Reporting

Domain Services

User Interface

Database Tier

Middle Tier

Page 58: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Use the right tool!

Page 59: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Resources

NoSQL Distilled Author: Martin Fowler, Pramod J. Sadalage ISBN: 978-0321826626

Making Sense of NoSQL Author: Dan McCreary, Ann Kelly ISBN: 978-1617291074

Links http://nosql-database.org/ http://en.wikipedia.org/wiki/NoSQL

Page 60: Polyglot Persistence with NoSQLnosqlroadshow.com/dl/basho-roadshow-zurich-2013/slides/...Polyglot persistence doesn’t work here Database 1 Application A Application B 2 Application

Thank you!


Recommended