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 DatabaseEngine
s 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.