Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm looking for high level generalities. For example:

- Software acquisition cost advantage -> Open source
- Maintenance -> ...

- As defined by XYZ -> ...
- As defined by ABC -> ...


Thank you!

share|improve this question
up vote 4 down vote accepted

First, you need to know which DBMS features you want and how well the systems do this. For example:

  • MySQL is fast for certain types of applications so you can service a high transaction volume on modest hardware

  • SQL Server comes with a good set of reporting tools, so you may not need to purchase third party tooling for this. However, it only runs on Windows.

  • Oracle has a JVM built into the server (do you really want to pay per-CPU Oracle licensing to run a java app?), has good support for large databases through good table partitioning, bitmap indexes and a variety of features that facilitate data warehouse applications.

  • Various database systems may or may not support the XA protocol for distributed transactions

  • Postgres has a spatial index and support for extensions and stored procedures in a variety of languages.

  • Teradata has a shared-nothing architecture with no central bottlenecks so it can scale out to an arbitrarily large data set.

  • Various SQL dialects supported by different system have greater or lesser feature sets or particular strengths.

Once you know which of the various proprietary or open source DBMS platforms can support your application and how well they do it you can decide which you want to use.

All of the open-source DBMS platforms have credible support offerings available either through the vendor or third parties. Needless to say these support offerings are commercial so they are not free. If you really do not need vendor support you could view an open-source system as free, but this is going to be an unusual situation. There is one corner case of particular interest, which is discussed below.

Open-source systems also de-couple support from the vendor - credible third-party support offerings are available for most if not all major open-source DBMS products.

Various DBMS platforms allow extensions to be developed - in fact, this technology was first pioneered on Postgres by Stonebreaker et. al. and was the main driver for the development of that system. Different platforms have greater or lesser support for this -

  • Oracle and SQL Server have some limited support.

  • Postgres has extensive support for extension right throughout the system.

  • Informix Online havs support for extensions known as 'blades' derived from Illustra (which was itself an early commercialised version of Postgres).

  • MySQL has a plug-in architecture that supports third-party storage engines.

If you have this particular requirement you may find that the open-source systems offer more flexibility. For example, there are several data warehousing products based on modified versions of Postgres.

Thus, open-source vs. proprietary is not a choice between free (as in beer) and paid for, rather is a matter of features, cost, confidence in the support options and control.

share|improve this answer
I'd disagree that •Oracle and SQL Server have some limited support for extensions. Both companies have vested interests in helping anyone develop extensions for their systems. However you generally don't see many because they have a very feature rich system and adding thied party extensions adds a layer of complexity that many find too risky. – Jim B Jul 7 '09 at 19:42
Both Microsoft and Oracle's extension facilities are heavily biased by a CYA mentality. Oracle's cartridges are run in a separate process and use IPC mechanisms to interoperate with the main engine - which limits performance but keeps the core engine safe. MS allows CLR integration (XPs are deprecated), which keeps the core engine safe at the expense of raw performance. The APIs for extension in Postgres are much richer and do not suffer from artificial limitations. However, if you break the core engine you get to keep both pieces. – ConcernedOfTunbridgeWells Jul 8 '09 at 6:34
Specifically, not only do you have APIs for aggregate functions but you can implement an entire storage engine and you get a framework called GIST that does most of the hard work for supporting custom index structures. There is also an API for adding a custom language interpereter (you could probably embed a .net runtime if you felt so inclined). Postgres easily has the best extension facility of any DBMS platform. – ConcernedOfTunbridgeWells Jul 8 '09 at 6:42
Thank you very much. – JDelage Jul 8 '09 at 9:00
I'd agree that Microsoft and Oracle have a CYA mentality- that exactly wat you'd want in a enterprise database system. As a admin I don't even want the possiblitity that Joe Developer can actually hose the core database functionality. – Jim B Jul 9 '09 at 21:21

Real Costs

  • License
  • Maintenance
  • Support

Knowledge Costs

  • Can you get/hire people familiar with it, or will they need training
  • Do you have the DBA / developer skills already inhouse

Is it supported on your platforms / infrastructure

Speed / Performance / Feature Sets

Availability of Tools (DBA and Dev)


Also, with a commercial version then you can easily say 'XXXX are at fault', but if you use an Open Source version then there is generally no one that you can hold responsible for issues (so the buck stops with you) - If that is a consideration ;-)

share|improve this answer
Look at the license agreements on most commercial off-the-shelf software. You typically agree that you can't hold the "manufacturer" accountable, financially, for any more than the price you paid for the product. The "accountability" argument breaks down pretty quickly. Google for "Timberline Software EULA damages" if you want to read about a court upholding a limitation on consequential damages as the result of an end user license agreement (EULA). – Evan Anderson Jul 7 '09 at 12:52
More or less all open-source database platforms have the option of commercial support, either through the vendor or third parties. – ConcernedOfTunbridgeWells Jul 7 '09 at 13:40
spot on ken. I'd add good documentation to the list too – Nick Kavadias Jul 7 '09 at 15:36

Here's the main advantage to open source software, in my mind:

Freedom: Software that comes with its source code and a license permitting you to make modifications for your own use gives you the ability to pay anyone you'd like to "support" that software. There is no "manufacturer" behind the software that can choose to make the version you're using "deprecated" and force you into an "upgrade" or being "unsupported". You may choose to use the software indefinitely.

With "closed source" software, the "manufacturer's" embargo on availability of the source code means that you are not able to choose the party who supports the software based on your own criteria (best price, best skills, etc), but rather you are forced to choose only the "manufacturer", regardless of their commitment to "supporting" your needs with respect to the software.

share|improve this answer
There's some truth to this, but it's not necessarily practical. Any "changes" you make fork the code, which might make it unmaintainable, and might cause issues if the person(s) forking it leave. Realistically you are locked into the codebase, CS or OS, from whatever source maintains it. – Steve Jones Jul 7 '09 at 14:48
Why isn't it practical? You can maintain your own "fork" of the code if you're willing to pay for it. That's better than closed-source software where you have no option to maintain your own fork, no matter what you're willing to spend. I don't buy the "tied to people" argument, either. Code is code-- you can pay someone else to maintain code. If the code is unmaintainable to begin with then you've started with the wrong code. I don't buy, for a moment, that there's any "lock in" in open source. It's all a question of money, but at least with open source you have the option. – Evan Anderson Jul 7 '09 at 14:57
Yes open source gives you the option of hiring a programmer AND a DBA to run your database application. Or you could buy a product with support and let the guys that wrote the application fix it when it doesn't perform as specified – Jim B Jul 7 '09 at 19:36
What do you think you're doing when you pay the license fee for closed-source software? You're hiring a tiny piece of a programmer... a programmer that doesn't care about your business interests, but rather one that cares about selling more licenses for their company's product. I'll take a programmer that cares about my interests by way of a support contract with whomever I choose, instead of being locked-in to the "manufacturer" and whatever quality of "support" they decide they want to sell me. – Evan Anderson Jul 7 '09 at 23:48
Maintaining a forked DBMS is quite an ambitious proposition. The skills to do this are very specialised - DBMS servers are amongst the most complex software systems is widespread use. Learning enough to work coherently on the core engine on a DBMS will take months or years so it would take substantial investment in time and money to develop that capacity. Generally you would have to have a pretty strong business case to do this. An extension API is considerably more practical. – ConcernedOfTunbridgeWells Jul 8 '09 at 11:00

I think the biggest question you need to ask is "Can I get a support contract?". And yes, there are people who offer support for open source software.

share|improve this answer

That being said, there's also often bad tech support from commercial vendors compared to the support offered by the open source community.

share|improve this answer

I think the advantages are based on your staff. If they can support it, and it fits your needs (as mentioned in the first post above), then you should consider it. If you don't have staff, don't use it.

The cost of people, especially if they have to learn the platform or change the code, far outweighs any licensing cost or savings. Go with what you can support/build on.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.