Database Software
1. CUBRID
​
CUBRID is a great free and open source option optimized specifically for web applications, useful when complex web services process large amounts of data and generate huge concurrent requests. This solution is implemented in C.
​
Pros
-
Multiple granularity locking
-
Online backup
-
GUI tools and drivers for development languages:
-
JDBC, PHP, Python, Perl, and Ruby.
-
-
Auto-failover feature with 24/7 online web service
-
Supports native DB sharding for horizontal/vertical scalability
-
Large systems divide data over multiple database instances
-
-
Database replication and transaction consistency
​
Cons
-
Doesn’t work with Apple systems
-
No script debugger
-
Manual only comes in English or Korean
-
Discussions on their forum tend to be dated (most are from several years ago)
2. Firebird
​
This relational database has been used in production systems (under a variety of names) since 1981 and features many ANSI SQL standards. Firebird is capable of running on Linux, Windows, and various Unix platforms.
​
Pros
-
Trace API for real-time monitoring
-
Windows-trusted authentication
-
Four supported architectures:
-
SuperClassic, Classic, SuperServer, and Embedded
-
-
Variety of development tools:
-
Commercial tools: FIBPlus and IBObjects
-
-
Automatic sweep option to clean database
-
Event notifications from database triggers and stored procedures
-
Free support through Firebird’s large global community
​
Cons
-
Integrated replication support isn’t included (only as add-on)
-
Lacks temporary tables and integration with other database systems
-
Windows-trusted authentication lacking in comparison to other OS solutions
​
3. MariaDB
​
Made by the original developers of MySQL, MariaDB is used by tech giants like Wikipedia, Facebook, and even Google. MariaDB is a database server that offers drop-in replacement functionality for MySQL. Security is a top concern and priority for MariaDB developers, and in each solution release, the developers also merge in all of MySQL’s security patches and enhance them if need be.
​
Pros
-
High scalability with easy integration
-
Real-time access
-
Core functionality of MySQL
-
Alternate storage engines, server optimizations, and patches
-
Extensive knowledge base compiled over the 20 years MariaDB has been operating
​
Cons
-
Missing password complexity plugin
-
No memcached interface
-
No optimizer trace
4. MongoDB
​
MongoDB was founded in 2007 and is known as the “database for giant ideas.” Developed by the people behind DoubleClick, ShopWiki, and Gilt Groupe, MongoDB is also backed by popular investors such as Fidelity Investments, The Goldman Sachs Group, Inc., and Intel Capital. Since its inception, MongoDB has been downloaded 20 million times and is supported by more than 1,000 partners. These partners are dedicated to this free and open source solution’s belief that coding and databases should be simple and natural.
​
Pros
-
Document validation
-
Encrypted storage engine
-
Common use cases:
-
Product catalogs
-
Real-time apps with in-memory storage engine (beta)
-
Reduces time between primary failure and recovery
​
Cons
-
Doesn’t fit applications needing complex transactions
-
Not a drop-in replacement for legacy applications
-
Young solution: software changes and evolves quickly
5. MySQL
​
MySQL has been around since 1995 and is now owned by Oracle. While open source, there are also several paid editions available that offer additional features, like cluster geo-replication and automatic scaling. Because MySQL is an industry standard, it’s also compatible with just about every operating system and written in both C and C++. This solution is a great option for international users since the server can provide error messages to clients in multiple languages, encompassing support for several different character sets.
​
Pros
-
Host-based verification
-
Can be used even when no network is available
-
Flexible privilege and password system
-
Security encryption of all password traffic
-
Library that can be embedded into standalone applications
-
Provides server as separate program for client/server networked environment
​
Cons
-
Acquired by Oracle:
-
Users feel MySQL no longer falls under free and OS
-
No longer community driven
-
Members can’t fix bugs and craft patches
-
Falls behind others due to slow updates
-
6. PostgreSQL
​
With more than 15 years of active development, PostgreSQL is another stellar open source option, running on all major operating systems, including Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), and Windows. PostgreSQL is also fully ACID (Atomicity, Consistency, Isolation, Durability) compliant.
​
Pros
-
Create custom data types and query methods
-
Framework enables definition and creation of own custom data types
-
Runs stored procedures in more than a dozen programming languages:
-
Java, Perl, Python, Ruby, Tcl, C/C++, and its own PL/pgSQL
-
-
GiST (Generalized Search Tree) system
-
Brings together different sorting and searching algorithms:
-
B-tree, B+-tree, R-tree, partial sum trees, and ranked B+-trees
-
-
-
Creation of extensions like CitusDB for more parallelism without modifying Postgres code
​
Cons
-
MVCC system requires regular “vacuuming”
-
Problems in high transaction rate environments
-
-
Development is done by broad community
-
Fair amount of effort for improvements added
-
7. SQLite
​
Self-proclaimed as the most widely deployed database in the world, SQLite began in 2000 and has been used by notable companies like Apple, Facebook, Microsoft, and Google. Each release is carefully tested to ensure reliability. Even if there are bugs, the developers of SQLite are honest about potential shortcomings by providing bug lists and chronologies of code changes for every release.
​
Pros
-
No separate server process
-
File format is cross-platform
-
Compact library: runs faster even with more memory
-
Transactions are ACID compliant
-
Professional support also available
​
Cons
-
Not recommended for:
-
Client/Server applications
-
High-volume websites
-
Large datasets
-
High concurrency
-
8. Event Store
​
An event store is a type of database optimized for storage of events. Conceptually, in an event store, only the events of a dossier or policy are stored. The idea behind it is that the dossier or policy can be derived from these events. The events (and their corresponding data) are the only "real" facts that should be stored in the database. The instantiation of all other objects can be derived from these events. The code instantiates these objects in memory. In an event store database, this means that all objects that should be instantiated, are not stored in the database. Instead these objects are instantiated 'on the fly' in memory by the code based on the events. After usage of these objects (e.g. shown in a user interface), the instantiated objects are removed from memory.