Joomla is a content manager, namely it’s a software product which permits us to store, manage and show users information of any type. Of any type? Indeed, although they don’t have the same multimedia data processing text data, our friend Joomla is designed to work with any data type.
The text data type, and in some cases media data, is stored in a database manager.
Until recently, Joomla only worked with a MySQL database, but that has changed and today any database engine such as Oracle, Postgresql or any other open source database can be installed.
What is a database manager? Imagine a warehouse which is used for storage…
This building would be the server where the database engine would be launched. In our previous image we can see that in only one building (server) different database engines can exist together. By default our Joomla will try to configure itself to work with a MySQL database.
But let’s open the door of our database engine…
Notice that I have always used the term “database engine” to refer to the storage, and not the “database”... why? Because a database is a reserved space for a project (normally) inside of this storage and inside the database engine.
Inside of our database engine we have created four spaces for four databases. Normally our hosting provider will facilitate the access to a database engine, and depending on the type of hosting contracted we can create a determined number of databases inside of the space of our “storage”.
If Joomla needs a database for each installation, the number of CMS which we could set up would be limited by the number of databases supported by our “storage”… it is designed so that we can optimize all of our investments and also the hosting for our projects. Let's see how…
For each installation of an instance of Joomla we need to indicate not only the name of the server (storage), the database (the space we have reserved inside the storage), but also a “prefix” used to assign the tables that make up our project. This prefix is prepended to the names of all tables that contain our information (we will now see what these tables are):
It’s as if we placed the information in shelves identified by that prefix in each special zone and storage… but in what type of recipient is that data stored? In what we call “tables”, or in our example above, “boxes”. The boxes contain normalized information, namely, information which has a relation between them and together.
The boxes contain standardized information, ie information that has a relation between them and that brings up an "information item" or "record". For example, a box will contain the information of the users, another of the groups, or the articles, the menus, its elements, etc. Each box (named by the prefix of the project plus a text which helps to identify its content) therefore will store a set of data about a particular need for our project.
In this image we can see two instances of Joomla (which need to be in different databases (spaces inside the storage) since the prefix is the same and the name JOS_Users (table which contains the users and their permissions) will have the same name in the two box groups (tables). In the second group of tables JOS_Users inclides the “etc…” In the first group of boxes there is only one box… Is this possible in one operating instance of Joomla? No! This would be an example of an instance of Joomla incomplete or half installed. However in the second group of tables we can see a lot… and I mean a lot… this could be a complete and functional installation of Joomla.
There is a type of data which normally (unless the budget does not permit it) is stored outside of the database. These are multimedia files (videos, images, music, electronic signatures, etc…). That is to say as if this were a large estate (FTP space) around the warehouse where we could deposit our files (like logs of wood stacked out of the database engine). Each of these files will have a name, and if we need to refer to them inside of one of the “records” that we have inside of the boxes we would do it by using this name. This way the Joomla developer has the product prepared so he/she can access these files in a quick way locating it by only reading the name in the corresponding “record” and taking it from the “estate” where the files are in our hosting.
It’s much more economical to rent a free space (estate) than a database motor (storage). In addition to that, when using cache systems to provide greater optimization time building our pages, we can separate the behavior of our "dynamic" information (the database) from the static (the FTP space).
As we can see Joomla again worries about our economy.
This structure permits us to scale Joomla for projects of all sizes, from the projects of “next-next” (that is held by non-technologists), to large projects that have their databases spread over different continents and are created, maintained and managed by highly qualified personnel.
That’s why Joomla is a good choice for projects that manage a small amount of data, as well as those which are more demanding with hundreds of millions of users.
Now we know a little more about how information is stored by Joomla, we have enough information so that in the next article we can dare to understand how management options work and use it. It would be the moment to relate the menus with the categories, the articles and the rest of the “tools” which Joomla offers us with to do each day web portals more and more powerful and imaginative.