Why do I need to learn about database design?
Database is the heart of any software systems, especially enterprise systems. A bad database design will eventually cause your system fail. Designing enterprise databases requires a lot of specific enterprise knowledge and in-depth understanding of the design of database system. That’s why you need to learn about advanced database design.
What can I do after finishing learning about database design?
You will know WHEN you should use a relational database management system or WHEN you should use a NoSQL database management system and HOW a database system works INTERNALLY.
You will be able to design databases for scalable and high availability software systems also.
That sounds useful! What should I do now?
After that please read this Abraham Silberschatz et al. (2019). Database System Concepts. McGraw-Hill Education book to learn about database system concepts.
After that please read
– this Martin Kleppmann (2017). Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. O’Reilly Media book, and
– this Alex Petrov (2019). Database Internals. O’Reilly Media book to learn how to design distributed databases and how distributed databases work.
Terminology Review:
- Database’s Files.
- Storage Manager.
- Database’s Pages vs. Hardware Pages vs. OS Pages.
- Page Storage Architecture: Heap Files, Tree Files, Sequential / Sorted File Organization (ISAM), Hashing Files.
- Page Directory.
- Page Header.
- Slotted Pages.
- Tuple Layout.
- Tuple Header.
- Tuple Data.
- Record Identifiers.
- Log-Structured Storage: MemTable, SSTables, Compaction.
- Index-Organized Storage.
- Tuple Storage.
- Word-Aligned Tuples.
- Data Representation: Variable-Precision Numeric Type, Null Data Type, Large Values, Overflow Pages.
- System Catalogs.
- N-ary Storage Model (NSM).
- Decomposition Storage Model (DSM).
- Partition Attributes Across (PAX) Storage Model.
- Columnar Compression: Run-Length Encoding (RLE), Bit-Packing Encoding, Bitmap Encoding, Delta Encoding, Dictionary Encoding.
- Data-Intensive Applications.
- Graph Databases.
- Distributed Databases.
- Distributed Relational Databases.
After finishing the books please click Topic 16 – Advanced Software Design to continue.