- Oracle Database. The leader in SQL databases. It is expensive. But most other databases are catching up.
- Microsoft SQL Server. Only an option if Microsoft lock-in is worth for you. It is expensive but quite good and easy to use and maintain. A big competitor for Oracle.
- IBM DB2. Not a big contender for new systems nowadays. It has cryptic error messages. It is mostly used in mainframes and banking. DB2 does not have Regular Expression support yet.
- MySQL. The most popular free Open Source SQL database that nowadays is also ACID compliant. MySQL still has many bugs that will bite you when you most need it like MySQL Bug #10327: Can't reopen temporary table - should be allowed and does not yet report the cause of many errors like MySQL Bug #24413: Misleading error message when hard drive is full or like Can't create table (errno: 150). MySQL also has some non standard SQL extensions that will make some statements not fail but will probably get you error results. MySQL lacks full text search indexing on transactional tables. MySQL and MariaDB fixes bugs by saying they are annoying but documented (that way I fix bugs too ;-) (see MySQL Bug #53356: Character set bug at server with utf8 column and latin1 connection). MySQL has some SQL extensions that are quite useful like INSERT IGNORE and ON DUPLICATE KEY UPDATE. Anyway, MySQL is a quite good SQL database and has great documentation (concise and complete).
- PostgreSQL. The original free Open Source ACID SQL database that now is fast and stable. PostgreSQL is nowadays faster, more stable and with more features than MySQL. PostgreSQL has no bugtracker so you may have a hard time looking for problems and their status. I am waiting for PostgreSQL to include MERGE or MySQL's INSERT IGNORE and ON DUPLICATE KEY UPDATE.
- Apache Derby. An embedded free Open Source Java SQL database. Since IBM bought it, it keeps all IBM DB2 semantics that can bite you if you also use other databases. (for example "user" is a reserved word and it will not let you use it as a column name and derby has still many bugs like [#DERBY-3436] Embedded closes all open ResultSets on failure in auto-commit mode, whereas client keeps them open or [#DERBY-160] Foreign key constraint failure closes the cursors in embedded mode but not in Network Server mode that will bite you when you most need it) These kind of bugs make Apache Derby not production quality yet. Apache Derby is mostly used as IBM DB2 marketing tool, so its peace of development is slow.
- HSQLDB. A free Open Source Java embedded database for testing purposes. It should not be used in production since all the data is kept in volatile memory (instead of non-volatile memory) and needs to process all the SQL statements on startup, making it unsuitable for large amounts of data. It also has bugs like: ID: 1615886 - Not in aggregate function or group by clause
- H2. A free Open Source Java embedded database of the same creators of HSQLDB, but better designed, faster and with decent storage that it is production ready.
- SQLite. The most popular SQL embedded database. It is free Open Source. Used in products like Mozilla Firefox, Mac OS X, iPhone, Skype, Symbian OS, Android, and many others. SQLite lacks full unicode support on most systems since the full unicode support module (ICU) is optional. SQLite also has many bugs (like SQLite dynamic typing) that the official developers consider as features, but differ from most other SQL databases and even the SQL standard.
MySQL vs PostgreSQL - WikiVS
No comments:
Post a Comment