2020-04-29 23:55:42 +08:00
|
|
|
- Storage Engine
|
|
|
|
- Disk I/O
|
|
|
|
- Flavors of I/O
|
|
|
|
- <https://medium.com/databasss/on-disk-io-part-1-flavours-of-io-8e1ace1de017>
|
|
|
|
- <https://medium.com/databasss/on-disk-io-part-2-more-flavours-of-io-c945db3edb13?>
|
|
|
|
- Amplification and RUM
|
|
|
|
- <http://smalldatum.blogspot.com/2015/11/read-write-space-amplification-pick-2_23.html>
|
|
|
|
- <http://daslab.seas.harvard.edu/rum-conjecture/>
|
2020-05-07 14:53:10 +08:00
|
|
|
- <http://smalldatum.blogspot.com/2019/05/crum-conjecture-read-write-space-and.html>
|
2020-04-29 23:55:42 +08:00
|
|
|
- B-Tree (Optional)
|
|
|
|
- Reading Materials
|
|
|
|
- Database Internals: 2. B-Tree Basics
|
|
|
|
- Database Internals: 3. File Formats
|
|
|
|
- Database Internals: 4. Implementing B-Trees
|
|
|
|
- Reference
|
2020-05-07 14:53:10 +08:00
|
|
|
- <https://www.cs.usfca.edu/~galles/visualization/Algorithms.html>
|
2020-04-29 23:55:42 +08:00
|
|
|
- <https://github.com/etcd-io/bbolt>
|
|
|
|
- LSM-Tree
|
|
|
|
- Reading Materials
|
|
|
|
- Database Internals: 7. Log-Structured Storage
|
|
|
|
- Reference
|
|
|
|
- <https://github.com/google/leveldb>
|
|
|
|
- <https://github.com/facebook/rocksdb>
|
|
|
|
- <https://github.com/syndtr/goleveldb>
|
|
|
|
- B-Tree vs LSM-tree
|
|
|
|
- <https://tikv.org/docs/deep-dive/key-value-engine/b-tree-vs-lsm/>
|
|
|
|
- LSM-Tree Evolution
|
|
|
|
- Wisckey
|
|
|
|
- <https://www.usenix.org/system/files/conference/fast16/fast16-papers-lu.pdf>
|
|
|
|
- HashKV (Optional)
|
|
|
|
- <https://www.usenix.org/system/files/conference/atc18/atc18-chan.pdf>
|
|
|
|
- Monkey (Optional)
|
|
|
|
- <https://stratos.seas.harvard.edu/files/stratos/files/monkeykeyvaluestore.pdf>
|
|
|
|
- Reference
|
|
|
|
- <https://github.com/dgraph-io/badger>
|
|
|
|
- <https://github.com/tikv/titan>
|
|
|
|
- Serializing & RPC
|
|
|
|
- Protocol Buffer
|
|
|
|
- Reading Materials
|
|
|
|
- <https://developers.google.com/protocol-buffers/docs/overview>
|
|
|
|
- Reference
|
|
|
|
- <https://github.com/dgraph-io/badger>
|
|
|
|
- <https://github.com/protocolbuffers/protobuf>
|
|
|
|
- gRPC
|
|
|
|
- Reading Materials
|
|
|
|
- <https://www.grpc.io/docs/quickstart/go/>
|
|
|
|
- Reference
|
|
|
|
- <https://github.com/grpc/grpc-go>
|
|
|
|
- Data Partitioning
|
|
|
|
- Range vs Hash
|
|
|
|
- <https://tikv.org/docs/deep-dive/scalability/data-sharding/>
|
|
|
|
- Partitioning of DynamoDB (Optional)
|
|
|
|
- <https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf>
|
|
|
|
- <https://dzone.com/articles/partitioning-behavior-of-dynamodb>
|
|
|
|
- Partitioning of TiKV
|
|
|
|
- <https://pingcap.com/blog/2017-07-11-tidbinternal1/>
|
|
|
|
- Replication & Consistency
|
|
|
|
- Reading Materials
|
|
|
|
- Database Internals: 11. Replication and Consistency
|
|
|
|
- CAP vs PACELE
|
|
|
|
- <http://www.cs.umd.edu/~abadi/papers/abadi-pacelc.pdf>
|
|
|
|
- Clock and Time
|
|
|
|
- <https://dzone.com/articles/tick-or-tock-keeping-time-and-order-in-distributed-1>
|
|
|
|
- Consistency
|
|
|
|
- <https://arxiv.org/pdf/1902.03305.pdf>
|
|
|
|
- Consensus
|
|
|
|
- Quorum
|
|
|
|
- <https://en.wikipedia.org/wiki/Quorum_(distributed_computing)>
|
|
|
|
- Paxos (Optional)
|
|
|
|
- Reading Materials
|
|
|
|
- Database Internals: 14. Consensus @ Paxos
|
|
|
|
- Reference
|
|
|
|
- <https://lamport.azurewebsites.net/pubs/paxos-simple.pdf>
|
|
|
|
- Raft
|
|
|
|
- Reading Materials
|
|
|
|
- Database Internals: 14. Consensus @ Raft
|
|
|
|
- Reference
|
|
|
|
- <https://raft.github.io/>
|
|
|
|
- <https://pdos.csail.mit.edu/6.824/labs/lab-raft.html>
|
|
|
|
- Scale & Balance
|
|
|
|
- Multi-Raft
|
2020-05-07 14:53:10 +08:00
|
|
|
- <https://tikv.org/deep-dive/scalability/multi-raft/>
|
2020-04-29 23:55:42 +08:00
|
|
|
- Split & Merge
|
2023-01-06 09:22:50 +08:00
|
|
|
- <https://pingcap.com/blog/tidb-internal-scheduling/>
|
2020-04-29 23:55:42 +08:00
|
|
|
- Balance
|
2023-01-06 09:22:50 +08:00
|
|
|
- <https://pingcap.com/blog/tidb-internal-scheduling/>
|
2020-04-29 23:55:42 +08:00
|
|
|
- Distributed Transactions
|
|
|
|
- Reading Materials
|
|
|
|
- Database Internals: 5. Transaction Processing and Recovery
|
|
|
|
- Database Internals: 13. Distributed Transactions
|
|
|
|
- ACID
|
|
|
|
- <https://en.wikipedia.org/wiki/ACID>
|
|
|
|
- Isolation (Optional)
|
|
|
|
- <https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-95-51.pdf>
|
|
|
|
- <https://www.jianshu.com/p/3673e612cce2> (Chinese)
|
|
|
|
- Spanner (Optional)
|
|
|
|
- <https://storage.googleapis.com/pub-tools-public-publication-data/pdf/45855.pdf>
|
|
|
|
- <https://www.jianshu.com/p/f307bd2023f5> (Chinese)
|
|
|
|
- Percolator
|
|
|
|
- <https://tikv.org/docs/deep-dive/distributed-transaction/percolator/>
|
|
|
|
- <https://tikv.org/docs/deep-dive/distributed-transaction/optimized-percolator/>
|
|
|
|
- Coprocessor (Optional)
|
|
|
|
- <https://blogs.apache.org/hbase/entry/coprocessor_introduction>
|
|
|
|
- <https://zhuanlan.zhihu.com/p/89518391> (Chinese)
|
|
|
|
- Benchmark & Testing
|
|
|
|
- sysbench (Optional)
|
|
|
|
- <https://github.com/akopytov/sysbench>
|
|
|
|
- <https://www.percona.com/blog/2019/04/25/creating-custom-sysbench-scripts/>
|
|
|
|
- <https://www.jianshu.com/p/30933e0bebe7> (Chinese)
|
|
|
|
- go-tpc (Optional)
|
|
|
|
- <https://github.com/pingcap/go-tpc>
|
|
|
|
- go-ycsb
|
|
|
|
- <https://github.com/pingcap/go-ycsb>
|
|
|
|
- <https://medium.com/@siddontang/use-go-ycsb-to-benchmarkdifferent-databases-8850f6edb3a7>
|
|
|
|
- <https://www.jianshu.com/p/73d22befe47d> (Chinese)
|
|
|
|
- Chaos
|
|
|
|
- <https://principlesofchaos.org/>
|
|
|
|
- <https://pingcap.com/blog/chaos-practice-in-tidb/>
|
|
|
|
- <https://medium.com/@siddontang/use-chaos-to-test-the-distributed-system-linearizability-4e0e778dfc7d>
|