B+Trees are one the most common structures in the database world, especially in a context of indexing. They map well onto a page/block model used for persisting data on the hard drives and provide a nice "jack…
Bartosz Sypytkowski
A collection of 67 posts
Let's write async-compatible read/write lock
Today, we're going to discuss .NET locks API, how are they (un)fit for the async workflows and thread-pool backed runtimes and what can we do about it. We'll also challenge some of the decades old…
Deep dive into Yrs architecture
In this blog post we're going to cover the the internals and architecture behind Yrs [https://crates.io/crates/yrs] (read: wires) - a Rust port of popular Yjs [https://yjs.dev/] CRDT library used for building collaborative…
RAMP up your distributed transactions
Last time [https://www.bartoszsypytkowski.com/hash-partitions/] we were talking about partitioning in distributed systems. Now it's a time to talk about protocols that allow us to establish transactional reads and writes across partitions - which could be…
Distributed systems: partitions
Today we'll talk about topic of resource allocation in distributed systems using partitions. While we mention two common approaches - partitioning by key and hash rings - further down the post we'll focus only on the…
Delta-state CRDTs: indexed sequences with YATA
In this blog post we're coming back to indexed sequence CRDTs - we already discussed some operation-based approaches in the past. This time we'll cover YATA (Yet Another Transformation Approach): a delta-state based variant, introduced [https:…
CRDT optimizations
After series of 11 blogs posts about Conflict-free Replicated Data Types, it's time to wrap up. This time let's discuss various optimizations that could be applied to CRDTs working at higher scale. Other blog posts from…
Pure operation-based CRDTs
In this blog post we'll continue on topic of operation-based CRDTs and focus on the optimizations and approach known as pure operation-based CRDTs [https://hal.inria.fr/hal-01287738/document]: how can we use them to address some of…