-
Understanding B-Trees: The Data Structure Behind Modern Databases
-
Writing a SQL database from scratch in Go: 1. SELECT, INSERT, CREATE and a REPL
1. Persistence. How not to lose or corrupt your data. Recovering from a crash.
2. Indexing. Efficiently querying and manipulating your data. (B-tree).
3. Concurrency. How to handle multiple (large number of ) clients. And transactions.
- Heaps, heapsort, and priority queues - Inside code
- Trie data structure - Inside code
- Compressed trie
- Wikipedia
- mCoding : Bloom Filters
- Number0 : Bloom Filters
- ByteByteGo : Bloom Filters
- Spanning Tree : What Are Bloom Filters?
- ByteMonk : Bloom Filters
Bloom filter is a space-efficient probabilistic data structure, that is used to test whether an element is a member of a set. False positive matches are possible, but false negatives are not - in other words, a query returns either "possibly in set" or "definitely not in set". Elements can be added to the set, but not removed.
A Bloom filter is a representation of a set of n items, where the main requirement is to make membership queries; i.e., whether an item is a member of a set.
Content delivery networks deploy web caches around the world to cache and serve web content to users with greater performance and reliability. A key application of Bloom filters is their use in efficiently determining which web objects to store in these web caches. To prevent caching one-hit-wonders, a Bloom filter is used to keep track of all URLs that are accessed by users.
- Wikipedia
- PapersWeLove : HyperLogLog
- The Algorithm with the Best Name - HyperLogLog Explained
- A problem so hard even Google relies on Random Chance
- Counting BILLIONS with Just Kilobytes
- https://github.com/tylertreat/BoomFilters/blob/master/hyperloglog.go
HyperLogLog is an algorithm for the count-distinct problem, Probabilistic cardinality estimators.
The goal of the basic version of the count–min sketch is to consume a stream of events, one at a time, and count the frequency of the different types of events in the stream.
#04 - Database Storage: Log-Structured Merge Trees & Tuples (CMU Intro to Database Systems)
https://github.com/facebook/rocksdb/wiki
https://github.com/krasun/lsmtree https://github.com/skyzh/mini-lsm
-
Golang concurrency - Locks, Lock Free and everything in between
-
The Art of Multiprocessor Programming
-
Seven Concurrency Models in Seven Weeks
-
A brief introduction to the actor model & distributed actors
-
https://kmdreko.github.io/posts/20191003/a-simple-lock-free-ring-buffer/
-
https://github.com/LMAX-Exchange/disruptor/wiki/Blogs-And-Articles