This advanced database part aims at deepening the knowledge about the main issues of the modern architectures of the information systems, of the transactional systems, and of the advanced languages for databases.
1. Transactional systems.
Relevance of transactional systems. Examples of classical transaction processing systems. Concept of transaction. Transaction properties: atomicity, consistency, isolation, durability. Theory of concurrency control. Notions of serializability and schedule equivalence. Two-phase locking. Hierarchical locking. Deadlock analysis and resolution. Introduction to other concurrency control techniques based on the use of timestamps. Database recovery techniques. Management of the system logs. Recovery protocols.
2. Internal architecture of a relational server. Notion of logical and phisical page. Buffer management policies. Research, management and data reorder techniques with: sequential, direct, and index organization. B-trees and B+-trees. Hashing. Access methods: scanning, sorting, join. Query optimization.
3. Distributed and parallel architectures. Applicative scenarios of databases in a distributed information system. Fragmentation and data allocation. Query distribution and optimization. Distributed transactions. Two- three- and four-phase commit. Interoperability standards: XOPEN-DTP. Parallelism. Transaction scale-up and speed-up. Management of replicated data.
4. Overview of Object-Oriented databases. Object-oriented and Object-relational systems and their evolution.
5. Active databases. Description of the ECA (Event/Condition/Action) paradigm for active rules. Rules execution mechanisms. Analysis techniques for active rules. Triggers in relational systems. Applications of active databases.
6. XML databases. Query languages for XML: XPath, XQuery.
7. Advanced databases. No-SQL databases; Stream databases.
Prerequisite topics can be covered with the following textbook
Atzeni, Ceri, Paraboschi, Torlone: Database Systems - Concepts, Languages and Architectures (Part I + Part II), available at http://dbbook.dia.uniroma3.it/
The advanced web technologies part of the course presents an overview of the modern architectures, technologies and development methodologies applied in the construction of multi-tier web applications.
Three main viewpoints are adopted: protocols, languages, architectures. These viewpoints are examined with an emphasis on architectures and requirements for real systems.
The following areas will be treated:
- Protocols and distributed application architectural styles: SOAP and REST; both approaches are discussed in detail and compared
- Languages and formats: JSTL, JPQL, WSDL; these languages are motivated and explained in the context of the architectural framework where they are applied.
- Architectures and systems: evolution and features of architectures of distributed applications
In particular, the following topics will be addressed:
- Distributed architectures. history, evolution, present status, outlook
- Web architectures: definition, internal organization and essential elements
- Presentation tier
- Model View Controller (MVC) and MVC2
- Web presentation frameworks and their design patterns
- Examples of systems: Struts and Spring,
- Business tier
- J2EE, Enterprise Java Beans, JPA, Object Relational Mapping
- Service Oriented Architectures
- Cloud architectures: definition, models, architectural principles, examples of systems
The course is supported by a complete set of slides and web references that cover all the topics addressed.
Prerequisite topics can be covered with the following textbooks
- S. Ceri, P. Fraternali et al, Designing Data Intensive Web Applications, Morgan Kauffman, 2003
- Lecture notes & exercises of the course Tecnologie Informatiche per il Web (in English)
- Atzeni, Ceri, Paraboschi, Torlone: Database Systems - Concepts, Languages and Architectures