Building Ousia Content Management System
Database First
In a lot of examples, we have seen companies build the front ends first, then leave the database as a bit of an afterthought.
We did it in reverse, one of the unique selling points of our Ousia, our own CMS, is the fact that we did it by starting with the database, and a set of tables optimised for extremely fast lookup times. We can in effect manage websites from within our database software.
Designing a CMS
The basis of the database is formed around four tables; website group, websites, URL's and controls.
Website Group
A website group, can contain many sites. Ours has 15 language sites and 1 shared site containing all of the shared assets.
Website
Contains information on each site or sub-site as part of a group allowing linking and relationships to be formed at the lowest level of a site, this includes language, domain and content delivery information. For instance ours is setup using 15 sub-domains for each language, and a shared system site, which contains all shared assets.
User access levels can be set at the base of each site and inherited throughout.
We also have a site route concept, which enables us to redirect from http to https, or allow CDN traffic through for images but not content, or enabling edit mode in the content editor.
URL
Each URL of your site is given a unique identifier that can be identified easily. Security features (read, edit privileges) are bound to this value, as well as content linking, redirection and meta data.
These come in a number of types which each then change the behaviour of the page and include;
- content
- events
- shop
- shop department
- product
- portfolio
- custom
- website assets
Control
Controls can be added and removed at the click of a button based on the URL type. Some get added automatically when a new URL is created, and others can be added manually.
Custom controls can be developed and added to custom URL types, enabling us to turbo charge our development times, we can get a standard site with 4-5 pages created in hours rather than days or weeks.
Optimisation
Content linking, meta data, theme styles and scripts are all added in the relevant places ready optimised from the database, and then controls are added to the page, again optimised where possible.
Once this was done in the database, we then spent time creating the editing features that you will find when you are in edit mode.
Images are stored using SQL Server file stream, which gives the fastest access available while remaining part of a database, and backed up along with the rest of the data.
- Request actions
- site lookup
- URL lookup
- send not found/not modified responses
- get control list
- fill control data
This is all usually retrieved in less than 20ms even on very large websites.
Final Notes
While this is very much an overview of how our system works, it should give you an indication of how much time has been spent making this one of the quickest systems available. If you want more information please feel free to get in contact.