ADBS: Advanced Database Systems
Welcome to Advanced Database Systems
Learning Outcomes
On successful completion of this course, you should be able to:
- Describe how database management systems function internally. Interpret and comparatively criticise database systems architectures.
- Implement major components of a database management system and analyse their performance.
- Analyse and compare the fundamental query evaluation and concurrency control algorithms, identify strengths and weaknesses of query evaluation plans, and optimise query evaluation plans.
- Identify trade-offs among database systems techniques and contrast distributed / parallel techniques for OLTP and OLAP workloads.
Course Outline
Lectures will cover roughly the following topics:
- Database systems architectures, row stores and column stores, OLTP vs. OLAP, in-memory database systems
- Storage: secondary-storage devices
- Indexing: tree-based and hash-based techniques, learning indices from data (time permitting)
- Query evaluation: theory of query evaluation, sorting and join processing, selection, projection, aggregation
- Query optimisation: cardinality estimation, cost-based query optimisation, dynamic programming, rule-based optimisation
- Transaction management: ACID properties, concurrency control, locking and multi-version protocols, crash recovery
- Distributed database systems: parallel query evaluation, distributed transaction processing
- Big data and NoSQL systems (time permitting)
The coursework will consist of one programming assignment on implementing parts of an educational database system written in Java. Prior experience with Java is recommended although not strictly required. Good knowledge of object-oriented programming is expected.
Prerequisites
The course assumes an understanding of algorithms and data structures (e.g., quick sort, merge sort, binary trees, hash tables, big-O notation) and some basic familiarity with complexity (e.g., PTIME, NP-complete). It is recommended that students have basic knowledge of databases (e.g., SQL and relational algebra) although key concepts will be covered in the course.
A good level of object-oriented programming is assumed and will not be covered during lectures. The coursework will involve implementing different parts of a database system in Java.
Recommended Textbooks
Most lectures will closely follow this textbook:
- Database Management Systems (3rd edition, 2003) by Ramakrishnan and Gehrke
The UoE Library offers some but not all chapters online, go to "Library Resources".
The lectures on conjunctive queries (weeks 2 & 3) will refer to chapters from this textbook:
- Principles of Databases by Arenas, Barcelo, Libkin, Martens and Pieris