So I am developing my own DBMS as a resume project, but I am so deep now on this that I am even considering in the future to release it as an open source project and receive feedback from the community. My DBMS has to be customizable, and with that I mean that you can literally write your own code to change features of it in an easy scalable way.
While developing this project I was wondering one important thing: let's say we have multiple different databases running in the same machine and each database stores different types of data that can be retrieved in different ways. So in my project I have defined an interface called
DatabaseEngine which handles all the DBMS operations on collections and there are many different
DatabaseEngines which store and retrieve data in different ways.
Let's suppose that we have 3 databases running in the same machine. Should I allow that these databases can use different
DatabaseEngines? Is it possible in a production environment to have multiple different databases running in the same machine?
At the moment I am saving the specific
DatabaseEngine to be used for each different database in a file called "dbconfig.conf". There is 1 dbconfig.conf file for each database. When the database is loaded it reads the config file and uses the chosen
DatabaseEngine. However, initially, I used to store the
DatabaseEngine in the config collection of the database representing my DBMS (for example in MySQL the database representing MySQL is mysql if I am not wrong).
However if I do this when each database is loaded the database reads which
DatabaseEngine to use from the config collection of the main db and the
DatabaseEngine. It's the same for every different database.