Databases with V
Open in Telegram
I mostly post stuff about databases. AMA - https://forms.gle/YHKpTBvVooNmtJQcA Mirror of my twitter account https://twitter.com/iavins
Show moreThe country is not specifiedTechnologies & Applications110 081
238
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
SQLite vs Postgres benchmarks when both run locally
benchmark - https://github.com/benbjohnson/production-sqlite-go
From: Your database skills are not 'good to have'
https://renegadeotter.com/2023/11/12/your-database-skills-are-not-good-to-have.html
Found this HTTP load generator, comes with a nice TUI
https://github.com/hatoo/oha
Dr. Stonebraker announced a new serverless service which uses a DB in the Kernel 😲
https://www.dbos.dev/blog/announcing-dbos
TIL Go can read only upto 1GB per Read call - https://kgrz.io/go-file-read-max-size-buffer.html
Visualisation of Jeff Dean's Latency Numbers Every Programmer Should Know
how long does it take to fetch the data from memory vs disk?
https://samwho.dev/numbers/
A short introduction to Deterministic Simulation Testing with a simple Go example code
https://blog.resonatehq.io/deterministic-simulation-testing
Some details about how do we do (geo) replication
https://x.com/penberg/status/1766031437919138218?s=4
Gitlab is open source, so is their database schema. This guy went through the 35K LOC of SQL to understand Gitlab’s schema. It covers many things, including:
- What would you use for primary keys: serial, big serial or UUID?
- Naming conventions in tables, and columns
- Foreign Key constraints
- Partitioning
It’s opinionated and contextual, but surely you will pick one or two great ideas to implement in your production code.
https://shekhargulati.com/2022/07/08/my-notes-on-gitlabs-postgres-schema-design/
I needed to analyse a bunch of log files, spanning over a few GBs. Using grep was difficult where I had to trace a request across multiple files. Somehow I found the issue, but meanwhile I did find couple of open source tools which would make searching and analysing logs easier. I haven't used any of them, but sharing here:
1. The Logfile Navigator - https://lnav.org/ - https://github.com/tstack/lnav
2. Textualize's Toolong - https://github.com/Textualize/toolong
3. Logdy Dev - https://logdy.dev/ - https://github.com/logdyhq/logdy-core
Short and quick explanation of how does an append only BTree works
> This wastes disk space, but writing consecutive pages to disk is more efficient than writing random locations. And there is no need for a transaction log, because the database file is the transaction log.
https://bzero.se/ldapd/btree.html
I worked on a very nasty bug today and in the patch, I added a couple of snapshot tests. But.. what are snapshot tests?
I published a short blog post - https://avi.im/blag/2024/snapshot-testing/
TIL PRQL - Pipelined Relational Query Language, pronounced “Prequel”. It compiles to SQL and claims that it makes writing complex SQL queries simple and intuitive
https://prql-lang.org/
Someone gave me a nice compliment today on CaskDB and the way it teaches building the KV Store in a TDD fashion.
The TDD way of learning is something I picked up while working through the book Interpreter in Go by Thorsten Ball. You write tests, then write code fixing those tests and you end up with Monkey Lang. Helped me understand interpreters and compilers.
Not only that, I was able to use the interpreter at work to solve a business problem, where in we had a use case of running code submitted by customers. I hacked Monkey and made it safer (e.g. no infinite recursion or for loops etc). It served as a great demo, but later the project goals changed.
If you are looking to learn about interpreter and compilers, consider the book. It’s excellent.
https://github.com/avinassh/monkey
Problems of C, and how Zig addresses them - https://avestura.dev/blog/problems-of-c-and-how-zig-addresses-them
and also,
The Road to Zig 1.0 - Andrew Kelley - https://www.youtube.com/watch?v=Gv2I7qTux7g
Collection of materials on debuggers:
- how to use them
- how they work
- how to implement one from scratch!
https://werat.dev/blog/learning-about-debuggers/
Found these recently, if you want to get started on query optimisation and want to deep into it, then:
An Overview of Query Optimization in Relational Systems - https://web.stanford.edu/class/cs345d-01/rl/chaudhuri98.pdf
Building Query Compilers - https://pi3.informatik.uni-mannheim.de/~moer/querycompiler.pdf (book, 700 pages)
If you want a quick reference to C, here is a 45 page short PDF: Essential C by By Nick Parlante
http://cslibrary.stanford.edu/101/EssentialC.pdf
6. [paraphrased] Do you recommend *** course?
I don’t give recommendations unless I have attended it myself or people I trust recommended it.
My suggestion is simple: don’t buy courses from people who haven’t built it themselves.
Also, this recent post by Andrej Karpathy is on point:
> There are a lot of videos on YouTube/TikTok etc. that give the appearance of education, but if you look closely they are really just entertainment. This is very convenient for everyone involved : the people watching enjoy thinking they are learning (but actually they are just having fun). The people creating this content also enjoy it because fun has a much larger audience, fame and revenue. But as far as learning goes, this is a trap.
https://twitter.com/karpathy/status/1756380066580455557
7. Where do I begin to understand about deterministic software testing?
The Foundation DB vidoes are good!
https://www.youtube.com/watch?v=4fFDFbi3toc
https://www.youtube.com/watch?v=OJb8A6h9jQQ
8. How to contribute to sqlite project?
To be pedantic, the SQLite project is not open for contributions. They won’t accept your pull request: https://www.sqlite.org/copyright.html
So Turso forked SQLite and created libsql project, which is open source and open to contribution. We are also building open source community around it - https://discord.gg/3ktFWuDueE
Contributing to libsql is like any other standard open source project:
1. Find good first issues - https://github.com/tursodatabase/libsql/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
2. Alternatively, a less intimidating approach is contributing to the database drivers. We have in JS/TS, Rust, Python and Go.
---
You may submit your questions here: https://forms.gle/YHKpTBvVooNmtJQcA
