“What I cannot create, I do not understand.” – Richard Feynman
This repository contains code implementations for 'Designing Data-Intensive Applications (DDIA)' by Martin Kleppmann in Go. The project aims to provide practical examples and hands-on exercises based on the concepts and principles discussed in the book, showcasing solutions in multiple programming languages.
It serves as a valuable companion for those who want to delve deeper into the world of designing and building scalable and maintainable data-intensive applications across different language ecosystems.
- K Way Merging File
- Rolling Hash (Rabin-Karp Algorithm)
- Cuckoo Hashing
- Consistent Hash(Hash Ring)
- Bloom Filter
- Boyer–Moore majority vote algorithm
- Count-Min Sketch
- HyperLogLog
- TDigest
- Run Length Encoding
- SimHash
- Roaring Bitmap
- B-Tree in mem
- B-Tree on Disk
- B+Tree in progress
- byteorder provide rust like byteorder crate for golang
- file_utils provide Java commons-io like file_utils for golang
- Gossip
- Raft
- Wal
- Delay queue(Rust done, Go in progress)
- Ntp
- Sql parser
- Column-storage
If you are interested in this project or would like me to prioritize implementing a certain component, please don't hesitate to submit an issue. If you encounter any problems with the code, you are also welcome to submit a PR with the appropriate modifications.