6,477 karma · joined June 19, 2014
CaskDB - https://github.com/avinassh/py-caskdb
Blog at https://avi.im/blag
Not all frames in the WAL are important. Sure, recovery may be impossible in some cases, but not all checksum failures are impossible to recover from.
SQLite is not open to contribution - https://www.sqlite.org/copyright.html
> 1. You don't understand why it was done like this.
sure, I would like to understand it. That's why the post!
Attempt to recover! Again, not all checksum errors are impossible to recover. I hold the view that even if there is a 1% chance of recovery, we should attempt it. This may be done by SQLite, an external tool, or even manually. Since WAL corruption issues are silent, we cannot do that now.
There is a smoll demo in the post. In it, I corrupt an old frame that is not needed by the database at all. Now, one approach would be to continue the recovery and then present both states: one where the WAL is dropped, and another showing whatever we have recovered. If I had such an option, I would almost always pick the latter.
I would like it to raise an error and then provide an option to continue or stop. Since continuing is the default, we need a way to opt in to stopping on checksum failure.
Not all checksum errors are impossible to recover from. Also, as the post mentions, only some non important pages could be corrupt too.
My main complaint is that it doesn't give developers an option.
During recovery, since the server applies only the operations which have both records, you will not recover a record which was successful to the client.
* * Wait for intent and completion to be flushed to disk * *
if you wait for both to complete, then how it can be faster than doing a single IO?My name is Aline, and I'm the founder of interviewing.io. Thanks so much for your interest. It looks like you’re not in a country where we’re open for business yet, so we can’t create your account, but we’ll add you to our waitlist.
can you explain how indexing is done and how rust helped in this case?
OP's post also references a similar post [0], but I am curious to hear from the people here.
[0] - https://hamatti.org/posts/how-i-take-work-notes-as-a-develop...
Same! I remember it too. I found it quite fascinating. Separation of storage and compute was something new to me, and I was asking them about Pageserver [0]. I also asked for career advice on how to get into database development [1].
Two years later, I ended up working on very similar disaggregated storage at Turso database.
Congrats to the Neon team!
> It is also hard to reconcile the claims that cloud providers do not contribute with the actual commits to the Redis repository. A quick examination of the commits since the 7.0.0 release using gitdm shows 967 commits over that time period:
Top changeset contributions by employer
(Unknown) 331 34.2%
Tencent 240 24.8%
Redis 189 19.5%
Alibaba 65 6.7%
Huawei 50 5.2%
Amazon.com 50 5.2%
Bytedance 19 2.0%
NetEase 13 1.3%
> Binbin Zhu, of Tencent, is responsible for nearly 25% of the commits to the project. Some of the contributors without a readily identifiable employer surely are Redis employees, but it's clear that the company has not been working alone.I would love to know how does one go about doing this with off-the-shelf components. Can you share more, please
> Do I even need VRAM Pro to do this?
I wish you best.
That’s today. The project is developing fast, so I am sure more things will be added :)
I am wondering, why it took so long for something like this to happen for Postgres, where as Vitess existed for MySQL more than a decade. I am not an expert, but I hear Citus is not really a fair comparison with Vitess.
Many hash table designs, including Abseil’s Swiss Tables, forbid modifying the map during iteration. The Go language spec explicitly allows modifications during iteration, with the following semantics:
- If an entry is deleted before it is reached, it will not be produced.
- If an entry is updated before it is reached, the updated value will be produced.
- If a new entry is added, it may or may not be produced.
which I don't think was needed for valkey