This is even worse when the server supports compressed request bodies (but my sense is that it is uncommon), for example with the Decompress middleware in Echo.
This is even worse when the server supports compressed request bodies (but my sense is that it is uncommon), for example with the Decompress middleware in Echo.
In this case, the input is a URL-encoded form data with small keys and no values.
In this case, the input is a URL-encoded form data with small keys and no values.
Bluesky provides one of the more inviting ones.
Happy New Year.
Bluesky provides one of the more inviting ones.
Happy New Year.
It is downstream of a relay, and consumes listHosts (it doesn't right now, but it should) and the firehose to index repositories and collections.
It is downstream of a relay, and consumes listHosts (it doesn't right now, but it should) and the firehose to index repositories and collections.
This is the number of repositories visible to the new relays that have been in production since May. An #atproto #atdev 🧵
But why 14 million repositories while Bluesky supposedly has 41 million users? Well, the repositories enumerated by tap are the ones visible to the new relay implementation that has only been live since May.
In addition, splitting the repository into smaller files should reduce write amplification during storage compaction, the process of merging updates together.
In addition, splitting the repository into smaller files should reduce write amplification during storage compaction, the process of merging updates together.
Skip non-matching blocks until you find one that is at or past the current key.
Skip non-matching blocks until you find one that is at or past the current key.
Output a node. Then for each entry referenced by this node, output either nothing (if the entry has not been modified in that update), or recursively another node, or a value.
We can keep the format sparse by indexing the entries in the serialization.
Output a node. Then for each entry referenced by this node, output either nothing (if the entry has not been modified in that update), or recursively another node, or a value.
We can keep the format sparse by indexing the entries in the serialization.
By ordering updates the same way, we also have an easily mergeable file format. And the begining of a log-structured storage.
By ordering updates the same way, we also have an easily mergeable file format. And the begining of a log-structured storage.
That makes writes relatively cheap, but scatters the repository into a bunch of files without a natural order, making reads expensive.
That makes writes relatively cheap, but scatters the repository into a bunch of files without a natural order, making reads expensive.
That's great! Unfortunately, their structure does not make them natively easy to query or update.
That's great! Unfortunately, their structure does not make them natively easy to query or update.
The linked thread is discussing how the tap synchronization tool only has visibility on repositories active since May 2025 (not 2024). This is not a general issue with the network.
The linked thread is discussing how the tap synchronization tool only has visibility on repositories active since May 2025 (not 2024). This is not a general issue with the network.