Road Trip Through Database Country Lorna Mitchell, IBM

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

We rely on databases @lornajane

Database Country @lornajane

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

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

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

PHP and MySQL: BFFs @lornajane

Life Advice: Learn SQL @lornajane

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

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

CAP Theorem for Distributed DBs @lornajane

CAP Theorem for Distributed DBs @lornajane

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

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

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

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

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

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

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

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

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

Database Country @lornajane

TL;DR Use PostgreSQL with Redis @lornajane

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