|
||||||||||||||
Databases and Web Services[ Course mailing list | Lecture slides | Assignments | Exams | Projects | Literature | Extra links ]Course topics: database services, database design (ER, UML), SQL, relational design theory, transaction management, web frontends, NoSQL, and selected special topics. This course introduces into (relational) database systems in theory and practice, with special emphasis on Web-based applications. In the accompanying project work, design and implementation of database and Web service components will be addressed, culminating in a sample database-enabled Web service based on the LAMP open source package. This course is recommended for all students specializing in computer science. The course requires basic knowledge about algebraic expressions and laws, basic data structures like trees, object-oriented concepts, as well as - for the lab work - HTML and Linux. Not a CS major? Then contact me upon semester start! Maybe you want to get specific support in the programming aspects. Course mailing list
If you attend the course, make sure you are subscribed to that list to not miss important information! Lecture slides[ Introduction and Project intro | Database design | The relational model | SQL | Database application development | Web as frontend to database services | 3-tier architectures | Relational Algebra | Query processing | Physical database design, see also this post | Normal Forms | Transactions | Security | NoSQL | XML, XPath, XQuery | RDF, SPARQL | Array databases | MapReduce | Big Data | OLAP | Parallel Databases | Wrap-up ] ...plus the talk given by Keith Hare, Convenor of the ISO SQL Working group. Project AssignmentsThe project consists of team work where students form teams on their own and pick some project topic they like. Over the semester, a Web-based information service about this topic will be built, guided by weekly assignments. Assignments have to be handed in as stated in the task sheet: either by email or via a repository. Late submissions will be disregarded. Several tasks require you to submit an individual answer, even though it may be part of the project. In such cases you may want to develop some solution within your team first, and then create your answer sheet by adapting the approach to your individual situation. For the Entity-Relationship diagramming tasks you may want to use dia or any other tool of your choice. Any questions on the assignment? Just contact the Teaching Assistants - they are happy to assist and explain! Further, weekly helpdesks and tutorials will be provided in the project's time slot. Details will be communicated in class and in the course channel. Exams
ProjectsDuring the course you will have to implement your own Web service, based on Linux, Apache, Python, MySQL ("LAMP"). To this end, you are expected to team up in groups of 2 - 3 early in the semester.Use the ClamV environment (how to set up my own Web pages directory). Note that this excludes setting up your own environment, eg, on some Windows server! And, no, we tentatively do not use advanced tools like content management systems, because we want to learn about the internals of that technology. I will suggest some topics, but it is highly appreciated if you come up with your own idea, maybe even for some service that will have its sustained life afterwards. It just needs to fulfil some criteria to make it manageable (not trivial, not too complex), so contact me early with your idea! The main evaluation criteria for the website you will develop are as follows (in no particular order; authoritative list on course slide deck 00):
LiteratureCourse reference:
Extra links
For the Unified Modeling Language (UML) there is many good tutorials available on the Web, for example
Borland's tutorial,
Sparx Systems' tutorial by
with a particular part on
Database Modeling in UML.
There is also a list of UML tutorials maintained by uml.org itself.
Some LAMP links:
The LAMP page by O'Reilly.
LAMP, as you know, stands for..., well, at first: Linux. Compare this and that site! Sometimes helpful: TLPD - The Linux Documentation Project.
Then, about the rest:
Apache
and mySQL
and PHP.
For PHP, there is some discussion of Apache configuration aspects, also touching security issues. This input sanitizing script might save your life one day. Tuning of databases is something only marginally addressed in lecture, albeit a large (and fascinating) area, and of immense practical importance. Just two tools here: Practical query analysis produces HTML reports on slowest queries, most frequent queries, queries by type (select/insert/update/delete), and all that sort of thing for PostgreSQL and MySQL database logs. Using a template postgresql.conf and test data, pgAutotune will run through a process of testing different settings on your PostgreSQL server and determine which settings have the best performance. For additional material, see e.g. Software Engineering for Internat Applications. Given the large variety of Web app implementation languages available it is no surprise that there is hot discussions on which platform is the best one. One line of arguments, which I share to a large extent (but not completely) is presented by two webcasts of a NASA/JPL guy (webcast1, webcast2). |
||||||||||||||
|