Road Trip Through Database Country

A presentation at GrumpyConf in March 2018 in Toronto, ON, Canada by Lorna Jane Mitchell

Slide 1

Slide 1

Road Trip Through Database Country Lorna Mitchell, IBM

Slide 2

Slide 2

Data is the lifeblood of our applications, but we rarely study it. Why? @lornajane

Slide 3

Slide 3

We rely on databases @lornajane

Slide 4

Slide 4

Database Country @lornajane

Slide 5

Slide 5

Relational Databases Relational databases are brilliant if you need to relate different bits of data to each other. For example: Order data They are also reliable places to put things, implementing ACID compliance. @lornajane

Slide 6

Slide 6

ACID Compliance • Atomicity • Consistency • Isolation • Durability @lornajane

Slide 7

Slide 7

Upfront schema planning is required. Changing structure can be painful. @lornajane

Slide 8

Slide 8

PHP and MySQL: BFFs @lornajane

Slide 9

Slide 9

Life Advice: Learn SQL @lornajane

Slide 10

Slide 10

Document Databases • Schemaless, just add any JSON document • Good to excellent performance • Not usually ACID-compliant For example: product catalog, CMS data Speedy and distributed @lornajane

Slide 11

Slide 11

BASE • Basic Availability • Soft-state • Eventually consistent @lornajane

Slide 12

Slide 12

CAP Theorem for Distributed DBs @lornajane

Slide 13

Slide 13

CAP Theorem for Distributed DBs @lornajane

Slide 14

Slide 14

Offline First Common to see CouchDB in Progressive Web Apps because it can replicate to PouchDB on the client side. @lornajane

Slide 15

Slide 15

PHP and Document Databases Document databases are well-supported in PHP: • MongoDB needs an extension and a Composer library • CouchDB and RethinkDB can use Composer libraries @lornajane

Slide 16

Slide 16

Special Mention: ElasticSearch ElasticSearch is a Document Database “You Know, for Search” Duplicate data to it, use it for search @lornajane

Slide 17

Slide 17

Data Warehouses • As simple as a read-only database copy to report against. • May use specific tech, e.g. Hadoop, Apache Spark • Can serve as an archive to reduce load on the production system. @lornajane

Slide 18

Slide 18

Graph Databases Represent nodes and edges, with data attached. For example: recommendations, actual route planning @lornajane

Slide 19

Slide 19

Think of your data as nodes and edges, with properties. What questions will you need to answer? @lornajane

Slide 20

Slide 20

Redis In-memory key/value store, with an excellent grasp of data types. For example: sessions, tracking the most-viewed article today, caching (especially calculated) stuff Redis cluster is available for larger use cases @lornajane

Slide 21

Slide 21

For Redis, performance and persistence are inversely correlated. @lornajane

Slide 22

Slide 22

Redis Data Types Redis supports (these and more): • strings and numbers • lists • hashes • sets and sorted sets Also: simple Pub/Sub @lornajane

Slide 23

Slide 23

Database Country @lornajane

Slide 24

Slide 24

TL;DR Use PostgreSQL with Redis @lornajane

Slide 25

Slide 25

Resources https://www.ibm.com/cloud/data-management https://en.wikipedia.org/wiki/CAP_theorem http://lornajane.net “7 Databases in 7 Weeks” Eric Redmond and Jim R Wilson https://insights.stackoverflow.com/survey/2018/#technologymost-loved-dreaded-and-wanted-databases @lornajane