There’s always been some contention over which SQL database tool is superior. Every administrator has their preferences, and every programmer has their own unique way of dealing with code. For that reason, if you ask five different sys- -admins which platform they prefer, you’re like to receive five different answers.
Let’s see if we can’t help you come to your own answer.
Today, we’re going to look at some of the major database management systems currently available on the web in regards to their pros and cons. Once we’ve worked that part out, we’ll offer up a few recommendations as to which projects each one is best-suited for. Let’s dive right in.
- Closed-source; free version has very limited feature set
- Temporary tables persist across sessions, and must be removed by the user
- Support for four different character/string types: CHAR, VARCHAR2, NCHAR, NVARCHAR2
- Offers both table and row locking
- Extensive and flexible storage customization with commands like tablespace, synonym, and packages
- Extensive backup mechanisms
- Designed to manage tables and databases on a large-scale basis
- Compatible with a wide range of engines and interfaces; one of the most mature databases on the market
- One of the most popular database tools; easy to find support online
- Temporary tables are only visible within the current active session, and are removed automatically afterwards.
- Lacks ACID compliance
- Can partition tables via LIST, HASH, RANGE, and SET
- Support for two different character/string types: CHAR and VARCHAR
- Offers only table locking
- Lacks options for table views
- Limited storage customization
- Admin tools are incredibly powerful
- Two backup mechanisms: mysqlhotcopy and mysqldump
- Experiences significant performance degradation at high scale.
- Provides little in the way of performance optimization
- Issues with reliability
- Limited security compared to some other database systems.
- Designed for transactional workloads, and as such is ill-suited for analytical workloads
MS SQL Server
- Closed-source, aimed at corporate/enterprise environments.
- Offers full support for common table expressions
- Requires a deeper understanding of databases/database configuration than other tools
- Can fine-tune security features, such as who can run each stored procedure, who can access data, etc.
- Utilizes an engine that’s slightly slower and resource-heavy, but fully ACID compliant.
- Extremely comprehensive reporting system/storage customization
- High degree of control over transactions and procedures
- Community is not terribly active, not as much support online as MySQL.
- Offers more than simple database functionality through a suite of tools: an ETL tool, analytical DBMS, relational DBMS, and reports server.
- Schema changes do not lock tables.
- Relatively high resource footprint
- Closed-source. Enterprise version only available for a price
- Schema-based table management
- Does not support XML
- Can only partition tables via sharding
- No in-memory capabilities
- Designed for relational integrity
- More robust table/data management than MySQL
- Materialized table views
- Lacks native character/string support
- Multiple options for disaster recovery, availability, and scalability
- Adheres well to current SQL standards, and easier to learn as a result
- Large footprint makes it ill-suited for read-heavy operations
- Advanced business/location analytics features
- Rich variety of data and character types
- Fully ACID-compliant
- Designed for reliability and data-integrity; developer-focused
- Full-text search, support for powerful server-side procedural languages
- Full support for advanced SQL features such as table expressions and window functions
- Can efficiently join large numbers of tables
- Replication is poorly-implemented
- Not well-suited for low-concurrency projects
So, Which Should You Use?
As you can no doubt tell, each of the database tools we’ve profiled here is vastly different in terms of functionality and design focus. The question of which is the right choice for you therefore depends on the type of project you plan to manage.
You should use Oracle if…
- You require flexibility in terms of transaction control
- You plan to host a large database
- You require a high degree of scalability
- You want your database to be platform-independent
You should use MySQL if…
- You aren’t going to scale to any large degree
- You’re planning to create a read-only web app or a website
- You require a high degree of replication
- Your project only requires simple queries, and has a low concurrency rate
You should use MS SQL Server if…
- You’re working in a .NET development environment.
- Your database serves a large corporate/enterprise environment
- You’re processing workloads rather than developing applications
- You require fine-tuned control over your database.
You should use DB2 if…
- Your company already maintains an in-house DB2 Installation
- You wish to federate data from multiple sources
- You need to be able to access data at high speed
- Performance optimization is extremely important to your project
You should use PostgreSQL if…
- You plan to make use of complex custom procedures
- You’re going to be working Java
- Your database will be large and complex, with high concurrency and multiple query types
- You will be carrying out many write operations, and read speed is not a factor
- Your project is developer-focused