A presentation at GrumpyConf in March 2018 in Toronto, ON, Canada by Lorna Jane Mitchell
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
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
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
View Road Trip Through Database Country on Notist.
Dismiss
High-level overview of some of my favourite types of databases - at GrumpyConf in Toronto