Endatabas


The Map



2
1
3

4

5

6

wat?
Ethos
Business
Product
Internals
Roadmap
What is Endatabas?


1
wat?
Endatabas is...
- A database startup, in a land where — and age when — the first rule of database startups is "don't"
- Sells Open Source
- Based on papers from 1970, 1974, 1980...
- Doubles down on SQL, a language everyone ... loves?
- Written in Common Lisp, despite all advice to the contrary

1980



1990
wat.
Ethos


2
(Advance warning: these are all about life, business, technology, and breakfast.)
Pain
is
Bad.
Honesty
is
Good.
Safety
is
Good.
Commodity
Thinking.
commodity
- an economic good
- something useful or valued, convenience, advantage
- a good or service whose wide availability ...
- subject to ready exchange or exploitation
- obsolete : quantity, lot
com-modus
- comfortable, commodious, suitable, useful, convenient, becoming
- opportune, timely, tidy
- pleasant, friendly
Commodities




Immutable
by
Default.
Empowering
is
Good.
Plastic
is
Powerful.
Design
should
Disappear.
Building
should be
Joyful.

Have
Fun.
Business

3

Third Wave Commercial Open Source

1st Wave:
shrink wrap

2nd Wave:
open core


(also dual-licensing, but let's not
worry about that right now)
3rd Wave:
SaaS, mostly
Commercial
Community
Control
Central
Control
Altruistic
endb
Proton
Minio
Neon
Metabase
Firefox
Cassandra
Spark
Arrow
Debian
Emacs
Clojure
3WCO = Silly?
It may seem naïve to assume we can make money building a SaaS database (DBaaS) in a world of Amazons, Googles, and Microsofts ... but there's big money thrown at much less adventurous products.

$30 million, eh
What we're hearing from CTOs
"I don't want to babysit a database."
"If you can give me a developer back, your DB is worth at least $100,000 / yr"
"Just solve a small, boring problem ... audits, reconciliation, ML model replay ..."
Product

4

Immutable Databases
A still more glorious dawn is ... uh, dawning.





What endb is not
- Blockchain ... anything
- Trustless, proof-of-something
- "Git for data" (branching, merging)
- Event Sourcing
- A new, disruptive query language
- NoSQL
- Graph-First
Endatabas aspires to be...?



Create a Commodity
(Caveat: Still plenty of work to do before we achieve this = why the repo isn't open yet.)
Safety, Honesty
immutable
hey cool friends, let's please stop deleting things to save disk space like it's 1984


Painless, Plastic, Powerful

{ "first_name": "Ravi Chandra",
"last_name": "Padmala",
"email_address": "n@neena.ca",
"is_alive": true,
"age": 30,
"height_cm": 185.2,
"billing_address": {
"address": "902 Main Street, Juiceville",
"city": "Hyderabad",
"state": "Telangana",
"pin": "500002"
},
"shipping_address": {
"address": "Nilenso Research, A-4 Research Drive",
"city": "Hyderabad",
"state": "Telangana",
"pin": 500001"
},
...
}
"address2"?
"country"?

We've been here before

1984



Okay, so





Yay Standards*


SQL:2023
...
SQL:2016
SQL:99
SQL:2011
this one is actually really, really hard
... which is why you've never seen it before
Some
Examples
Please
Schemaless
INSERT INTO users (id, username)
VALUES (123, 'shivam');
INSERT INTO channels (id, topic)
VALUES (456, '#off-grid');
INSERT INTO messages (user_id, channel_id, msg)
VALUES (123, 456, '14awg @ 70volts');
SELECT * FROM messages WHERE channel_id = 456;Time Travel
SELECT name, system_time_start, system_time_end
FROM users
FOR SYSTEM_TIME AS OF 2018-01-02T00:00:00Z;
RFC 3339 >= ISO 8601
ISO 8601
RFC
3339
Erasure
ERASE FROM users WHERE username = 'shivam';


Documents
SQL:2023 (inspired)
INSERT INTO channels {id: 654,
name: "#on-grid",
access:
{mods: [100, 200, 300]
...},
...};
SELECT u.access.mods[2] FROM users u;
SELECT u FROM users u; -- select a document(s)
Sugar
SQL:2016 SQL/JSON
+
ECMAScript
LET c = [1, 2, 3];
LET d = 41;
INSERT INTO users {a: 1, -- shorthand
b: [...c, 4], -- spreads
c[d+1]: [3, 4] -- computed
}
SELECT u.a, u.b, u.c42 FROM users u;
Maybe: Paths
SQL:2016 SQL/JSON
+
ECMAScript
-- get an array of names:
SELECT c.events[*].name FROM channels c;
But Remember

schema migration
audits
reconciliation
GDPR compliance
replication
OLAP pipelines
failover
sharding
etc.


Internals

5

Scale and Scope
SQL parser
SQL compiler
execution
engine
columnar
storage
time travel
storage
vs.
compute
plastic SQL
(UX)
adaptive
indexes
bitemporal
indexes
Sidebar: Storage v Compute
storage
vs.
compute



Sidebar: Adaptive Indexes
"Light and Adaptive Indexing for Immutable Databases" by Håkan Råberg (Strange Loop 2022)
adaptive
indexes

Sidebar: Temporality
(uni-temporal)
time travel
bitemporal
indexes
read-only
read-write
Decision-Making


- Two people
- History (3 years, 5 years)
- Computer Science research
- Market research
- Trial-and-error
3 years
5 years
CS Research
Yes, some of these papers are very old. (But not all.)
People were trying things back in 1985 that hardware has only caught up to now ... similar to LISP in the 1950s.

Speaking of LISP...
SBCL, you say.
Common Lisp gives us the plasticity to iterate quickly, throw things out, experiment. It's nice not to write a dynamic runtime from scratch.
SBCL is fast. C bindings are clunky, but they work.
Moving code to Rust "calcifies" it, so that's a late-bound activity.

Retro
Copeland's DSM paper was published in 1980.
Moderno
Apache Arrow is a modern avatar of the DSM.



(5.5) Revisit our Intro
- A database startup ... but we know the risks
- Sell Open Source ... it can be done (see SQLite, Minio, Neon, Voltron & Apache Arrow, Cal.com, Typesense, etc.)
- Papers from 1974 ... were way ahead of their time
- SQL ... there is no other choice
- Common Lisp ... is safer, 35 years later
Roadmap

6

Roadmap
- Powerful UX (think JavaScript, Python, Ruby, Clojure)
- Time Travel (
SELECT ... AS OF ...) - Querying Time ("when did X happen?")
- Erasure (GDPR and PIPEDA compliance)
- Kubernetes (open source users run clusters)
- DBaaS (you know, like, a product)
- HTAP (flex those columnar muscles)
- Storage vs. Compute (S3 becomes the disk)
- Assertions, Schema restrictions, Consistent Views...
- ...
- Graph Query? (SQL:2023, PGQ)
- Bitemporality? (SQL:2011 Application Time)
References
- Endatabas, Råberg and Deobald, https://www.endatabas.com
- The Implementation of POSTGRES, Stonebraker, IEEE Transactions on Knowledge and Data Engineering 1990, https://dsf.berkeley.edu/papers/ERL-M90-34.pdf
- Why Static Typing Came Back, Feldman, Goto 2022, https://www.youtube.com/watch?v=Tml94je2edk
- The Strength of the Record, Deobald, 2021, https://www.deobald.ca/essays/2021-03-28-strength-of-the-record/
- Making Smalltalk a database system., Copeland and Maier., SIGMOD Rec., 14(2):316–325, June 1984.
- Lore: A database management system for semistructured data., McHugh, Abiteboul, Goldman, Quass, and Widom., SIGMOD Rec., 26(3):54–66, September 1997.
- Blockchain Without the Crypto, Deobald, 2021, https://www.deobald.ca/essays/2021-11-11-blockchain-without-crypto/
- Light and Adaptive Indexes for Immutable Databases, Råberg, 2022, https://www.youtube.com/watch?v=Px-7TlceM5A
- Date and Time on the Internet: Timestamps, IETF, 2002, https://datatracker.ietf.org/doc/html/rfc3339
- I don't need your query language, HackerNews, 2023, https://news.ycombinator.com/item?id=36369018
- SQL:2023 is finished: Here is what's new, Eisentraut, 2023, https://peter.eisentraut.org/blog/2023/04/04/sql-2023-is-finished-here-is-whats-new
- What's new in SQL:2016 - JSONPath, Winand, 2017, https://modern-sql.com/blog/2017-06/whats-new-in-sql-2016#json-path
- JavaScript Object Initializer Syntax, MDN, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer
Questions?



2
1
3

4

5

6

wat?
Ethos
Business
Product
Internals
Roadmap
what-is-endatabas
By stevendeobald
what-is-endatabas
- 100