SlideShare uma empresa Scribd logo
1 de 46
SQL Considered Harmful Shannon Posniewski Cryptic Studios
[object Object],[object Object],[object Object],[object Object],Shannon Posniewski
Database Fundamentals ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
Database Types ,[object Object],[object Object],[object Object],[object Object],[object Object]
Relational Model ,[object Object],[object Object],[object Object],[object Object]
Relational Database ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
SQL ,[object Object]
Unique and Foreign Keys ,[object Object],[object Object]
Player ID PlayerName … AttribN 818 Warthog … foo 237 John … bar Player ID Item Count 818 Hat 1 818 Brooch 1 818 Pteradactyl 1 237 Monkey Paw 1
Class ID Name 1 Elf 2 Orc 3 Monkey Player ID Name … Class ID 818 Warthog … 2 237 John … 3
SQL DBMSs ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
The Good ,[object Object],[object Object],[object Object]
The Bad ,[object Object],[object Object],[object Object]
The Ugly ,[object Object],[object Object]
Object-Relational Impedance Mismatch ,[object Object],[object Object]
The Evils of Normalization ,[object Object]
This was Bad Player ID Stat ID Value 818 Time Online 2,123 818 Fights Won 700 818 Fights Lost 3 … 818 Stat N Value N
This was Good Abandons relational DB concepts Player ID Stat 0 Value Stat 1 Value … Stat  N Value 818 2,123 200 … Value N 237 5,235 60 … Value N 54 675 23 … Value N
Solution: Caching ,[object Object],[object Object],[object Object],[object Object]
Not Enough ,[object Object],[object Object],[object Object]
Reduce Throughput Needs ,[object Object],[object Object],[object Object]
Data Ownership ,[object Object],[object Object],[object Object]
Cross-Owner Transactions ,[object Object],[object Object],[object Object]
[object Object],[object Object]
It’s just not the right tool
Cryptic DB
Requirements ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Relaxations ,[object Object],[object Object],[object Object],[object Object]
StructParser ,[object Object],[object Object],[object Object],[object Object]
Example ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Struct Metadata ,[object Object],[object Object],[object Object],[object Object],[object Object]
Basic Operations ,[object Object],[object Object],[object Object]
Data and Logic Ownership ,[object Object],[object Object]
Architecture Map Server Map Server Map Server Team Server Cryptic DB Transaction Server
Cryptic Engine Transactions ,[object Object],[object Object],[object Object],[object Object]
AUTO_TRANSACTION ,[object Object],AUTO_TRANSACTION;  enumTransactionOutcome trGiveGold(ATR_ARGS, NOCONST(Entity) *pEnt1, NOCONST(Entity) *pEnt2, int amount)  { if (pEnt1->gold < amount) TRANSACTION_RETURN(TRANSACTION_OUTCOME_FAILURE,  ” NotEnoughGold”); pEnt1->gold -= amount; pEnt2->gold += amount; return TRANSACTION_OUTCOME_SUCCESS; }
Step 1 Transaction Server Server 1 A Server 2 B DoTrade Trans(“DoTrade”, A, B)
Step 2 Transaction Server Server 1 Trans(“DoTrade”, A, B) A Server 2 B DoTrade 1 2 3 4 … 1 2 3 4 …
Step 3 Transaction Server Server 1 A Server 2 B DoTrade 1 2 3 4 … B
Step 4 Transaction Server Server 1 A Server 2 B DoTrade 1 2 3 4 … B A’ B’
Step 4 Transaction Server Server 1 A Server 2 B 1 2 3 4 … B A’ dB B’ dB B’
Step 4 Transaction Server Server 1 Server 2 1 2 3 4 … A’ B’
Abstract Cryptic DB ,[object Object],[object Object],[object Object],[object Object],[object Object]
We’re hiring!  Apply Online! Copyright 2008 Cryptic Studios, Inc.

Mais conteúdo relacionado

Mais procurados

Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
 Best Practice of Compression/Decompression Codes in Apache Spark with Sophia... Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
Databricks
 

Mais procurados (20)

[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
Elasticsearch in Netflix
Elasticsearch in NetflixElasticsearch in Netflix
Elasticsearch in Netflix
 
Redash: Open Source SQL Analytics on Data Lakes
Redash: Open Source SQL Analytics on Data LakesRedash: Open Source SQL Analytics on Data Lakes
Redash: Open Source SQL Analytics on Data Lakes
 
InfluxDB IOx Tech Talks: Query Engine Design and the Rust-Based DataFusion in...
InfluxDB IOx Tech Talks: Query Engine Design and the Rust-Based DataFusion in...InfluxDB IOx Tech Talks: Query Engine Design and the Rust-Based DataFusion in...
InfluxDB IOx Tech Talks: Query Engine Design and the Rust-Based DataFusion in...
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
Apache ZooKeeper
Apache ZooKeeperApache ZooKeeper
Apache ZooKeeper
 
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangApache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
 
Building a Streaming Microservice Architecture: with Apache Spark Structured ...
Building a Streaming Microservice Architecture: with Apache Spark Structured ...Building a Streaming Microservice Architecture: with Apache Spark Structured ...
Building a Streaming Microservice Architecture: with Apache Spark Structured ...
 
Introduction to ELK
Introduction to ELKIntroduction to ELK
Introduction to ELK
 
Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
 Best Practice of Compression/Decompression Codes in Apache Spark with Sophia... Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
 
MySQL Performance Schema in MySQL 8.0
MySQL Performance Schema in MySQL 8.0MySQL Performance Schema in MySQL 8.0
MySQL Performance Schema in MySQL 8.0
 
ELK, a real case study
ELK,  a real case studyELK,  a real case study
ELK, a real case study
 
Apache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic DatasetsApache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic Datasets
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes
 
Powering Custom Apps at Facebook using Spark Script Transformation
Powering Custom Apps at Facebook using Spark Script TransformationPowering Custom Apps at Facebook using Spark Script Transformation
Powering Custom Apps at Facebook using Spark Script Transformation
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
 
SQL Server In-Memory Internals and Performance Tips
SQL Server In-Memory Internals and Performance TipsSQL Server In-Memory Internals and Performance Tips
SQL Server In-Memory Internals and Performance Tips
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
Nginx Architecture
Nginx ArchitectureNginx Architecture
Nginx Architecture
 
EM12c: Capacity Planning with OEM Metrics
EM12c: Capacity Planning with OEM MetricsEM12c: Capacity Planning with OEM Metrics
EM12c: Capacity Planning with OEM Metrics
 

Destaque (9)

C Da
C DaC Da
C Da
 
Apa Referencing Macros Notes by Faiza Africa
Apa Referencing Macros Notes by Faiza AfricaApa Referencing Macros Notes by Faiza Africa
Apa Referencing Macros Notes by Faiza Africa
 
ClicktoCall Webllamada
ClicktoCall WebllamadaClicktoCall Webllamada
ClicktoCall Webllamada
 
Routing Manager
Routing ManagerRouting Manager
Routing Manager
 
Envio masivo de sms
Envio masivo de smsEnvio masivo de sms
Envio masivo de sms
 
Empresa Soydigital.com
Empresa Soydigital.comEmpresa Soydigital.com
Empresa Soydigital.com
 
A Maior Bronca
A Maior BroncaA Maior Bronca
A Maior Bronca
 
Dodesfelfo
DodesfelfoDodesfelfo
Dodesfelfo
 
Sms servicios SoyDigital
Sms servicios SoyDigitalSms servicios SoyDigital
Sms servicios SoyDigital
 

Semelhante a Sql Considered Harmful

Sql on hadoop the secret presentation.3pptx
Sql on hadoop  the secret presentation.3pptxSql on hadoop  the secret presentation.3pptx
Sql on hadoop the secret presentation.3pptx
Paulo Alonso
 
Performance Optimization of Rails Applications
Performance Optimization of Rails ApplicationsPerformance Optimization of Rails Applications
Performance Optimization of Rails Applications
Serge Smetana
 
High Performance Jdbc
High Performance JdbcHigh Performance Jdbc
High Performance Jdbc
Sam Pattsin
 
Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?
Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?
Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?
SegFaultConf
 

Semelhante a Sql Considered Harmful (20)

Performance and predictability (1)
Performance and predictability (1)Performance and predictability (1)
Performance and predictability (1)
 
Performance and Predictability - Richard Warburton
Performance and Predictability - Richard WarburtonPerformance and Predictability - Richard Warburton
Performance and Predictability - Richard Warburton
 
Data Grids with Oracle Coherence
Data Grids with Oracle CoherenceData Grids with Oracle Coherence
Data Grids with Oracle Coherence
 
Inside sql server in memory oltp sql sat nyc 2017
Inside sql server in memory oltp sql sat nyc 2017Inside sql server in memory oltp sql sat nyc 2017
Inside sql server in memory oltp sql sat nyc 2017
 
MongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & AnalyticsMongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & Analytics
 
Sql on hadoop the secret presentation.3pptx
Sql on hadoop  the secret presentation.3pptxSql on hadoop  the secret presentation.3pptx
Sql on hadoop the secret presentation.3pptx
 
Tutorial On Database Management System
Tutorial On Database Management SystemTutorial On Database Management System
Tutorial On Database Management System
 
Treasure Data and AWS - Developers.io 2015
Treasure Data and AWS - Developers.io 2015Treasure Data and AWS - Developers.io 2015
Treasure Data and AWS - Developers.io 2015
 
Hacktive Directory Forensics - HackCon18, Oslo
Hacktive Directory Forensics - HackCon18, OsloHacktive Directory Forensics - HackCon18, Oslo
Hacktive Directory Forensics - HackCon18, Oslo
 
Performance Optimization of Rails Applications
Performance Optimization of Rails ApplicationsPerformance Optimization of Rails Applications
Performance Optimization of Rails Applications
 
High Performance Jdbc
High Performance JdbcHigh Performance Jdbc
High Performance Jdbc
 
NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020
 
My SQL Skills Killed the Server
My SQL Skills Killed the ServerMy SQL Skills Killed the Server
My SQL Skills Killed the Server
 
Sql killedserver
Sql killedserverSql killedserver
Sql killedserver
 
Dev381.Pp
Dev381.PpDev381.Pp
Dev381.Pp
 
Inside SQL Server In-Memory OLTP
Inside SQL Server In-Memory OLTPInside SQL Server In-Memory OLTP
Inside SQL Server In-Memory OLTP
 
Getting started with Spark & Cassandra by Jon Haddad of Datastax
Getting started with Spark & Cassandra by Jon Haddad of DatastaxGetting started with Spark & Cassandra by Jon Haddad of Datastax
Getting started with Spark & Cassandra by Jon Haddad of Datastax
 
Data Privacy with Apache Spark: Defensive and Offensive Approaches
Data Privacy with Apache Spark: Defensive and Offensive ApproachesData Privacy with Apache Spark: Defensive and Offensive Approaches
Data Privacy with Apache Spark: Defensive and Offensive Approaches
 
Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?
Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?
Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?
 
CQRS / ES & DDD Demystified
CQRS / ES & DDD DemystifiedCQRS / ES & DDD Demystified
CQRS / ES & DDD Demystified
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Último (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 

Sql Considered Harmful

  • 1. SQL Considered Harmful Shannon Posniewski Cryptic Studios
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Player ID PlayerName … AttribN 818 Warthog … foo 237 John … bar Player ID Item Count 818 Hat 1 818 Brooch 1 818 Pteradactyl 1 237 Monkey Paw 1
  • 11. Class ID Name 1 Elf 2 Orc 3 Monkey Player ID Name … Class ID 818 Warthog … 2 237 John … 3
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. This was Bad Player ID Stat ID Value 818 Time Online 2,123 818 Fights Won 700 818 Fights Lost 3 … 818 Stat N Value N
  • 20. This was Good Abandons relational DB concepts Player ID Stat 0 Value Stat 1 Value … Stat N Value 818 2,123 200 … Value N 237 5,235 60 … Value N 54 675 23 … Value N
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27. It’s just not the right tool
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. Architecture Map Server Map Server Map Server Team Server Cryptic DB Transaction Server
  • 37.
  • 38.
  • 39. Step 1 Transaction Server Server 1 A Server 2 B DoTrade Trans(“DoTrade”, A, B)
  • 40. Step 2 Transaction Server Server 1 Trans(“DoTrade”, A, B) A Server 2 B DoTrade 1 2 3 4 … 1 2 3 4 …
  • 41. Step 3 Transaction Server Server 1 A Server 2 B DoTrade 1 2 3 4 … B
  • 42. Step 4 Transaction Server Server 1 A Server 2 B DoTrade 1 2 3 4 … B A’ B’
  • 43. Step 4 Transaction Server Server 1 A Server 2 B 1 2 3 4 … B A’ dB B’ dB B’
  • 44. Step 4 Transaction Server Server 1 Server 2 1 2 3 4 … A’ B’
  • 45.
  • 46. We’re hiring! Apply Online! Copyright 2008 Cryptic Studios, Inc.

Notas do Editor

  1. This presentation is copyright 2008 by Cryptic Studios. Please do not publically duplicate without permission. Foolish, provocative, title