Thursday, February 28, 2013

Data Modeling for Dynamic System

Version 1.0 by Fabrice Morisseau

Abstract


This short article presents useful source codes to build a web application, software, with an Object Relational Bridge, ORB. An ORB, if you program an object model with tables and fields, is a matrix.



Computer Science professionals will find the source code of a wiki prototype developed in 2004. Unless proven otherwise, it's the most logical way to program an ORB. Take advantage of the reusability of Oriented Object development and data modeling for dynamic systems.

 

Matrix


You can easily build a web application with a matrix. In order to use this matrix for a web application, this matrix should handle the connection and transformation of data to/from the database SQL queries, the request from the web server HTTP Request querystring and display data from the matrix with displayers. In fact, the matrix is a model driven formatting of Request and HTML display necessary  for dynamic system. To understand the principle, browse the source code of the matrix (Copy and paste has deleted some tags especially in the callback functions of the wiki field)


 

Web application


Obviously, you need an index page to access the web application. This index page will only use the matrix to handle the request and display the information or actions. Everything related to the website will be data of the matrix: css, menu, header, footer, plugins and pages content which means that once you have made the matrix, you never update the source code but you interact with the matrix. An example is the recent changes plugin use by the web application. The plugin is a wiki page store in the database and call by the matrix when asked by another page. Obviously, this application must respect web 3.0 guideline of semantic and web of data (XML). You can subscribe to the matrix RSS feed.

 

SandBox


The matrix constraints are in what we call a SandBox (See wikipedia Sandbox) because you can put programmable content in the field. A sandbox limits the programming right of a user. For example, Javascript client which runs on your computer when you surf the internet with your browser is a Sandbox. It's a limited language so that nothing really bad happens to the end user against his own will. You can check how Ludovic Dubost implemented Velocity and Hibernate in XWiki. For my matrix, I can do it by adding smarty template language to the DbWikiField and creating a Designer level of programming right.

 

Designing the Star Schema Database


For the database, you need to consider a Star Schema Database because your ORB can automatically link tables to build the queries without loops (There is only one way from one table to another in a star schema database)

You can read this white paper from Craig Utley which put forward another advantage of Star Schema Database for large volume of data in read only mode and aggregated data Designing the Star Schema Database


Thanks


Thanks to Ludovic Dubost CEO and founder of XWiki for his precious teaching about Object Relational Bridge, Laurent Nicolas CEO and founder of Alenty for his consideration about database development, Erwan Arzur and Laurent Azzopardi for their support as network and system expert, Olivier Meunier for the wiki engine wiki2xhtml which was available for free in 2004 and Andy Lau CEO and founder of I-CG, Hong Kong for his financial support during the development of this matrix.

About the author


He studied Advanced Mathematics in Saint Nazaire and hold a Master of Science in Computer Science from ESGI. He worked in collaboration with Netscape France and Netscape Corporate back in 1999 before joining NetValue as Software Engineer, Architect of NetValue Online, software releasing online research information of an Asynchronous Measurement of the Internet. His last development was XWiki Cloud scheduler plugin which has been refactored, documented and tested by Jerome Velociter. XWiki is an open source solution.