From Schema Evolution
Jump to: navigation, search

This page is out of date the text and links do not correspond to the most recent version of the online demo.

Information Systems are subject to a perpetual evolution, which is particularly pressing in Web Information Systems, due to their distributed and often collaborative nature. Such continuous adaptation process, comes with a very high cost, because of the intrinsic complexity of the task and the serious ramifications of such changes upon database-centric Information System softwares. Therefore, there is a need to automate and simplify the schema evolution process and to ensure predictability and logical independence upon schema changes. Current relational technology makes it easy to change the database content or to revise the underlaying storage and indexes but does little to support logical schema evolution which nowadays remains poorly supported by commercial tools.

The Prism system demonstrates a major new advance toward automating schema evolution (including query mapping and database conversion), by improving predictability, logical independence, and auditability of the process. In fact, Prism exploits recent theoretical results on mapping composition, invertibility and query rewriting to provide DB Administrators with an intuitive, operational workbench usable in their everyday activities---thus enabling graceful schema evolution.

In this demonstration, we will show (i) the functionality of Prism and its supportive AJAX interface, (ii) its architecture built upon a simple SQL--inspired language of Schema Modification Operators (SMO), and (iii) we will allow conference participants to directly interact with the system to test its capabilities. Finally, some of the most interesting evolution steps of popular Web Information Systems, such as Wikipedia, will be reviewed in a brief ``Saga of Famous Schema Evolutions.


Carlo A. Curino (contact author): [1]

Hyun J. Moon: [2]

Myungwon Ham: [3]

Carlo Zaniolo: [4]


The Demo and Screencast

The on-line Demo of Prism is available at . This is an AJAX front-end while the backend is a Java service (running on tomcat) and connecting to a MySQL backend.

Please notice that this software is currently under development, and not officially released yet.

A Video of a typical interaction is available at:

Limitations of the Current Demo

  • The default schema you will be testing doesn't contains any integrity constraints, thus some of the System optimizations are not accessible at the moment.
  • The SQL Parser accepts a limited syntax (explicit aliases, and no aggregates)
  • The interface still has some glitch and session management issue (reset cookies in the browser and reload).
  • The interface doesn't warn (yet) before removing or editing SMOs (also if cascade actions are involved).

Suggested Test


  • Select the Configuration Tab
  • Click Load Schema, leaving the configuration parameters to the default (MediaWiki Schema 48)


  • Select SMO-Design Tab
  • Try to input the following SMO: DECOMPOSE TABLE objectcache INTO ob1(keyname, value), ob2(keyname,exptime);
  • Add the smo to the working set
  • Click on Show Resulting Schema to visualize the resulting schema
  • Add the following SMO: COPY TABLE blobs INTO b2;
  • Add the following SMO: DROP TABLE archive; (notice the various feedback on information preservation and redundancy)
  • Add the following SMO: DROP TABLE blobs;
  • Add the following SMO: DROP TABLE b2;


  • Select Inverse-Design Tab
  • Observe the inverses computed by the system
  • On the right hand-side the system computes query "support" (there are 3 queries at the moment in the system), click on the buttons to see failing query
  • Click on "show supported schema buttons" to see the supported schema.
  • Edit SMO 48:4-48:3 and substitute it with a NOP; (other SMO are modified accordingly!)
  • Visualize schema supported at version 48:0


  • Select Validation Tab
  • The DEDs forward and backward are shown (scroll to skip initial type and schema definitions)
  • Input the query SELECT o.exptime,o.keyname,o.value FROM objectcache o;


  • Select Deployment Tab
  • Observe SQL views (scroll to objectcache table)
  • Observe SQL data migration script
Personal tools