SlideShare a Scribd company logo
What SQL should
actually be...
Rafael Ördög, PhD.
What SQL should actually be...
What SQL should actually be...
Would you ever do this?
function initializeAutoSave() {
setTimeOut(2000, function() {
$('input#save').click();
initializeAutoSave();
});
}

Recommended for you

Lentera News edisi #16 Juli 2015
Lentera News edisi #16 Juli 2015Lentera News edisi #16 Juli 2015
Lentera News edisi #16 Juli 2015

Maj

lebaranpilkadadian purba
The Case for Continual Realignment of the IT Function
The Case for Continual Realignment of the IT FunctionThe Case for Continual Realignment of the IT Function
The Case for Continual Realignment of the IT Function

The document discusses the need for continual realignment of the IT function. It argues that the context within which IT organizations operate is constantly changing, which can lead to misalignment across three domains: the IT value proposition, operating model, and operating state. The first step to realignment is to assess critical areas of misalignment, identify root causes, prioritize areas for realignment, and define actions to close gaps. Developing alignment as an organizational capability requires conscious effort and accountability from IT leadership.

transformationoperating modeltechnology
How about doing this?
function createThumbnail($sourceImage) {
$size = Config::get('thumb-size');
$targetImage =
$this->getTargetName($sourceImage);
system("convert {$sourceImage}
--resize {$size}x{$size}
{$thumbImage}");
}
And yet we somehow accept this...
$dbh->exec("SELECT field FROM table");
And if we loathe this:
<script type="text/javascript">
<?php foreach($buttons as $button):?>
initButton(<?=$button["id"]?>,
<?=$button["usefulVar"]?>);
<?php endforeach; ?>
</script>
Why aren't we horrified by this?
function doSomeImportantAndComplexStuffInTheDatabase() {
$dbh->exec("UPDTATE {$this->generateComplexJoins()}" .
"SET {$this->generateFieldsAndValueSubQueries()}" .
"WHERE {$this->generateWhere()}");
}
function generateWhere() {
$result = "TRUE";
foreach($this->importantStuffs as $stuff) {
$result += " AND ".$stuff->subWhere();
}
}

Recommended for you

How to be Creative
How to be CreativeHow to be Creative
How to be Creative

This document provides tips for being creative from various notable figures. It suggests imagining freely without limits, trusting your instincts, connecting unrelated ideas, having discipline despite believing everyone is creative, not fearing failure, generating many ideas, having confidence without self-doubt, and learning from other sources.

how to be creative
Tdr-L'aigua
Tdr-L'aiguaTdr-L'aigua
Tdr-L'aigua
Organizational fitness2013
Organizational fitness2013Organizational fitness2013
Organizational fitness2013

This document discusses fostering an innovative culture within organizations. It notes that the modern economy requires constant innovation due to digital natives, collaborative workers, and high expectations of feedback. To compete, organizations must embed innovation into their DNA. This can be done by tapping into intrinsic motivation, thinking ambitiously, achieving escape velocity to break free from traditional thinking, opening up to new talent, speeding up feedback, collaborating internally and externally, cross-pollinating ideas, embracing agility, mastering rapid prototyping, and preparing IT systems to react quickly to change. The goal is to constantly reinvent businesses.

What SQL should actually be...
Donald D. Chamberlin
the father of SQL
Origin of SQL
SEQUEL: A STRUCTURED ENGLISH QUERY
LANGUAGE (1974)
by Donald D. Chamberlin
Origin of SQL
SEQUEL: A STRUCTURED ENGLISH QUERY
LANGUAGE (1974)
by Donald D. Chamberlin
"However, there is also a large class of users
who, while they are not computer specialists,
would be willing to learn to interact with a
computer in a reasonably high-level, non-
procedural query language."

Recommended for you

Homage to sri aurobindo, part 2
Homage to sri aurobindo, part 2Homage to sri aurobindo, part 2
Homage to sri aurobindo, part 2

The exhibition put up by Disciple Kittu Reddy in August 1972 in Pondicherry highlighted Sri Aurobindo's spiritual teachings. The Mother herself chose the theme of paying homage to Sri Aurobindo for the exhibition held during his centenary year. She selected the color light blue, which represented Sri Aurobindo, as the theme's visual representation.

sri aurobindo
Power point presentations
Power point presentationsPower point presentations
Power point presentations

The document provides simple rules for creating effective presentations in 3 sentences or less: Keep presentations simple by focusing on the purpose, using no more than 1-2 font families, 1 image per slide, and 5 lines per slide. Maintain consistency across slides with the same backgrounds, fonts, colors, and style. Presentations should complement their content and purpose without overloading the audience with unnecessary animations, transitions, or reading directly from slides.

powerpointppt
Biomedical engineering
Biomedical engineeringBiomedical engineering
Biomedical engineering

Biomedical engineering applies engineering principles and technologies to medicine. It focuses on designing medical equipment, prosthetics, devices for diagnosis and therapy. The discipline uses electrical and electronic engineering to build biomedical devices and designs prosthetics and orthotics. Biomedical engineering has provided many advances in medicine over the years, from improving hospital equipment to creating prosthetics that allow people who have lost body parts to be mobile again. The document discusses changing the curriculum for biomedical engineering students to include more elective courses in rehabilitation engineering and clinical engineering to provide a better education and allow graduates to implement new technologies to help disabled people.

SQL is User Interface
● It's not an API
○ So that's why we need an ORM tool...
● It's not a protocol
● It's not even designed for programmers
● It was however derived from another
database CLI called SQUARE, that looks a
bit more like a protocol:
○ NAME, SAL EMP DEPT, MGR ('TOY', 'ANDERSON')
VS
○ SELECT NAME, SAL FROM EMP WHERE DEPT = 'TOY' AND MGR = 'ANDERSON'
The command line user interface is
not an API
● Leaking logic to other languages
● Dynamically generated code is hard to debug
● Security issues
○ Escaping is a horror scene
● Large overhead
○ Process launch overheads
○ Parse overhead
○ Command generation overhead
● Fragility
○ It's more prominent with a GUI, but CLIs are not much better
○ Have you ever tried to maintain a moderately sized
Greasemonkey script? It's a nightmare!
SQL is a bad UI by todays standards,
but it's even worse as an API
● Fails to separate concerns
○ Changing a query to improve performance may involve
breaking business logic
○ Requesting a little more data can have a large
performance hit
○ You could not optimize SQL queries with AOP
● Leaking concepts
○ We leak our entire datastructure to the DB
■ That is why a good ORM should generate DDL from
source code and not the way around
○ To solve performance issues we may even leak some of
our business logic. (Aggregating data.)
■ To the one thing that is hard to scale
Origin of SQL
SEQUEL: A STRUCTURED ENGLISH QUERY
LANGUAGE (1974)
by Donald D. Chamberlin
"SEQUEL identifies a set of simple operations
on tabular structures, which can be shown to
be of equivalent power to the first order
predicate calculus."

Recommended for you

Afs presentation from SHFCA, March 2013
Afs presentation from SHFCA, March 2013Afs presentation from SHFCA, March 2013
Afs presentation from SHFCA, March 2013

AFS made an excellent case to Scottish government officials and others as to how their energy strategy can be strengthened and enhanced with AFS. The Scottish Hydrogen and Fuel Cell Association (SHFCA) promotes and develops Scottish expertise in fuel cells and hydrogen technologies.

alternative fuelcarbon neutralenergy
INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRII OPERELOR DE ARTĂ MONUMENTALE ...
INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRIIOPERELOR DE ARTĂ MONUMENTALE ...INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRIIOPERELOR DE ARTĂ MONUMENTALE ...
INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRII OPERELOR DE ARTĂ MONUMENTALE ...

Proiect despre INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRII OPERELOR DE ARTĂ MONUMENTALE TURNATE DIN BRONZ

Best Residential Interior Designer In Pune
Best Residential Interior Designer In PuneBest Residential Interior Designer In Pune
Best Residential Interior Designer In Pune

Do you want to designing the interiors for the kitchen, bedroom, dining room, study room etc. As a residential interior designer Sudhir pawar and associates have successfully designed many interiors. SP&A design projects for both for small and big residential.

residential interior designerbungalow interior designerinterior designers in pune
Non tabular structures
● Connections between people
● Ownership relations
● Documents (like articles, or presentations)
● Data that belongs to a video on YouTube:
○ Video
○ Comments
○ Likes
○ etc.
● Or more abstractly
○ hierarchies
○ graphs
So we have non tabular data
Customer
Order id
Order item
Order item
Order item
Payment details
And tables to store that in
Customer
Order id
Order item
Order item
Order item
Payment details
OrdersCustomersItemsPayments
And tables to store that in
Customer
Order id
Order item
Order item
Order item
Payment details
OrdersCustomersItemsPayments
Impedancemismatch

Recommended for you

Inorme 2 trimestre 2014 biblioteca del pio x
Inorme 2 trimestre 2014   biblioteca del pio xInorme 2 trimestre 2014   biblioteca del pio x
Inorme 2 trimestre 2014 biblioteca del pio x

El informe del segundo trimestre de 2014 sobre el uso de la biblioteca muestra que los estudiantes de secundaria tuvieron la mayor asistencia y consulta, mientras que los docentes tuvieron el mayor número de préstamos. Los servicios más utilizados fueron la asistencia, consulta y préstamos de materiales de sala y domicilio. El número total de usuarios ha aumentado constantemente en los últimos 10 años. Los libros más consultados fueron sobre temas de ciencias sociales, literatura y ciencia.

Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)
Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)
Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)
Razvoj i prezentacija na proekt
Razvoj i prezentacija na proektRazvoj i prezentacija na proekt
Razvoj i prezentacija na proekt

Prezentacija za razvoj i pretstavuvanje na filmski proekt od Ognen Antov i Vladimir Stojcevski. Prezentacijata bese napravena za celite na rabotilnicata za jaknenje na kapacitetite na mladinskite filmski umetnici na nastanot "Evropski mladinski filmovi"

networkingmladinskifilm education
Data normalization
Customer
Order id
Order item
Order item
Order item
Payment details
OrdersCustomersItemsPayments
So we normalize our structures
● Strongly related data will be scattered all around
the hard drive
● Performance issues
● DBA requests a denormalization
○ Again: changing code for performance reason in a way
that potentially breaks business logic
● Denormalized data is not indexed by the SQL
database
○ So we create index tables...
● The code using the denormalized tables will be
a lot harder to maintain and understand
SQL tries too hard, and we abuse it
● SQL databases are more than just tabular data
stores
○ They enforce a data transfer mechanism
■ Why do I need to use TCP/IP to reach a local DB?
■ And I even need to authenticate!
○ They are indexing services but with very limited
capabilities.
● Why do we use SQL database for
○ Storing temporary data locally (maybe files or memory?)
○ Storing documents (maybe document stores?)
○ Message queues (it's terrible for that!)
○ Inter process communication (I mean... REALLY?!)
● It enforces a data transfer mechanism so it is really
slow to run tests using the database
○ Even if the data is in an in-memory table
○ So we don't test the DB... or only if we must...
● On the other hand since it's a complicated and
frequently used API, one would be tempted to write a
complete fake
○ One that stores stuff in memory, and won't use TCP/IP to
communicate
○ It's almost impossible to do that well, so we don't...
● But SQL queries may change in case of performance
optimization in ways that it breaks logic...
It makes testing hard

Recommended for you

Improving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVMImproving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVM

This talk covers a number of important topics for making scalable Apache Spark programs - from RDD re-use to considerations for working with Key/Value data, why avoiding groupByKey is important and more. We also include Python specific considerations, like the difference between DataFrames/Datasets and traditional RDDs with Python. We also explore some tricks to intermix Python and JVM code for cases where the performance overhead is too high.

pythonapache sparkpydata
Tales from the Field
Tales from the FieldTales from the Field
Tales from the Field

This document summarizes three stories from a MongoDB presentation about lessons learned from real-world deployments. The first story describes how a system using random updates across many entities was improved by vertically scaling the database instead of horizontally scaling. The second story explains how insufficient testing of backup processes under load led to an outage for a game launch. The third story outlines how changing a product catalog schema from embedded documents to normalized collections improved performance and resource usage.

mongodbmongodbdays
How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2

This document provides tips for optimizing MySQL performance for applications. It discusses good practices for the MySQL configuration file such as enabling the slow query log and performance schema. It also covers using indexes appropriately, avoiding N+1 queries, performing operations like counting and deleting in SQL rather than application code, and properly using transactions.

mysqlmariadbsql
What SQL should actually be...
So what would be better?
● A native API instead of string commands. I
should be able to independently specify:
○ what data to collect or save
○ how that should be done
○ what to index
○ the way these commands are sent to the db
● The API should be as simple as possible
● Schema less data structure
○ And if you like static typing, then you can define your
schema as data structures or classes
In an SQL database the data
structure is leaked to the DB
SQL DB
Leaked
structure
APP
Dependence
That is the primary reason we
introduced the DB Layer
SQL DB
Leaked
structure
APP
Dependence
DBLayer
Dependence

Recommended for you

The magic of (data parallel) distributed systems and where it all breaks - Re...
The magic of (data parallel) distributed systems and where it all breaks - Re...The magic of (data parallel) distributed systems and where it all breaks - Re...
The magic of (data parallel) distributed systems and where it all breaks - Re...

Distributed systems can seem magical, and sometimes all of the magic works and our job succeeds. However, if you've worked with them for a long enough time you've found a few places where the magic starts to break down and the fact that it's actually a collection of several hundred garden gnomes* rather than a single large garden gnome. This talk will use Apache Spark, Beam, Flink, Kafka, and Map Reduce to explore the world of data parallel distributed systems. We'll start with some happy pieces of magic, like how we can combine different transformations into a single pass over the data, working between different languages, data partitioning, and lambda serialization. After each new piece of magic is introduced we'll look at how it breaks in one (or two) of the systems. Come to be told it's not your fault everything is broken, or if your distributed software still works an exciting preview of everything that's going to go wrong. Don't work with distributed systems? Come to be reassured you've made good life choices.

apache sparkapache flinkapache beam
Keeping the fun in functional w/ Apache Spark @ Scala Days NYC
Keeping the fun in functional   w/ Apache Spark @ Scala Days NYCKeeping the fun in functional   w/ Apache Spark @ Scala Days NYC
Keeping the fun in functional w/ Apache Spark @ Scala Days NYC

Apache Spark has been a great driver of not only Scala adoption, but introducing a new generation of developers to functional programming concepts. As Spark places more emphasis on its newer DataFrame & Dataset APIs, it’s important to ask ourselves how we can benefit from this while still keeping our fun functional roots. We will explore the cases where the Dataset APIs empower us to do cool things we couldn’t before, what the different approaches to serialization mean, and how to figure out when the shiny new API is actually just trying to steal your lunch money (aka CPU cycles).

scalaapache sparkspark
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...

This document provides a summary of a presentation on scaling Apache Spark. It discusses techniques for reusing RDDs through caching, persistence levels and checkpointing. It also covers best practices for working with key-value data to avoid problems from groupByKey, and using Spark SQL and accumulators. Finally, it previews bringing code generation to Spark ML to improve performance.

apache sparkbig data
A schema less database puts the schema to
the right side of the DB layer boundary
NoSQL DB
Data
Structure
APP
Dependence
DBLayer Dependence
And by the way we are hiring:
c0de-x.com
@devillsroom

More Related Content

Viewers also liked

Series y libros.htm
Series y libros.htmSeries y libros.htm
Series y libros.htm
Guillermo Gonzalez
 
Sascon social commerce presentation
Sascon social commerce presentationSascon social commerce presentation
Sascon social commerce presentation
yrewol
 
FATZO Mouse - Semaglutide Poster - 2015 GTC-Diabetes Summit
FATZO Mouse - Semaglutide Poster - 2015 GTC-Diabetes SummitFATZO Mouse - Semaglutide Poster - 2015 GTC-Diabetes Summit
FATZO Mouse - Semaglutide Poster - 2015 GTC-Diabetes Summit
PreClinOmics
 
Lentera News edisi #16 Juli 2015
Lentera News edisi #16 Juli 2015Lentera News edisi #16 Juli 2015
Lentera News edisi #16 Juli 2015
Ananta Bangun
 
The Case for Continual Realignment of the IT Function
The Case for Continual Realignment of the IT FunctionThe Case for Continual Realignment of the IT Function
The Case for Continual Realignment of the IT Function
Formicio
 
How to be Creative
How to be CreativeHow to be Creative
How to be Creative
Bipul Deb Nath
 
Tdr-L'aigua
Tdr-L'aiguaTdr-L'aigua
Tdr-L'aigua
choriol
 
Organizational fitness2013
Organizational fitness2013Organizational fitness2013
Organizational fitness2013
Globant
 
Homage to sri aurobindo, part 2
Homage to sri aurobindo, part 2Homage to sri aurobindo, part 2
Homage to sri aurobindo, part 2
Jitendra Sharma
 
Power point presentations
Power point presentationsPower point presentations
Power point presentations
bauder
 
Biomedical engineering
Biomedical engineeringBiomedical engineering
Biomedical engineering
anderson-_-25
 
Afs presentation from SHFCA, March 2013
Afs presentation from SHFCA, March 2013Afs presentation from SHFCA, March 2013
Afs presentation from SHFCA, March 2013
Air Fuel Synthesis
 
INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRII OPERELOR DE ARTĂ MONUMENTALE ...
INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRIIOPERELOR DE ARTĂ MONUMENTALE ...INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRIIOPERELOR DE ARTĂ MONUMENTALE ...
INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRII OPERELOR DE ARTĂ MONUMENTALE ...
Alexandru Vlad Murzac
 
Best Residential Interior Designer In Pune
Best Residential Interior Designer In PuneBest Residential Interior Designer In Pune
Best Residential Interior Designer In Pune
sudhir pawar & associates
 
Inorme 2 trimestre 2014 biblioteca del pio x
Inorme 2 trimestre 2014   biblioteca del pio xInorme 2 trimestre 2014   biblioteca del pio x
Inorme 2 trimestre 2014 biblioteca del pio x
Daniel Francisco Doffo
 
Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)
Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)
Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)
Gheorghitoiumaria
 
Razvoj i prezentacija na proekt
Razvoj i prezentacija na proektRazvoj i prezentacija na proekt
Razvoj i prezentacija na proekt
Cre8ive8
 

Viewers also liked (18)

Series y libros.htm
Series y libros.htmSeries y libros.htm
Series y libros.htm
 
Sascon social commerce presentation
Sascon social commerce presentationSascon social commerce presentation
Sascon social commerce presentation
 
FATZO Mouse - Semaglutide Poster - 2015 GTC-Diabetes Summit
FATZO Mouse - Semaglutide Poster - 2015 GTC-Diabetes SummitFATZO Mouse - Semaglutide Poster - 2015 GTC-Diabetes Summit
FATZO Mouse - Semaglutide Poster - 2015 GTC-Diabetes Summit
 
Bolroo
BolrooBolroo
Bolroo
 
Lentera News edisi #16 Juli 2015
Lentera News edisi #16 Juli 2015Lentera News edisi #16 Juli 2015
Lentera News edisi #16 Juli 2015
 
The Case for Continual Realignment of the IT Function
The Case for Continual Realignment of the IT FunctionThe Case for Continual Realignment of the IT Function
The Case for Continual Realignment of the IT Function
 
How to be Creative
How to be CreativeHow to be Creative
How to be Creative
 
Tdr-L'aigua
Tdr-L'aiguaTdr-L'aigua
Tdr-L'aigua
 
Organizational fitness2013
Organizational fitness2013Organizational fitness2013
Organizational fitness2013
 
Homage to sri aurobindo, part 2
Homage to sri aurobindo, part 2Homage to sri aurobindo, part 2
Homage to sri aurobindo, part 2
 
Power point presentations
Power point presentationsPower point presentations
Power point presentations
 
Biomedical engineering
Biomedical engineeringBiomedical engineering
Biomedical engineering
 
Afs presentation from SHFCA, March 2013
Afs presentation from SHFCA, March 2013Afs presentation from SHFCA, March 2013
Afs presentation from SHFCA, March 2013
 
INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRII OPERELOR DE ARTĂ MONUMENTALE ...
INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRIIOPERELOR DE ARTĂ MONUMENTALE ...INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRIIOPERELOR DE ARTĂ MONUMENTALE ...
INFLUENȚA FACTORILOR DE MEDIU ASUPRA DEGRADĂRII OPERELOR DE ARTĂ MONUMENTALE ...
 
Best Residential Interior Designer In Pune
Best Residential Interior Designer In PuneBest Residential Interior Designer In Pune
Best Residential Interior Designer In Pune
 
Inorme 2 trimestre 2014 biblioteca del pio x
Inorme 2 trimestre 2014   biblioteca del pio xInorme 2 trimestre 2014   biblioteca del pio x
Inorme 2 trimestre 2014 biblioteca del pio x
 
Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)
Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)
Teoria si metodologia_instruirii_autor_conf_univ_dr_irina_maciuc (1)
 
Razvoj i prezentacija na proekt
Razvoj i prezentacija na proektRazvoj i prezentacija na proekt
Razvoj i prezentacija na proekt
 

Similar to What SQL should actually be...

Improving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVMImproving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVM
Holden Karau
 
Tales from the Field
Tales from the FieldTales from the Field
Tales from the Field
MongoDB
 
How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2
Federico Razzoli
 
The magic of (data parallel) distributed systems and where it all breaks - Re...
The magic of (data parallel) distributed systems and where it all breaks - Re...The magic of (data parallel) distributed systems and where it all breaks - Re...
The magic of (data parallel) distributed systems and where it all breaks - Re...
Holden Karau
 
Keeping the fun in functional w/ Apache Spark @ Scala Days NYC
Keeping the fun in functional   w/ Apache Spark @ Scala Days NYCKeeping the fun in functional   w/ Apache Spark @ Scala Days NYC
Keeping the fun in functional w/ Apache Spark @ Scala Days NYC
Holden Karau
 
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Holden Karau
 
Randomizing Data With SQL Server
Randomizing Data With SQL ServerRandomizing Data With SQL Server
Randomizing Data With SQL Server
Wally Pons
 
Etl confessions pg conf us 2017
Etl confessions   pg conf us 2017Etl confessions   pg conf us 2017
Etl confessions pg conf us 2017
Corey Huinker
 
Data Pipline Observability meetup
Data Pipline Observability meetup Data Pipline Observability meetup
Data Pipline Observability meetup
Omid Vahdaty
 
Ml pipelines with Apache spark and Apache beam - Ottawa Reactive meetup Augus...
Ml pipelines with Apache spark and Apache beam - Ottawa Reactive meetup Augus...Ml pipelines with Apache spark and Apache beam - Ottawa Reactive meetup Augus...
Ml pipelines with Apache spark and Apache beam - Ottawa Reactive meetup Augus...
Holden Karau
 
Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3  Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3
Omid Vahdaty
 
Sql server performance tuning
Sql server performance tuningSql server performance tuning
Sql server performance tuning
ngupt28
 
Speeding up Page Load Times by Using Starling
Speeding up Page Load Times by Using StarlingSpeeding up Page Load Times by Using Starling
Speeding up Page Load Times by Using Starling
Erik Osterman
 
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
Ontico
 
SPL_ALL_EN.pptx
SPL_ALL_EN.pptxSPL_ALL_EN.pptx
SPL_ALL_EN.pptx
政宏 张
 
Stumbling stones when migrating from Oracle
 Stumbling stones when migrating from Oracle Stumbling stones when migrating from Oracle
Stumbling stones when migrating from Oracle
EDB
 
Dirty data? Clean it up! - Datapalooza Denver 2016
Dirty data? Clean it up! - Datapalooza Denver 2016Dirty data? Clean it up! - Datapalooza Denver 2016
Dirty data? Clean it up! - Datapalooza Denver 2016
Dan Lynn
 
Dirty Data? Clean it up! - Rocky Mountain DataCon 2016
Dirty Data? Clean it up! - Rocky Mountain DataCon 2016Dirty Data? Clean it up! - Rocky Mountain DataCon 2016
Dirty Data? Clean it up! - Rocky Mountain DataCon 2016
Dan Lynn
 
The immutable database datomic
The immutable database   datomicThe immutable database   datomic
The immutable database datomic
Laurence Chen
 
Webinar: Avoiding Sub-optimal Performance in your Retail Application
Webinar: Avoiding Sub-optimal Performance in your Retail ApplicationWebinar: Avoiding Sub-optimal Performance in your Retail Application
Webinar: Avoiding Sub-optimal Performance in your Retail Application
MongoDB
 

Similar to What SQL should actually be... (20)

Improving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVMImproving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVM
 
Tales from the Field
Tales from the FieldTales from the Field
Tales from the Field
 
How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2
 
The magic of (data parallel) distributed systems and where it all breaks - Re...
The magic of (data parallel) distributed systems and where it all breaks - Re...The magic of (data parallel) distributed systems and where it all breaks - Re...
The magic of (data parallel) distributed systems and where it all breaks - Re...
 
Keeping the fun in functional w/ Apache Spark @ Scala Days NYC
Keeping the fun in functional   w/ Apache Spark @ Scala Days NYCKeeping the fun in functional   w/ Apache Spark @ Scala Days NYC
Keeping the fun in functional w/ Apache Spark @ Scala Days NYC
 
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
 
Randomizing Data With SQL Server
Randomizing Data With SQL ServerRandomizing Data With SQL Server
Randomizing Data With SQL Server
 
Etl confessions pg conf us 2017
Etl confessions   pg conf us 2017Etl confessions   pg conf us 2017
Etl confessions pg conf us 2017
 
Data Pipline Observability meetup
Data Pipline Observability meetup Data Pipline Observability meetup
Data Pipline Observability meetup
 
Ml pipelines with Apache spark and Apache beam - Ottawa Reactive meetup Augus...
Ml pipelines with Apache spark and Apache beam - Ottawa Reactive meetup Augus...Ml pipelines with Apache spark and Apache beam - Ottawa Reactive meetup Augus...
Ml pipelines with Apache spark and Apache beam - Ottawa Reactive meetup Augus...
 
Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3  Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3
 
Sql server performance tuning
Sql server performance tuningSql server performance tuning
Sql server performance tuning
 
Speeding up Page Load Times by Using Starling
Speeding up Page Load Times by Using StarlingSpeeding up Page Load Times by Using Starling
Speeding up Page Load Times by Using Starling
 
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
 
SPL_ALL_EN.pptx
SPL_ALL_EN.pptxSPL_ALL_EN.pptx
SPL_ALL_EN.pptx
 
Stumbling stones when migrating from Oracle
 Stumbling stones when migrating from Oracle Stumbling stones when migrating from Oracle
Stumbling stones when migrating from Oracle
 
Dirty data? Clean it up! - Datapalooza Denver 2016
Dirty data? Clean it up! - Datapalooza Denver 2016Dirty data? Clean it up! - Datapalooza Denver 2016
Dirty data? Clean it up! - Datapalooza Denver 2016
 
Dirty Data? Clean it up! - Rocky Mountain DataCon 2016
Dirty Data? Clean it up! - Rocky Mountain DataCon 2016Dirty Data? Clean it up! - Rocky Mountain DataCon 2016
Dirty Data? Clean it up! - Rocky Mountain DataCon 2016
 
The immutable database datomic
The immutable database   datomicThe immutable database   datomic
The immutable database datomic
 
Webinar: Avoiding Sub-optimal Performance in your Retail Application
Webinar: Avoiding Sub-optimal Performance in your Retail ApplicationWebinar: Avoiding Sub-optimal Performance in your Retail Application
Webinar: Avoiding Sub-optimal Performance in your Retail Application
 

More from Open Academy

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálva
Open Academy
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profiling
Open Academy
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyű
Open Academy
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztés
Open Academy
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztés
Open Academy
 
Magvas gondolatok
Magvas gondolatokMagvas gondolatok
Magvas gondolatok
Open Academy
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világa
Open Academy
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentje
Open Academy
 
Windows 8
Windows 8Windows 8
Windows 8
Open Academy
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatban
Open Academy
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világában
Open Academy
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségei
Open Academy
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatban
Open Academy
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!
Open Academy
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?
Open Academy
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztés
Open Academy
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztések
Open Academy
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Open Academy
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Open Academy
 

More from Open Academy (20)

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálva
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profiling
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyű
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztés
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztés
 
Magvas gondolatok
Magvas gondolatokMagvas gondolatok
Magvas gondolatok
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világa
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentje
 
Windows 8
Windows 8Windows 8
Windows 8
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatban
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világában
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségei
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatban
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztés
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztések
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekben
 

Recently uploaded

The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Bert Blevins
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
SynapseIndia
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
Toru Tamaki
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
ScyllaDB
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
Enterprise Wired
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
welrejdoall
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
KAMAL CHOUDHARY
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 

Recently uploaded (20)

The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 

What SQL should actually be...

  • 1. What SQL should actually be... Rafael Ördög, PhD.
  • 4. Would you ever do this? function initializeAutoSave() { setTimeOut(2000, function() { $('input#save').click(); initializeAutoSave(); }); }
  • 5. How about doing this? function createThumbnail($sourceImage) { $size = Config::get('thumb-size'); $targetImage = $this->getTargetName($sourceImage); system("convert {$sourceImage} --resize {$size}x{$size} {$thumbImage}"); }
  • 6. And yet we somehow accept this... $dbh->exec("SELECT field FROM table");
  • 7. And if we loathe this: <script type="text/javascript"> <?php foreach($buttons as $button):?> initButton(<?=$button["id"]?>, <?=$button["usefulVar"]?>); <?php endforeach; ?> </script>
  • 8. Why aren't we horrified by this? function doSomeImportantAndComplexStuffInTheDatabase() { $dbh->exec("UPDTATE {$this->generateComplexJoins()}" . "SET {$this->generateFieldsAndValueSubQueries()}" . "WHERE {$this->generateWhere()}"); } function generateWhere() { $result = "TRUE"; foreach($this->importantStuffs as $stuff) { $result += " AND ".$stuff->subWhere(); } }
  • 10. Donald D. Chamberlin the father of SQL
  • 11. Origin of SQL SEQUEL: A STRUCTURED ENGLISH QUERY LANGUAGE (1974) by Donald D. Chamberlin
  • 12. Origin of SQL SEQUEL: A STRUCTURED ENGLISH QUERY LANGUAGE (1974) by Donald D. Chamberlin "However, there is also a large class of users who, while they are not computer specialists, would be willing to learn to interact with a computer in a reasonably high-level, non- procedural query language."
  • 13. SQL is User Interface ● It's not an API ○ So that's why we need an ORM tool... ● It's not a protocol ● It's not even designed for programmers ● It was however derived from another database CLI called SQUARE, that looks a bit more like a protocol: ○ NAME, SAL EMP DEPT, MGR ('TOY', 'ANDERSON') VS ○ SELECT NAME, SAL FROM EMP WHERE DEPT = 'TOY' AND MGR = 'ANDERSON'
  • 14. The command line user interface is not an API ● Leaking logic to other languages ● Dynamically generated code is hard to debug ● Security issues ○ Escaping is a horror scene ● Large overhead ○ Process launch overheads ○ Parse overhead ○ Command generation overhead ● Fragility ○ It's more prominent with a GUI, but CLIs are not much better ○ Have you ever tried to maintain a moderately sized Greasemonkey script? It's a nightmare!
  • 15. SQL is a bad UI by todays standards, but it's even worse as an API ● Fails to separate concerns ○ Changing a query to improve performance may involve breaking business logic ○ Requesting a little more data can have a large performance hit ○ You could not optimize SQL queries with AOP ● Leaking concepts ○ We leak our entire datastructure to the DB ■ That is why a good ORM should generate DDL from source code and not the way around ○ To solve performance issues we may even leak some of our business logic. (Aggregating data.) ■ To the one thing that is hard to scale
  • 16. Origin of SQL SEQUEL: A STRUCTURED ENGLISH QUERY LANGUAGE (1974) by Donald D. Chamberlin "SEQUEL identifies a set of simple operations on tabular structures, which can be shown to be of equivalent power to the first order predicate calculus."
  • 17. Non tabular structures ● Connections between people ● Ownership relations ● Documents (like articles, or presentations) ● Data that belongs to a video on YouTube: ○ Video ○ Comments ○ Likes ○ etc. ● Or more abstractly ○ hierarchies ○ graphs
  • 18. So we have non tabular data Customer Order id Order item Order item Order item Payment details
  • 19. And tables to store that in Customer Order id Order item Order item Order item Payment details OrdersCustomersItemsPayments
  • 20. And tables to store that in Customer Order id Order item Order item Order item Payment details OrdersCustomersItemsPayments Impedancemismatch
  • 21. Data normalization Customer Order id Order item Order item Order item Payment details OrdersCustomersItemsPayments
  • 22. So we normalize our structures ● Strongly related data will be scattered all around the hard drive ● Performance issues ● DBA requests a denormalization ○ Again: changing code for performance reason in a way that potentially breaks business logic ● Denormalized data is not indexed by the SQL database ○ So we create index tables... ● The code using the denormalized tables will be a lot harder to maintain and understand
  • 23. SQL tries too hard, and we abuse it ● SQL databases are more than just tabular data stores ○ They enforce a data transfer mechanism ■ Why do I need to use TCP/IP to reach a local DB? ■ And I even need to authenticate! ○ They are indexing services but with very limited capabilities. ● Why do we use SQL database for ○ Storing temporary data locally (maybe files or memory?) ○ Storing documents (maybe document stores?) ○ Message queues (it's terrible for that!) ○ Inter process communication (I mean... REALLY?!)
  • 24. ● It enforces a data transfer mechanism so it is really slow to run tests using the database ○ Even if the data is in an in-memory table ○ So we don't test the DB... or only if we must... ● On the other hand since it's a complicated and frequently used API, one would be tempted to write a complete fake ○ One that stores stuff in memory, and won't use TCP/IP to communicate ○ It's almost impossible to do that well, so we don't... ● But SQL queries may change in case of performance optimization in ways that it breaks logic... It makes testing hard
  • 26. So what would be better? ● A native API instead of string commands. I should be able to independently specify: ○ what data to collect or save ○ how that should be done ○ what to index ○ the way these commands are sent to the db ● The API should be as simple as possible ● Schema less data structure ○ And if you like static typing, then you can define your schema as data structures or classes
  • 27. In an SQL database the data structure is leaked to the DB SQL DB Leaked structure APP Dependence
  • 28. That is the primary reason we introduced the DB Layer SQL DB Leaked structure APP Dependence DBLayer Dependence
  • 29. A schema less database puts the schema to the right side of the DB layer boundary NoSQL DB Data Structure APP Dependence DBLayer Dependence
  • 30. And by the way we are hiring: c0de-x.com @devillsroom