69
Databases the Choice Is Yours Philipp Krenn @xeraa

"Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Embed Size (px)

Citation preview

Page 1: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Databasesthe Choice Is Yours

Philipp Krenn @xeraa

Page 2: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 3: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 4: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 5: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Infrastructure | Developer Advocate

Page 6: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 7: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

"relational model and normal form"

"data independence"

Page 8: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Relational AlgebraBook "Seven Databases in Seven Weeks"

Page 9: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 10: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

DeclarativeImplementation detail of the RDBMS

(Query Optimizer)

Page 11: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

User InteractionAggregated reports

Concurrency, integrity, consistency, type-safety

Page 12: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

From a

Wide Variety of Databasesto

A Dark Age

Page 13: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 14: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

http://blog.8thlight.com/uncle-bob/2012/05/15/NODB.html

Page 15: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Slow &inflexible

Page 16: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Schema Flexibilityhttp://pragprog.com/magazines/2012-05/beyond-the-bit-bucket

Page 17: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 18: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 19: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 20: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

NoSQLNot Only SQL

Page 21: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 22: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 23: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Big DataVery broad, including NoSQL

Offline data / data warehouse,Hadoop & Spark

Page 24: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 25: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

http://db-engines.com/en/ranking

Page 26: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 27: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

CouchDB, Couchbase, Elasticsearch,...

Page 28: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Ted Neward: ORM is "The Vietnam of Computer Science"

http://blogs.tedneward.com/post/the-vietnam-of-computer-science/

Page 29: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

@OneToMany(mappedBy = "destCustomerId")@ManyToMany@Fetch(FetchMode.SUBSELECT)@JoinTable(name = "customer_dealer_map", joinColumns = { @JoinColumn(name = "customer_id", referencedColumnName = "id")}, inverseJoinColumns = { @JoinColumn(name = "dealer_id", referencedColumnName = "id")})private Collection<Client> dealers;

Page 30: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 31: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

public abstract class EmployeeEntity { protected String name;}public class ManagerEntity extends EmployeeEntity { protected Boolean approveFunds;}public class WorkerEntity extends EmployeeEntity { protected Integer yearsExperience;}

Page 32: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

RDBMS1. Union table with (many) NULL

values

Page 33: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

RDBMS2. Concrete instances without common

queries

Page 34: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

RDBMS3. Base table JOINed with concrete

instances

Page 35: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

@Entity(value = "employee")public abstract class EmployeeEntity { @Id protected ObjectId id; protected String name;}public class ManagerEntity extends EmployeeEntity { protected Boolean approveFunds;}public class WorkerEntity extends EmployeeEntity { protected Integer yearsExperience;}

Page 36: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

{ "_id": ObjectId("5461c8bf9e2acf32ed50c079"), "className": "net.xeraa.morphia_demo.entities.ManagerEntity", "name": "Peter", "approveFunds": true}{ "_id": ObjectId("524d9fe7e4b0f8bd3031f84e"), "className": "net.xeraa.morphia_demo.entities.WorkerEntity", "name": "Philipp", "yearsExperience": 10}

Page 37: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 38: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Key-Value Storeand more

REmote DIctionary Server

Page 39: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Statistics (Login)Bitset

HyperLogLog

Page 40: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

BitsetFirst user bit 1, second user bit 2,...

A million users ~123KB

Page 41: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

HyperLogLogUnique elements in 12KB regardless of

their numberError rate ~0,81%

http://redis.io/commands/pfcount

Page 42: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

ComparisonHyperLogLog: constant sizeBitset: exact & aggregates

Page 43: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 44: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Scalable & highly available

Consistent Hashing

Page 45: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 46: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 47: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 48: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 49: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 50: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Eventually consistent was too hard, so we went with

immediately inaccurate.— https://twitter.com/mysqlborat/status/621785755107524608

Page 51: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 52: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 53: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

SQL Databasesnot only RDBMS

Page 54: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Cassandra Query Language (CQL)Google Query Language (GQL)

Couchbase N1QLRethinkDB Query Language (ReQL)

Page 55: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

RDBMS features & maturity+

NoSQL influence

Page 56: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 57: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Full-Text Search

Page 58: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 59: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 60: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Document ScoreTerm Frequency (TF) / Inverse

Document Frequency (IDF)Field-length norm

https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html

Page 61: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 62: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Conclusion

Page 63: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 64: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

But is it fast?

Page 65: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 66: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic
Page 67: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

Thanks!Questions? Swag

@xeraa

Page 68: "Databases - The Choice is Yours", Philipp Krenn, Developer Advocate at Elastic

CreditsSchnitzel https://flic.kr/p/9m27wm

Architecture https://flic.kr/p/6dwCAeConchita https://flic.kr/p/nBqSHT

Twelve: https://flic.kr/p/3iRDd9Consistent hashing https://

highlyscalable.wordpress.com/2012/09/18/