Road Trip Through Database Country
Lorna Mitchell, IBM
Slide 2
Data is the lifeblood of our applications, but we rarely study it. Why?
@lornajane
Slide 3
We rely on databases
@lornajane
Slide 4
Database Country
@lornajane
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
Upfront schema planning is required. Changing structure can be painful.
@lornajane
Slide 8
PHP and MySQL: BFFs
@lornajane
Slide 9
Life Advice: Learn SQL
@lornajane
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
BASE • Basic Availability • Soft-state • Eventually consistent
@lornajane
Slide 12
CAP Theorem for Distributed DBs
@lornajane
Slide 13
CAP Theorem for Distributed DBs
@lornajane
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
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
Special Mention: ElasticSearch ElasticSearch is a Document Database “You Know, for Search” Duplicate data to it, use it for search
@lornajane
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
Graph Databases Represent nodes and edges, with data attached. For example: recommendations, actual route planning
@lornajane
Slide 19
Think of your data as nodes and edges, with properties. What questions will you need to answer? @lornajane
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
For Redis, performance and persistence are inversely correlated.
@lornajane
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
Database Country
@lornajane
Slide 24
TL;DR Use PostgreSQL with Redis
@lornajane
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