Which database type can I use the best?

I can select different database types to run my project on. But witch one is the best, or is there no best database system?
3 answers

This is a fairly common question. Debates on the merits of various RDBMSs have been raging since the early 80s. The answer to the which database should I choose? question is 'it depends'.

If you want the short answer : Choose whatever database engine your site administrators know and are familiar with.

The longer answer goes something like this,

The major RDBMS engines are DB2, MySQL, Oracle, PostgreSQL and MS-SQL. All will perform adequately for a random application relying on them as a back-end, site-local variables being equal and storage local (think: default install, database on local disk).

Historically DB2 and Oracle have had the best performance records (whatever that means). Then MySQL came along and beat everyone on SELECT queries but lacked critical features such as transactions, locking, etc. PostgreSQL was coming along nicely on the lines of being full-featured ('a real RDBMS') but was lousy on performance. Microsoft wanted a piece of this market and came out with MS-SQL, which performed so horribly that no one in their right mind took it seriously.

Fast-forward a year or ten, fifteen and we arrive at the now. Engineers on all the different teams have worked hard to address the various shortcomings of their engines. On small data sets they all perform pretty much the same. Bad performance in applications is usually just bad queries sent to the database backend. (Or, in Mendix, badly modeled MicroFlows).

Once you start seriously hitting the back-end with concurrent queries and fill up those tables with millions of records, the environment and configuration of the database starts becoming an issue. The number of ways in which a given database can be set up (storage-engines-per-table, indexing options, RAM allocation, clustering, mirroring, local/remote/SAN/NAS storage, open connections, sweepers, caches, SELECT-directors, etc, etc) are staggering - and all choices affect performance.

Let me also mention that I have, at times, put various engines under higher stress than most application developers are likely to encounter - for near-real-time collection and reporting. Open Source RDBMSs (PostgreSQL and MySQL) can handle concurrent queries (INSERT/SELECT) over large data-sets as well or better than the proprietary ones, in my experience.

Proprietary engines tend to have better facilities for multi-master databases, grid-distribution, warehousing, integration with monitoring systems, etc.

So yes, there is (often) a best database you can choose. It's the database your senior site administrator knows and often is already running for various other applications.

For selecting a database engine, what really counts is the quality and expertise of the people maintaining the system.

Everything else is irrelevant.


When you are developing (or demoing) an application, the built-in database is a good choice, because it's a very small and lightweight database. You don't have to install any prerequisites and it works very quickly.

However, for a production environment or when you need to test in a production-like environment, you must choose a better database which is more suitable for a large amount of data and reliable connections in various circumstances.

When your application is not very large, and the application will handle a medium amount of data, you can use PostgreSQL. It's easy to install it and you don't have to pay for it.

When you have a great application with many connections, a large user base, and a large amount of data, Microsoft SQL Server or Oracle is a better choice. Both are suitable in this situation. Each database has positives and negatives, but that depends on your needs. However, installing and maintain a Oracle database is not simple. You need a lot of Oracle knowledge to do this. Also installing updates from Oracle is a time-consuming issue. In much cases, SQL Server will be a good choice and a little easier to install and to maintain.


If you want to use your application for demo purposes, I would recommend a built-in database. Informix, Postgresql, SQL Server and Oracle databases are directly supported by the Mendix Technology. So I would recommend those database types.