This was also accomplished from just 1 server, not needing 40 shards like blog post.
[0] https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-q...
This was also accomplished from just 1 server, not needing 40 shards like blog post.
[0] https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-q...
And a very simple read-only query w/o overlapping rows, with the full dataset already loaded in memory: > The query itself just sums a range of 10 rows randomly located inside 10B row (447GB) two column database of random integers, one of which is indexed and the other not. This means that the test is fully cached in RAM, and the database is precached prior to the test. No writes are done during this test, only reads.
All that is good and fine for that purpose -- to demonstrate the limits of what SQLite can do in scaling UP.
The purpose of the PlanetScale post was demonstrating linear scalability by scaling OUT using a realistic workload (TPC-C is a warehouse / ecommerce site simulation) on small commodity VMs (ec2 isntances).
As noted, you're comparing two very different tests that had very different goals.
To be fair, if you accomplish the same effect without needing distributed computing, then the solution gets much simpler, you cut out worrying about network latency and HA*
* the probability of node failure grows very rapidly with the number of nodes. Same reason you probably don't need RAID for 1 disk, but you definitely do for a dozen
If you actually crunch the numbers, you'll see that the likelihood of multiple node simultaneous failure of a larger cluster is actually often as high, or higher than the likelihood of a single node failure on a non-distributed application.
Despite running redundant distributed set-ups, services today really don't have particularly spectacular availability. Google, Facebook, Twitter, Github; all go down or brown out frequently.
If SQLite is not the solution, change the problem.
If I may add:
World: "We solved Cold Fusion !"
HN: "Meh"
World: "We solved Cold Fusion in RUST !"
HN: "Shuttup you demi-god of tech and take my upvote !"
You have to make engineering trade-offs for this, though. In my case, you can only recover 1 KiB records. It doesn't support compression. And you can only write to /dev/null.
To read data from this DB (which I built with command-line tools any Unix has), run:
dd if=/dev/zero of=/dev/null bs=1K count=${count}
You can vary the $count parameter to get more data.BedrockDB is a custom wrapper around SQLite.
Only read all in memory lol.