The Data Studio

Relational Databases You Can Use

Relational Databases For Agile Developers

The table below shows some database products that you could use for running the examples in the book, and for developing your own databases, on your own laptop or desktop computer. They can all be downloaded free-of-charge, some permanently, some as time-limited trials. You may have one of more of these installed already. Newer Macs (since OS/X Lion) have PostgreSQL installed; older ones have MysQL. Many personal computers have SQLite installed. I also show overall ratings for each database in terms of using it as a learning tool and using it to build real applications. To compress all the factors into one star-rating for each of these is over-simplification, so see the "More..." links for slightly less brief comments.

Mostly, I prefer to install native versions of software, but I do have some virtual machines. These let you run a wider variety of software, but getting data and code into and out of the virtual machine can be a pain, and they are big.

The important thing for learning how to use a relational database is that several products are good, free and easy to install.

Product Download For Learning For Real Projects Website Documentation Comments
PostgreSQL download postgresql.org documentation My favourite. Free, fast and rock-solid. More...
MySQL download mysql.com documentation Widely used. More...
Oracle download oracle.com documentation Widely used. More...
Microsoft SQL Server download microsoft.com documentation Widely used. Now on Linux as well as Microsoft Windows. More...
DB2 download ibm.com documentation IBM's offering. More...
VoltDB download voltdb.com documentation The fastest and the only real in-memory database. More...
SQLite download sqlite.org documentation Honestly named and honestly described on the website. More...

PostgreSQL

I use PostgreSQL throughout my book because:

MySQL

MySQL is another solid, general-purpose database. It is used in millions of web-sites and in other applications. It is faithful to the relational database principles and sticks to the SQL standard, except for a well-known glitch described in my book, Chapter 9 - Select From One Table, in the section Grouping and Aggregating. MySQL tends to support everything that everyone else does, so there is quite a bit of redundancy in the functions offered. That isn't so bad, just choose the features you want to use and stick to those.

MySQL runs on macOs, Microsoft Windows and UNIX.

Unfortunately, MySQL is now owned by Oracle, so make sure you don't get run down by the marketing machine.

Oracle

The Oracle database system is a big solid product and many large businesses around the world depend on it. It is faithful to the relational model, so long as you ignore the extensions, some of which - nested tables, for example - are a very bad idea. Oracle is also very close to the SQL standard. There are some idiosyncracies such as the treatment of null and empty strings, and the number format. However, there is nothing to stop you building very good systems with Oracle. The biggest problem with Oracle is the marketing machine, mentioned above. Don't be intimidated; you don't have to buy all their stuff, or do things their way.

Oracle used to have a native Mac version but they don't now (December 2017). They may change their minds.

Oracle Express Edition is free, with limited database size and some limits on functionality. It will give you enough to run all the examples in the book.

An alternative would be one of the pre-built virtual machines, available from Oracle Technology Network. These will work on macOs too.

Microsoft SQL Server

Microsoft SQL Server is a very powerful product now. It was originally an implementation of Sybase SQL Server (now owned by SAP). The Microsoft version has been muddled in with other Microsoft tools and applications. As with Oracle, you can use Microsoft SQL Server as a good database so long as you avoid the huge pile of other products that they will try to sell you. The documentation is very hard to navigate, in my experience. This artificial level of complexity is the reason I give Microsoft SQL Server only 3 stars as a learning environment.

There are some free versions that you can download, and several environments (including macOs) are possible using Docker.

Please don't refer to Microsoft SQL Server as "SQL". SQL is the language used to interact with all relational databases. I find that recruitment consultants often call this product "SQL" and this causes a lot of confusion.

DB2

Inside DB2 I'm sure there is a proper relational database. But DB2 is full of extra commands to tweak things that should be left well alone. The documentation has a lot of words in it but many of them are redundant and offer no useful information. Here's an example found after just a few seconds of browsing: "ALTER BUFFERPOOL statement: The ALTER BUFFERPOOL statement is used to modify the characteristics or behavior of a buffer pool". DB2 is another database product that is hampered by the massive marketing company (IBM) that sells it. I have used IBM's database support services, after they acquired Netezza. It was not impressive. I would generally avoid IBM products.

VoltDB

This one is very exciting. Professor Michael Stonebraker is behind this product, and it shares the high quality of the other products he has worked on in his long career. VoltDB is the place to go for very, very high transaction performance. The VoltDB website is approachable and credible, so have a look.

For learning, VoltDB has the advantage of being very easy to download and install. But VoltDB is a specialised product that, by design, does one job very well. If you try to run the examples using VoltDB you will find that most of them work with minor tweaks, but there are some areas where VoltDB has sacrificed things that aren't important for transaction processing (such as enforcing Foreign Key constraints) and that would leave a gap in your learning. I suggest you learn using PostgreSQL or one of the others but definitely consider VoltDB if you then go on to build a high-throughput transaction processing system.

SQLite

There is a good chance that SQLite is already installed on your computer because it is used in so many applications. If SQLite is not already installed then it is easy to install. SQLite is also easy to use, and it is free. The When To Use SQLite gives an honest description of what SQLite is and is not good for.

SQLite is faithful to the relational database principles and sticks to the SQL standard. It enforces referential integrity so you won't get any broken links so long as you define the primary and foreign key constraints in your create table statements.

However, SQLite ignores data-types and stores everything as text. They make a virtue of this, and it does make sense in a few applications, but in most cases I find that strict data-typing is very valuable in protecting the quality of your data. I think it is important and this is the only reason I have for giving SQLite less that 5 stars.