SlideShare a Scribd company logo
1 of 43
Download to read offline
The Triumph of Simplicity 
How database complexity will be replaced by simple services 
“Life is really simple, but we insist on making it complicated.” 
-Confucius
Who am I?
IAN PLOSKER
Co-founder & CTO 
@dstroyallmodels about.me/ian.plosker
Our goal is to make storing and 
querying so easy, you don’t need 
databases
E.W. Dijkstra 
“Simplicity is a great virtue 
but it requires hard work to 
achieve it and education to 
appreciate it. And to make 
matters worse: complexity 
sells better.” 
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD896.html
Some people believe 
that complexity is how 
value is added
We fetishize 
complexity 
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD898.html
SELECT SUM(offerTotal) as theOfferTotal, SUM(lienTotal) AS theLienTotal, SUM(CLVtotal) AS theCLVtotal, 
SUM(estGrossProfitTotal) AS theESTGPtotal FROM (( SELECT COALESCE(SUM(COALESCE(offerAmount, 0)), 0) AS 
offerTotal, COALESCE(SUM(COALESCE(amount, 0) + COALESCE(legalFees, 0) + COALESCE(costs, 0)), 0) AS lienTotal, 
COALESCE(SUM(((amount + legalFees + costs) * (1 + (rateOfInterest / 100) * (FLOOR((UNIX_TIMESTAMP(NOW()) - 
UNIX_TIMESTAMP(dateOfAttachment)) / 86400) / 365)))), 0) AS CLVtotal, COALESCE(SUM((((amount + legalFees + costs) * (1 
+ (rateOfInterest / 100) * (FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(dateOfAttachment)) / 86400) / 365))) - 
COALESCE(offerAmount, 0))), 0) AS estGrossProfitTotal FROM lienTable AS theLienTable, propertyTable, property_lien, 
stateInterestTable, data, judgementLienTable WHERE theLienTable.lienID = property_lien.lienID AND propertyTable.propertyID = 
property_lien.propertyID AND propertyTable.state = stateInterestTable.state AND theLienTable.lienID = 
judgementLienTable.lienID AND theLienTable.lienStatusID IN (65, 70, 75) AND data.id = (SELECT data.id FROM lienTable, data, 
data_lien WHERE lienTable.lienID = data_lien.lienID AND data_lien.id = data.id AND category = 15 AND lienTable.lienID = 
theLienTable.lienID ORDER BY data.id DESC LIMIT 1) AND dateOfAttachment != 0 AND UNIX_TIMESTAMP(NOW()) > 
UNIX_TIMESTAMP(dateOfAttachment) AND FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(dateOfAttachment)) / 
86400) > 0 AND rateOfInterest > 0 ) UNION ( SELECT COALESCE(SUM(COALESCE(offerAmount, 0)), 0) AS offerTotal, 
COALESCE(SUM(COALESCE(amount, 0) + COALESCE(legalFees, 0) + COALESCE(costs, 0)), 0) AS lienTotal, 
COALESCE(SUM(((amount + legalFees + costs) * (1 + (rateOfInterest / 100) * (FLOOR((UNIX_TIMESTAMP(NOW()) - 
UNIX_TIMESTAMP(judgementDate)) / 86400) / 365)))), 0) AS CLVtotal, COALESCE(SUM((((amount + legalFees + costs) * (1 + 
(rateOfInterest / 100) * (FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(dateOfAttachment)) / 86400) / 365))) - 
COALESCE(offerAmount, 0))), 0) AS estGrossProfitTotal FROM lienTable AS theLienTable, propertyTable, property_lien, 
stateInterestTable, data, judgementLienTable WHERE theLienTable.lienID = property_lien.lienID AND propertyTable.propertyID = 
property_lien.propertyID AND propertyTable.state = stateInterestTable.state AND theLienTable.lienID = 
judgementLienTable.lienID AND theLienTable.lienStatusID IN (65, 70, 75) AND data.id = (SELECT data.id FROM lienTable, data, 
data_lien WHERE lienTable.lienID = data_lien.lienID AND data_lien.id = data.id AND category = 15 AND lienTable.lienID = 
theLienTable.lienID ORDER BY data.id DESC LIMIT 1) AND COALESCE(dateOfAttachment, 0) = 0 AND judgementDate != 0 
AND UNIX_TIMESTAMP(NOW()) > UNIX_TIMESTAMP(judgementDate) AND FLOOR((UNIX_TIMESTAMP(NOW()) - 
UNIX_TIMESTAMP(judgementDate)) / 86400) > 0 AND rateOfInterest > 0 ) ) AS theBigTable;
Who Owns Complexity?
Simple Complex
Simple Complex
Simple Complex
Simple Complex 
aws ec2 run-instances --image-id ami-c3b8d6aa 
--count 2 --instance-type t1.micro -- 
key-name MyKeyPair --security-groups 
MySecurityGroup
Simple Complex
Simple Complex 
author:Dijkstra AND year:[1970 TO 1985]
Let’s talk databases
Databases in 2005
MEMCACHE 
BERKLEY DB 
GENIEDB 
COUCHBASE 
Databases in 2013 
REDIS 
SWIFT 
RIAK 
VOLDEMORT 
TOKYO CABINET 
HBASE 
TEMPODB 
ELASTIC SEARCH 
NEO4J 
HIBARI 
COUCHDB 
BIG COUCH 
MARKLOGIC SERVER 
ORIENTDB 
NOSQL DB 
DYNAMO 
COHERENCE 
AEROSPIKE 
INFINIGRAPH 
DEX 
DRAWN TO SCALE 
SIMPLEDB 
FLOCKDB 
MNESIA 
COHERENCE 
MONGODB 
CASSANDRA 
25 databases in production today that didn’t exist 7 years ago
ONLINE QUERY TYPES 
Key-Value Search Geo 
Graph/ 
Relation Event 
Scale-up 
BerkleyDB 
CouchDB 
MongoDB 
MySQL 
SOLR 
Sphinx 
PostGIS 
MongoDB 
SOLR 
neo4j MySQL 
Scale-out 
Riak 
Cassandra elasticsearch elasticsearch titan HBase
The database paradox of choice: 
Choice has brought complexity
Klout’s Data Architecture 
1. Hbase( 
2. MySQL( 
3. Elas2cSearch( 
4. MongoDB( 
(
Imgur’s Data Architecture 
1. Hbase(((2.(Elas,cSearch((3.(MySQL((4.(Memcache((5.(Redis((6.(HAproxy(
The Value of Simplicity Varies Across Domains 
design systems economics
design 
Simple or complex?
systems 
Simple or complex?
economics 
Simple or complex?
design systems 
economics 
API 
expose utility, hide complexity
Introducing: Leverage
Simple Complex 
Fulcrum (API)
Simple Complex
Simple Complex
Simple Complex 
author:Dijkstra AND year:[1970 TO 1985]
Simple Complex 
1. Hbase( 
2. MySQL( 
3. Elas2cSearch( 
4. MongoDB( 
(
API Growth
Where does your business provide value? 
Simple Complex 
Ease of use Leverage Economies of Scale
Simplicity 
h/t @AntonyFalco
The API 
• HTTP REST 
• JSON in/JSON out 
• Hosted as a Service
Key Value 
GET /v0/$collection/$key # Retrieve a value 
PUT /v0/$collection/$key # Store a value 
POST /v0/$collection # Store a value (server-generated key) 
GET /v0/$collection # List the contents of a collection in key order
Search 
GET /v0/$collection?query=$query # Query a collection 
GET /v0/$collection?query=$query&sort=$field:$direction # Query and sort
Graph 
PUT /v0/$collectionA/$keyA/relation/$kind/$collectionB/$keyB # Create a relation 
GET /v0/$collection/$key/relations/$kind # List relations 
GET /v0/$collection/$key/relations/$kindA/$kindB # List relations
Events/Time-Ordered 
GET /v0/$collection/$key/events/$kind # Events 
POST /v0/$collection/$key/events/$kind # Store event 
POST /v0/$collection/$key/events/$kind/$timestamp # Store a value (server-generated key)
Advanced Features 
• Immutable data 
• Optimistic 
concurrency control 
• Historical Queries

More Related Content

Similar to Triumph of Simplicity: How databases will be replaced by simple services.

MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document StoreDave Stokes
 
MySQL Document Store -- SCaLE 17x Presentation
MySQL Document Store -- SCaLE 17x PresentationMySQL Document Store -- SCaLE 17x Presentation
MySQL Document Store -- SCaLE 17x PresentationDave Stokes
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesDave Stokes
 
Big Data Expo 2015 - Gigaspaces Making Sense of it all
Big Data Expo 2015 - Gigaspaces Making Sense of it allBig Data Expo 2015 - Gigaspaces Making Sense of it all
Big Data Expo 2015 - Gigaspaces Making Sense of it allBigDataExpo
 
Open Source World June '21 -- JSON Within a Relational Database
Open Source World June '21 -- JSON Within a Relational DatabaseOpen Source World June '21 -- JSON Within a Relational Database
Open Source World June '21 -- JSON Within a Relational DatabaseDave Stokes
 
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...Dave Stokes
 
ClickHouse 2018. How to stop waiting for your queries to complete and start ...
ClickHouse 2018.  How to stop waiting for your queries to complete and start ...ClickHouse 2018.  How to stop waiting for your queries to complete and start ...
ClickHouse 2018. How to stop waiting for your queries to complete and start ...Altinity Ltd
 
ClickHouse Introduction by Alexander Zaitsev, Altinity CTO
ClickHouse Introduction by Alexander Zaitsev, Altinity CTOClickHouse Introduction by Alexander Zaitsev, Altinity CTO
ClickHouse Introduction by Alexander Zaitsev, Altinity CTOAltinity Ltd
 
PigSPARQL: A SPARQL Query Processing Baseline for Big Data
PigSPARQL: A SPARQL Query Processing Baseline for Big DataPigSPARQL: A SPARQL Query Processing Baseline for Big Data
PigSPARQL: A SPARQL Query Processing Baseline for Big DataAlexander Schätzle
 
20180420 hk-the powerofmysql8
20180420 hk-the powerofmysql820180420 hk-the powerofmysql8
20180420 hk-the powerofmysql8Ivan Ma
 
Database Management System
Database Management SystemDatabase Management System
Database Management SystemAbishek V S
 
Windows Azure and a little SQL Data Services
Windows Azure and a little SQL Data ServicesWindows Azure and a little SQL Data Services
Windows Azure and a little SQL Data Servicesukdpe
 
Kerberizing Spark: Spark Summit East talk by Abel Rincon and Jorge Lopez-Malla
Kerberizing Spark: Spark Summit East talk by Abel Rincon and Jorge Lopez-MallaKerberizing Spark: Spark Summit East talk by Abel Rincon and Jorge Lopez-Malla
Kerberizing Spark: Spark Summit East talk by Abel Rincon and Jorge Lopez-MallaSpark Summit
 
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020
MySQL Goes to 8!  FOSDEM 2020 Database Track, January 2nd, 2020MySQL Goes to 8!  FOSDEM 2020 Database Track, January 2nd, 2020
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020Geir Høydalsvik
 
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander ZaitsevMigration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander ZaitsevAltinity Ltd
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSuzquiano
 
What's New for Developers in SQL Server 2008?
What's New for Developers in SQL Server 2008?What's New for Developers in SQL Server 2008?
What's New for Developers in SQL Server 2008?ukdpe
 
SQL Server 2008 Overview
SQL Server 2008 OverviewSQL Server 2008 Overview
SQL Server 2008 OverviewEric Nelson
 
Carrier Paas - CloudStack Collaboration Event 2012
Carrier Paas - CloudStack Collaboration Event 2012Carrier Paas - CloudStack Collaboration Event 2012
Carrier Paas - CloudStack Collaboration Event 2012Uri Cohen
 

Similar to Triumph of Simplicity: How databases will be replaced by simple services. (20)

Master tuning
Master   tuningMaster   tuning
Master tuning
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document Store
 
MySQL Document Store -- SCaLE 17x Presentation
MySQL Document Store -- SCaLE 17x PresentationMySQL Document Store -- SCaLE 17x Presentation
MySQL Document Store -- SCaLE 17x Presentation
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for Newbies
 
Big Data Expo 2015 - Gigaspaces Making Sense of it all
Big Data Expo 2015 - Gigaspaces Making Sense of it allBig Data Expo 2015 - Gigaspaces Making Sense of it all
Big Data Expo 2015 - Gigaspaces Making Sense of it all
 
Open Source World June '21 -- JSON Within a Relational Database
Open Source World June '21 -- JSON Within a Relational DatabaseOpen Source World June '21 -- JSON Within a Relational Database
Open Source World June '21 -- JSON Within a Relational Database
 
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
 
ClickHouse 2018. How to stop waiting for your queries to complete and start ...
ClickHouse 2018.  How to stop waiting for your queries to complete and start ...ClickHouse 2018.  How to stop waiting for your queries to complete and start ...
ClickHouse 2018. How to stop waiting for your queries to complete and start ...
 
ClickHouse Introduction by Alexander Zaitsev, Altinity CTO
ClickHouse Introduction by Alexander Zaitsev, Altinity CTOClickHouse Introduction by Alexander Zaitsev, Altinity CTO
ClickHouse Introduction by Alexander Zaitsev, Altinity CTO
 
PigSPARQL: A SPARQL Query Processing Baseline for Big Data
PigSPARQL: A SPARQL Query Processing Baseline for Big DataPigSPARQL: A SPARQL Query Processing Baseline for Big Data
PigSPARQL: A SPARQL Query Processing Baseline for Big Data
 
20180420 hk-the powerofmysql8
20180420 hk-the powerofmysql820180420 hk-the powerofmysql8
20180420 hk-the powerofmysql8
 
Database Management System
Database Management SystemDatabase Management System
Database Management System
 
Windows Azure and a little SQL Data Services
Windows Azure and a little SQL Data ServicesWindows Azure and a little SQL Data Services
Windows Azure and a little SQL Data Services
 
Kerberizing Spark: Spark Summit East talk by Abel Rincon and Jorge Lopez-Malla
Kerberizing Spark: Spark Summit East talk by Abel Rincon and Jorge Lopez-MallaKerberizing Spark: Spark Summit East talk by Abel Rincon and Jorge Lopez-Malla
Kerberizing Spark: Spark Summit East talk by Abel Rincon and Jorge Lopez-Malla
 
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020
MySQL Goes to 8!  FOSDEM 2020 Database Track, January 2nd, 2020MySQL Goes to 8!  FOSDEM 2020 Database Track, January 2nd, 2020
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020
 
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander ZaitsevMigration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
 
What's New for Developers in SQL Server 2008?
What's New for Developers in SQL Server 2008?What's New for Developers in SQL Server 2008?
What's New for Developers in SQL Server 2008?
 
SQL Server 2008 Overview
SQL Server 2008 OverviewSQL Server 2008 Overview
SQL Server 2008 Overview
 
Carrier Paas - CloudStack Collaboration Event 2012
Carrier Paas - CloudStack Collaboration Event 2012Carrier Paas - CloudStack Collaboration Event 2012
Carrier Paas - CloudStack Collaboration Event 2012
 

More from Orchestrate

Databases and Queries: Matching Performance and Reliability.
Databases and Queries: Matching Performance and Reliability. Databases and Queries: Matching Performance and Reliability.
Databases and Queries: Matching Performance and Reliability. Orchestrate
 
Databases, the Cloud and its Discontents
Databases, the Cloud and its DiscontentsDatabases, the Cloud and its Discontents
Databases, the Cloud and its DiscontentsOrchestrate
 
How To Evaluate an API
How To Evaluate an APIHow To Evaluate an API
How To Evaluate an APIOrchestrate
 
Our Brave Modular Future
Our Brave Modular FutureOur Brave Modular Future
Our Brave Modular FutureOrchestrate
 
The Architect is Not Convince
The Architect is Not ConvinceThe Architect is Not Convince
The Architect is Not ConvinceOrchestrate
 
API Con UK Workshop
API Con UK WorkshopAPI Con UK Workshop
API Con UK WorkshopOrchestrate
 

More from Orchestrate (7)

Databases and Queries: Matching Performance and Reliability.
Databases and Queries: Matching Performance and Reliability. Databases and Queries: Matching Performance and Reliability.
Databases and Queries: Matching Performance and Reliability.
 
Databases, the Cloud and its Discontents
Databases, the Cloud and its DiscontentsDatabases, the Cloud and its Discontents
Databases, the Cloud and its Discontents
 
How To Evaluate an API
How To Evaluate an APIHow To Evaluate an API
How To Evaluate an API
 
Our Brave Modular Future
Our Brave Modular FutureOur Brave Modular Future
Our Brave Modular Future
 
The Architect is Not Convince
The Architect is Not ConvinceThe Architect is Not Convince
The Architect is Not Convince
 
API Con UK Workshop
API Con UK WorkshopAPI Con UK Workshop
API Con UK Workshop
 
NoSQL Now
NoSQL NowNoSQL Now
NoSQL Now
 

Recently uploaded

[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypseTomasz Kowalczewski
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationElement34
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit MilanNeo4j
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletAndrea Goulet
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Maxim Salnikov
 
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdfSelfMade bd
 
From Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIFrom Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIInflectra
 
BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AIAGATSoftware
 
A Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfA Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfICS
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024MulesoftMunichMeetup
 
GraphSummit Milan - Neo4j: The Art of the Possible with Graph
GraphSummit Milan - Neo4j: The Art of the Possible with GraphGraphSummit Milan - Neo4j: The Art of the Possible with Graph
GraphSummit Milan - Neo4j: The Art of the Possible with GraphNeo4j
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckMarc Lester
 
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxFrom Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxNeo4j
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNeo4j
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfkalichargn70th171
 
Rapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and InsightsRapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and Insightsrapidoform
 
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...drm1699
 

Recently uploaded (20)

[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test Automation
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
 
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea Goulet
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?
 
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
 
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
 
From Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIFrom Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST API
 
BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AI
 
A Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfA Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdf
 
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 
GraphSummit Milan - Neo4j: The Art of the Possible with Graph
GraphSummit Milan - Neo4j: The Art of the Possible with GraphGraphSummit Milan - Neo4j: The Art of the Possible with Graph
GraphSummit Milan - Neo4j: The Art of the Possible with Graph
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined Deck
 
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxFrom Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMs
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdf
 
Rapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and InsightsRapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and Insights
 
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
 

Triumph of Simplicity: How databases will be replaced by simple services.

  • 1. The Triumph of Simplicity How database complexity will be replaced by simple services “Life is really simple, but we insist on making it complicated.” -Confucius
  • 4. Co-founder & CTO @dstroyallmodels about.me/ian.plosker
  • 5. Our goal is to make storing and querying so easy, you don’t need databases
  • 6. E.W. Dijkstra “Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.” http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD896.html
  • 7. Some people believe that complexity is how value is added
  • 8. We fetishize complexity http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD898.html
  • 9. SELECT SUM(offerTotal) as theOfferTotal, SUM(lienTotal) AS theLienTotal, SUM(CLVtotal) AS theCLVtotal, SUM(estGrossProfitTotal) AS theESTGPtotal FROM (( SELECT COALESCE(SUM(COALESCE(offerAmount, 0)), 0) AS offerTotal, COALESCE(SUM(COALESCE(amount, 0) + COALESCE(legalFees, 0) + COALESCE(costs, 0)), 0) AS lienTotal, COALESCE(SUM(((amount + legalFees + costs) * (1 + (rateOfInterest / 100) * (FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(dateOfAttachment)) / 86400) / 365)))), 0) AS CLVtotal, COALESCE(SUM((((amount + legalFees + costs) * (1 + (rateOfInterest / 100) * (FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(dateOfAttachment)) / 86400) / 365))) - COALESCE(offerAmount, 0))), 0) AS estGrossProfitTotal FROM lienTable AS theLienTable, propertyTable, property_lien, stateInterestTable, data, judgementLienTable WHERE theLienTable.lienID = property_lien.lienID AND propertyTable.propertyID = property_lien.propertyID AND propertyTable.state = stateInterestTable.state AND theLienTable.lienID = judgementLienTable.lienID AND theLienTable.lienStatusID IN (65, 70, 75) AND data.id = (SELECT data.id FROM lienTable, data, data_lien WHERE lienTable.lienID = data_lien.lienID AND data_lien.id = data.id AND category = 15 AND lienTable.lienID = theLienTable.lienID ORDER BY data.id DESC LIMIT 1) AND dateOfAttachment != 0 AND UNIX_TIMESTAMP(NOW()) > UNIX_TIMESTAMP(dateOfAttachment) AND FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(dateOfAttachment)) / 86400) > 0 AND rateOfInterest > 0 ) UNION ( SELECT COALESCE(SUM(COALESCE(offerAmount, 0)), 0) AS offerTotal, COALESCE(SUM(COALESCE(amount, 0) + COALESCE(legalFees, 0) + COALESCE(costs, 0)), 0) AS lienTotal, COALESCE(SUM(((amount + legalFees + costs) * (1 + (rateOfInterest / 100) * (FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(judgementDate)) / 86400) / 365)))), 0) AS CLVtotal, COALESCE(SUM((((amount + legalFees + costs) * (1 + (rateOfInterest / 100) * (FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(dateOfAttachment)) / 86400) / 365))) - COALESCE(offerAmount, 0))), 0) AS estGrossProfitTotal FROM lienTable AS theLienTable, propertyTable, property_lien, stateInterestTable, data, judgementLienTable WHERE theLienTable.lienID = property_lien.lienID AND propertyTable.propertyID = property_lien.propertyID AND propertyTable.state = stateInterestTable.state AND theLienTable.lienID = judgementLienTable.lienID AND theLienTable.lienStatusID IN (65, 70, 75) AND data.id = (SELECT data.id FROM lienTable, data, data_lien WHERE lienTable.lienID = data_lien.lienID AND data_lien.id = data.id AND category = 15 AND lienTable.lienID = theLienTable.lienID ORDER BY data.id DESC LIMIT 1) AND COALESCE(dateOfAttachment, 0) = 0 AND judgementDate != 0 AND UNIX_TIMESTAMP(NOW()) > UNIX_TIMESTAMP(judgementDate) AND FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(judgementDate)) / 86400) > 0 AND rateOfInterest > 0 ) ) AS theBigTable;
  • 14. Simple Complex aws ec2 run-instances --image-id ami-c3b8d6aa --count 2 --instance-type t1.micro -- key-name MyKeyPair --security-groups MySecurityGroup
  • 16. Simple Complex author:Dijkstra AND year:[1970 TO 1985]
  • 19. MEMCACHE BERKLEY DB GENIEDB COUCHBASE Databases in 2013 REDIS SWIFT RIAK VOLDEMORT TOKYO CABINET HBASE TEMPODB ELASTIC SEARCH NEO4J HIBARI COUCHDB BIG COUCH MARKLOGIC SERVER ORIENTDB NOSQL DB DYNAMO COHERENCE AEROSPIKE INFINIGRAPH DEX DRAWN TO SCALE SIMPLEDB FLOCKDB MNESIA COHERENCE MONGODB CASSANDRA 25 databases in production today that didn’t exist 7 years ago
  • 20. ONLINE QUERY TYPES Key-Value Search Geo Graph/ Relation Event Scale-up BerkleyDB CouchDB MongoDB MySQL SOLR Sphinx PostGIS MongoDB SOLR neo4j MySQL Scale-out Riak Cassandra elasticsearch elasticsearch titan HBase
  • 21. The database paradox of choice: Choice has brought complexity
  • 22. Klout’s Data Architecture 1. Hbase( 2. MySQL( 3. Elas2cSearch( 4. MongoDB( (
  • 23. Imgur’s Data Architecture 1. Hbase(((2.(Elas,cSearch((3.(MySQL((4.(Memcache((5.(Redis((6.(HAproxy(
  • 24. The Value of Simplicity Varies Across Domains design systems economics
  • 25. design Simple or complex?
  • 26. systems Simple or complex?
  • 28. design systems economics API expose utility, hide complexity
  • 33. Simple Complex author:Dijkstra AND year:[1970 TO 1985]
  • 34. Simple Complex 1. Hbase( 2. MySQL( 3. Elas2cSearch( 4. MongoDB( (
  • 36. Where does your business provide value? Simple Complex Ease of use Leverage Economies of Scale
  • 38. The API • HTTP REST • JSON in/JSON out • Hosted as a Service
  • 39. Key Value GET /v0/$collection/$key # Retrieve a value PUT /v0/$collection/$key # Store a value POST /v0/$collection # Store a value (server-generated key) GET /v0/$collection # List the contents of a collection in key order
  • 40. Search GET /v0/$collection?query=$query # Query a collection GET /v0/$collection?query=$query&sort=$field:$direction # Query and sort
  • 41. Graph PUT /v0/$collectionA/$keyA/relation/$kind/$collectionB/$keyB # Create a relation GET /v0/$collection/$key/relations/$kind # List relations GET /v0/$collection/$key/relations/$kindA/$kindB # List relations
  • 42. Events/Time-Ordered GET /v0/$collection/$key/events/$kind # Events POST /v0/$collection/$key/events/$kind # Store event POST /v0/$collection/$key/events/$kind/$timestamp # Store a value (server-generated key)
  • 43. Advanced Features • Immutable data • Optimistic concurrency control • Historical Queries