Are Commercial Databases Worth It?

I’ve worked with expensive SQL Server and Oracle setups for most of my career. I’ve defended them viciously against all comers and contrarians. I’ve participated in late-night guerilla flame wars and drunken bar brawls. And I’ve sought out with relentless tunnel vision those pieces of propaganda which support my foregone conclusion: that SQL Server and/or Oracle are (or were) the best choices for the organization.

I used to be a commercial database advocate.

These databases have put food on my table for a dozen years, you see. I am (or was) what you might call an entrenched practicioner, not necessarily an expert, but a practicioner. And in the manner of entrenched practicioners around the world, I’ve treated you heretics with the sadistic undercutting and poisonous rancor you’ve deserved!

“MySQL?” I would sneer. “PostgreSQL? Thanks, but this a serious project. We need a database we can depend on.”

Ahem.

The number of times I performed due diligence to determine if, in fact, SQL Server/Oracle was the best choice not for me, but for the team, the client, the employer, the organization?

Zero

And if I had performed said due diligence, what would I have learned? Just two things:

  • SQL Server and Oracle are, indeed, excellent databases. (Okay, we already knew this.)
  • SQL Server and Oracle are the wrong choice for 95% of data storage needs, including at the enterprise level.

Nowadays I like to think of SQL Server and Oracle as the Death Stars of the relational database universe. Extremely powerful. Monolithic. Brilliant. Complex almost beyond the ability of a single human mind to understand. And a monumental waste of money except in those rare situations when you actually need to destroy a planet.

And I’ve watched two dozen companies (at least) hemorrhage money on databases they don’t need, impacting and obfuscating their bottom line with ornate Hobbesian licensing schemes, perpetuating the Fallacy of Brand-Name Software:

All other things being equal, and assuming you have the budget, always prefer an expensive well-trimmed commercial product like [insert commercial product name here] to cheaper analogues such as [insert open-source or reasonably-priced product here]. The guys over in the XYZ project used [expensive commercial product], our internal XYZ uses [expensive commercial product], ergo, new company-wide policy: use [expensive commercial product]. Sure, at $89,000 a license, [expensive commercial product] is a little expensive, but who are we kidding? We spend [insert ridiculous amount of crazed-monkey-sex Monopoly money here] on IT each and every year.

Well sure, you spend a ridiculous amount of money on IT. Ever wonder why?

Why commit your project, your organization, your empire, to building and maintaining a Death Star when what you really need is an X-Wing fighter, an AT-AT, or at best, a Star Destroyer? Especially given that:

Oracle and SQL Server have richer feature sets than MySQL or PostgreSQL or Firebird or any other open-source database. They have more integrated functionality. Nobody would argue otherwise. But are developers and DBAs and the people who influence purchase decisions fully cognizant of (for example) just how rich PostgreSQL’s feature set is?

An enterprise class database, PostgreSQL boasts sophisticated features such as Multi-Version Concurrency Control (MVCC), point in time recovery, tablespaces, asynchronous replication, nested transactions (savepoints), online/hot backups, a sophisticated query planner/optimizer, and write ahead logging for fault tolerance. It supports international character sets, multibyte character encodings, Unicode, and it is locale-aware for sorting, case-sensitivity, and formatting. It is highly scalable both in the sheer quantity of data it can manage and in the number of concurrent users it can accommodate. There are active PostgreSQL systems in production environments that manage in excess of 4 terabytes of data.

Setting PostgreSQL aside, are developers aware that MySQL has upwards of 11 million installations including such majors as Facebook, YouTube, Flickr, and Wikipedia? Well sure, everybody knows that. MySQL runs the web, right? So do we really need the Oracle/SQL Server support for four-dimensional enraged-leprechaun hypercube visualization when the data needs of most organizations are modest, and when the two leading open-sources databases have repeatedly proven their mettle?

No.

Not unless you’re running a 1% sort of scenario, leveraging proprietary Oracle/SQL Server features. (In which case, you might have a different sort of problem.)

Otherwise the answer is simply: no.

But don’t let that stop you! By all means, if you’re on a cost-plus government contract where waste is encouraged, go ahead and shell out for those expensive closed databases. If when Microsoft or Oracle says “jump!” your organization says “how high?” go ahead and lock yourself into a costly licensing deal for top-shelf database vodka. If your organization is dominated by smooth-talking would-be technology evangelists who are pursuing a personal agenda, as is so frequently the case, then there’s probably not much you can do in any case.

But if you care about money, if you believe that…

No! It’s NOT okay to squander a quarter million dollars per annum on database licensing fees even though our IT budget is in the tens of millions.

…and if you have the power to actually influence purchase decisions, then use open-source databases when you can, commercial databases when you absolutely must.

Your CFO will thank you for it.*

* – Well, probably not. Such is life.

Comments

  • Jacob says:

    I work in just one of the companies you describe and it’s annoying. We spend money on gobs of software we don’t need. When it comes to purchasing me a copy of Resharper we don’t have the budget. How convenient.

    Nothing really new in this post, but I give it the +1 for comparing SQL Server to the Death Star. I’m a Star Wars geek and I support this kind of thing.

    Btw, of all the problems you mention, I think the most serious in terms of TCO is technology evangelism. We have one of these a-holes on staff. He swears up and down that SQL Server is God’s gift to data storage. I asked him if he’d looked at any other databases. His response: "Don’t need to. MS is the way to go." Literally. He won’t even consider it. And he continually advocates non-standard approaches which will stick us with a particular MS product line for a decade or more, given how slowly the corporate wheels grind around here.

  • Anonymous says:

    i am a long type LAMP guy. couldn’t agree more with this thread. you didn’t state it strongly enough imho:

    there’s never a reason to use sql server or oracle. ever!!!

    if i see a resume containing a lot of sql server nonsense, odds are i won’t even give the guy an interview. it implies a certain way of thinking.

    and given the amazing things people have done with mysql, who would ever pay serious money for a database?

    its a mystery.

  • Rob says:

    Can’t say I’ve had the experience with expenditures, but I agree that the prices for SQL Server are ridiculous, and I’m sure Oracle is even worse.

    The one argument I would maintain for SQL Server is compatibility with an MS/.Net development stack. Like it or not, that’s not changing anytime soon for most companies. Has anyone had a good, reliable experience programming .Net against PostGreSQL or MySQL? Sorry, LAMP/LAMPy or Mono is not an option for many, so please don’t suggest it.

    • Ryan says:

      That’s easy. .NET is a piece of closed trash too. Use something else and fake compatibility problems disappear. Wait, I can already hear you mumbling something about how great .NET is and how everything else can’t compare. Microsoft sure are effective at convincing third-rate engineers that their shoddy tech is the best on the market. The pathetic security record of M$ should be enough to send any competent person running for the hills.

  • Krull says:

    Rob, we’ve had some success with the PostgreSQL + Npgsql (.NET provider for PostgreSQL) + NHibernate stack. These seem to be fairly stable, only issue detected so far was a minor detail in hooking in through NHibernate.

    http://npgsql.projects.postgresql.org/
    http://nhforge.org/doc/nh/en/index.html

    There’s also PostgreSQLDirect / dotConnect which works decently in trial. Haven’t tried it beyond that.

    http://www.devart.com/dotconnect/postgresql/download.html

  • Mike says:

    I dont’t think of SQL Server as expensive, even for smaller companies. No serious enterprise can go with the free community editions (no support!), so the "it’s free" argument does not count imo.

    And yes, SQL Server has features that eg. MySql doesn’t have (the new Filestream for example, which i’ve used already in a project). I especially like the great integration in the .NET environment (naturally) which is my primary platform.

    Oracle on the other hand is a complex, expensive beast which i try to avoid whenever possible :-)

  • Coding the Wheel says:

    @Jacob: Tech blogging rule #26: even if you’re posting "filler", throw in a few images or videos of geek culture. That way when the writing sucks and fails to compel, at least hey. Death Star.

    @Rob: For some companies it won’t really matter. The MS stack is a sunk cost, it’s there, it’s not going anywhere. And the smaller orgs may only have a handful of servers. Take a Bank of America or Lockheed, on the other hand…

    @Krull: Took the words out of my mouth. I’ve had good experiences with Npgsql as well. And NHibernate!! *rummages around trying to find upcoming PokerTracker post*

    @Mike: I agree that SQL Server Express and Oracle XE are usually not suitable for production. But what about PostgreSQL or MySQL?

    @All: What feature or characteristic of PostgreSQL / MySQL (both of which have .NET data providers) makes it incompatible with the MS stack? Honest question.

    • Ryan says:

      > Take a Bank of America or Lockheed, on the other hand…

      Do you honestly think that Bank of America or Lockheed have larger datasets and more traffic than Google? Because Google run MySQL in production quite a bit.

      Faillll. Financial and Military industry giants may make people shake at the knees in awe but they’re no big deal when it comes to data storage.

  • Anonymous says:

    "MySQL?" I would sneer. "PostgreSQL?"

    Lulz. Sneer is such the word. There.

    …back to /b/…

  • Mike says:

    For sure PostgreSQL or MySQL are suitable for production, but in reality these products are not "free" as stated in your post. I don’t know the exact price tag, but i guess MySql-Enterprise is not that cheap if you sum it all up.

  • Anonymous says:

    Best line in the post by FAR:

    "[insert ridiculous amount of crazed-monkey-sex Monopoly money here]"

    Best Coding the Wheel-ism ever.

    As for the rest, I’m not qualified to say. Most of my work has been with Sybase, which is hell on a stick. Can we get rid of Sybase?

  • Anonymous says:

    You are oh so wrong… MySQL used to be ok, but it is now a terrible choice for development. Sun/Oracle are slowly killing the product. I’ve used MySQL extensively and it is the big suck for running complex (not large datasets) queries.

    SQL Server and Oracle have free/light versions that are better than MySQL. There are size and functionality limitations to the free versions, but like you said, most apps don’t approach these requirements.

    On the other hand, I’ve worked with PostreSQL a little and it seems very nice (powerful), but it is not as user friendly as SQL Server. Any idiot (me) can setup and use SQL Server fairly well, but PostgreSQL requires a bit more reading to learn the commands and setup.

  • xt says:

    Sorry, i must said that the article failed…

    It is worth to pay a lot of money for these licenses (i talk about Oracle, not SQL Server) because the support what you get beat the pants off other *nix dbm systems.

    And Oracle doesnt have only a database product! It has so much special software that works perfect together (with the database software…).
    MySQL and PostgreSQL havent / dont develope a product that can help for special performance problems (e.g. 40.000 physical IO writes per second in dwh).
    I administrate not only Oracle dbs on *nix systems so i have a good overview about database products.
    And the little features you listed are peanuts for Oracle. Oracle is so major that the most dba’s work only with 1-2% of the features. So i think you cant even argue on this topic if you call yourself as a practicioner

    For a little data store mysql is enough (yep, i work with open source software in enterprise class, too) but for mission-critical applications you should take this opinion more seriously.

    (I talk about very big enterprise solutions and not the 5 node cluster)

    • Ryan says:

      Obviously you don’t get free enterprise support on top of a free product. You don’t have to be a f*cking genius to figure that out. There are consulting and support providers for both MySQL and PostgreSQL and since it’s a competitive market (not totally closed like vendor provided support), it’s generally a much better and much more cost-effective service.

      Paying 100 times more than something is worth just because it’s reassuringly expensive is a slippery slope. As the article says, wasteful cost-plus contractors may get away with it but those who have to compete to stay in business ought to get a grip and fire those evangelists.

  • Anonymous says:

    I don’t really get why anybody buys SQL Server or Oracle anymore. MySQL & PostgreSQL are more than up to the task for most jobs. If you really need five nines reliability, the only realistic choice is DB2 on a mainframe (sorry, MS & Oracle are not even close here).

  • Poker Forum says:

    I literally spent all of yesterday trying to work out SQL. I tell you now I’m sick of it. It makes my blood boil! I’m sure I’ll get the hang of it soon :D

    • Ryan says:

      You’re pissed about spending 1 afternoon learning SQL? I’ll have some of what you’re smoking.

  • Eelco says:

    "No serious enterprise can go with the free community editions (no support!)"

    What a joke. companies I worked for used both, and we happened to have more problems with the commercial ones (Oracle). Support meant spending hours on the telephone to find out we were using experimental feature X that would be fixed/ optimized in the next version yada yada. Commercial support typically is a joke. If you really want to spend the money, go open source and hire a wizard in case you encounter problems you can’t work around.

  • Arjo Soer says:

    I would say if you just need a data store mysql is an amazing product, but if you want need an ETL process, OLAP cube for reporting and a way to serve reports SQL server provides a very nice product with their integration services, analysis services and reporting services.

    I was a little disappointed in your sql server pricing chart that you did not include SQL Server express 2008. If you can live with the limitation of 1 cpu, 1GB database, 1GB memory allocation it is a very nice product with a very a very easy upgrade path.

  • Nick says:

    Good for OLTP… can’t imagine stars or FTP running their data warehouse on MySQL though!

  • ehsanul says:

    @xt Like he said, if you’re in the 1% case, you might need it. But that’s only 1% of the time. Whereas far over 1% are using Oracle etc, when they don’t need to. Quite sad.

    James, that’s all nice and dandy. But teh RDBMS is ded – teh internetz sed so!

    Well, it is certainly out of fashion for web apps (according to the latest trends, though MySQL is obviously still the choice of the masses, the correct choice). There seems to be a new Object or Document oriented database every few weeks or something now.

    And key/value stores are in for big, data-intensive applications. Pain to handle since you have to code up stuff like uniqueness tests, and make multiple entries for each record for query purposes (since you can only fetch by key, not value), etc etc, but great throughput. Usually overkill of course, for the common blog or whatever.

    You might find [url=http://www.mongodb.com]MongoDB[/url] interesting though. Document oriented, saves in a modified JSON format they call BSON, and open source (developed by [url=http://www.10gen.com]10gen[/url], as they wait for service licenses to sell). It supports more functionality and query types than similar object/document oriented databases, enough to make it usable for quite a number of web applications, which is the primary focus. Also has auto-sharding for multiple machines and sports a range of drivers in different languages. I’m really liking how the project looks, going to try it for an web app I’m trying to make now.

    Oh, another thing about object oriented databases in general is that you don’t really need an ORM-layer if you’re code is object oriented too. That’s neat.

  • Keff says:

    OK, I like MySQL too, but looking through it’s backlog with some bugs unresolved for *year* while a crowd of tens of people shouts for urgent fix should teach everyone that one thing is ‘features’, and completely different things is ‘well supported and documented features that you can always rely onto, even in edge cases and on large datasets, suitable for use in time critical project’.
    No battlestar needed to assert this…

  • ehsanul says:

    Damn, stupid BBCode. I should be more careful. I meant:

    You might find [url=http://www.mongodb.com]MongoDB[/url] interesting though. Document oriented, saves in a modified JSON format they call BSON, and open source (developed by [url=http://www.10gen.com]10gen[/url], as they wait for service licenses to sell).

  • ehsanul says:

    Not my fault it seems. Bad parser, very bad! I smell a greedy regex engine.

    I was referring to MongoDB anyways, at htt://www.mongodb.com

    Sorry for the unintentional spam. Trying again to see if it really was me: [url=http://www.mongodb.com]MongoDB[/url] text [url=http://www.10gen.com]10gen[/url]

  • kenfar says:

    Personally, I think folks are better off with almost any commercial database over MySQL because:
    1. it isn’t necessarily free
    2. it has the least portable sql & behavior of any database product i’ve ever seen
    3. its limitations cause bizarre architectures (endless master-slave setups, etc)

    Postgresql is another matter. It’s a great database. But just like with MySQL – it can’t yet handle data warehousing. Oh sure, it’s used in some data warehouse appliances – very expensive hardware/software bundles with a big piece of commercial software to handle distributing queries across multiple nodes.

    But out of the box, postgresql lacks the query parallelism, data partitioning, data compression, automatic query rewrite (hit summary tables if possible) and other features that allow databases like db2 to run 40-100x faster for large queries.

    And while this may sound like 1% of your apps – every big company has a few. And with data volumes increasing faster than Moore’s law (think about micro-payments, security data, spatial data, location data, etc) we need to rely on algorithms & data structures over just throwing more hardware at it (the mysql way).

    I think the future absolutely favors the open source databases. But right now? When you need to handle 1+TB of data and get fast adhoc queries returning 50,000 rows back – the best answers are db2, oracle, informix and sql server.

  • xt says:

    @Eelco
    If you have critical-mission databases then you will have the adaptet support for it. I can read of your text, that you dont know the highest support levels from oracle ;)

    @ehsanul
    The 1% is bigger than you think.

    @all
    This is a very interessting topic but i think we should discuss other things first.
    You talk about open source dbm systems like SQL Server. Its very expensive. But what about the level above? The operation system! Windows? (ohh a lot of money for it too) :D Server and Windows is a oxymoron (for me). I dont say windows is useless etc, i say only that on a special level (bigger than 1% ;> ) you cant reach thinks with Windows like with *nix!!!

    So please stop talking about SQL Server because i think this topic is over commercial databases.

  • Anonymous says:

    People need oracle DB’s, cause they ‘need’ taht particular piece of software, that only runs on oracle. (Idem. from SQL server).
    I could not imagine running our shop with anything other than oracle. 15+ DBs of >1To, a couple smaller ones.
    It [oracle] is so finegrained, if you happen to know how to ask it the right way, it’s fabulous.
    And the thing is: It gives all you need to FIND OUT if you do it ‘the right way’ (Statspack, AWR, TKProf and shit)

  • DBAL says:

    Ok, ok.

    Buy what you need. Its as simple as that.

    Buying a MS or Oracle DB for 98% of business needs is like buying Ferraris for delivery trucks.

    But I thought this sort of thing was common sense.

  • Coding the Wheel says:

    [i]>Postgresql is another matter. It’s a great database. But just like with MySQL – it can’t yet handle data warehousing.[/i]

    Okay, but this gets into that top 1% (call it 5% or even 10%) of applications for which there’s a compelling excuse to "go commercial".

    [i]>For a little data store mysql is enough (yep, i work with open source software in enterprise class, too) but for mission-critical applications you should take this opinion more seriously.[/i]

    Who can compete with Oracle on sheer out-of-the-box functionality? But when we start talking "mission critical" we’re exiting the realm of this post, which is aimed at those pesky and far more numerous bottom 90-95% of applications.

    [i]When you need to handle 1+TB of data and get fast adhoc queries returning 50,000 rows back – the best answers are db2, oracle, informix and sql server.[/i]

    Again, that seems to be a top 5% sort of application so all bets are off. And there are those who’d still say: do it in MySQL even if you have to engineer it to scale. Which of course you would.

  • Alan Howlett says:

    You: "MySQL runs the web, right?"
    Me: The web? what building is "The Web" located in? Oh you mean some of "The web sites", right? Serving up html, xhtml, running java, etc. Wait… are those database functions?
    [...]
    You: "Not unless you’re running a 1% sort of scenario, leveraging proprietary Oracle/SQL Server features. (In which case, you might have a different sort of problem.)"
    Me: Let me see… You spend big $$$ on a commercial RDBMS which has some awesome features, and you don’t learn to use them, implement nothing with them, disparage them as things 15 or orgs would ever need… Lets see, you build your own auditing system, your own messaging system, your own web service interface, your own development tools, your own backup system, you design referential integrity into the Application, you validate all data in the application, you build your own distributed transaction monitor, you implement rollback and redo internal functions, you build your own redundant server architecture, and make it scalable, like a grid architecture, you add a scripting language, build your own automated storage management solution, create import, export, etl, and data warehouse functionality, then add some serious virtual private database functionality, and role and user management,… Hmmm… this stuff is so boring, maybe I’ll download, install, and configure the open source versions of software that do this. It should only take a little while. I may need to recompile a few things, but otherwise… Oh yeah, I’ll design this complex database with 4 tables, using abstraction. Its not that hard, Ive seen it done.
    Have you ever noticed how some organizations say we’ll use XYZ, but don’t use any of the Oracle/Sybase specific features. "We don’t want anything proprietary to lock us in." Duhhh! Oracle and Sybase both run on many platforms and OSs. hy buy the feature unless you hope to leverage them.

    BTW, show me a bank, mutual fund manager, wall street firm, fortune 500 business, etc, ANY OF THEM, that is willing to TRUST YOUR ACCOUNTS in an open source, free database. Would you trust your life savings there? Not my money?

  • Anonymous says:

    We chose our databases based on end user performace expectations. In general we use Sybase for databases where we know the tables will be holding over 1 billion records and performing aggregates, etc. and Sql Server for the smaller stuff.

  • Erik says:

    Mike: You’re absolutely wrong about PostgreSQL — it’s absolutely free. No one owns it, how could it be sold? Now, there are companies that package it with some extra tools and/or offer support contracts (which is pretty much the case with MySQL v. MySQL Enterprise) but that’s a different matter entirely. In fact, there are a huge number of PostgreSQL users who find the mailing lists all the support that’s ever needed although that’d be an even harder sell to big business types than even considering using the technology.

  • kenfar says:

    James wrote:
    >> When you need to handle 1+TB of data and get fast adhoc queries returning
    >> 50,000 rows back – the best answers are db2, oracle, informix and sql server.

    > Again, that seems to be a top 5% sort of application so all bets are off. And
    > there are those who’d still say: do it in MySQL even if you have to engineer
    > it to scale. Which of course you would.

    A few thoughts on this:
    1. you *could* implement an adhoc database like that in mysql. Of course, since it lacks parallelism, the partitioning is primitive and the optimizer goes into the ditch on complex queries – you may have to buy 20x as much hardware as your commercial solution. And you may have to physically partition your data by server which makes querying the entire database impractical. And once you’ve got this gorgeous system working you’ll eventually have to do something crazy like add a column or an index – and your site will be down for twelve hours while MySQL handles this otherwise simplistic job. Of course, you could duplicate your entire massive architecture so that your app stays up when MySQL has to go down. Or you could save a bundle of cash and go commercial.

    2. if you find that for reasons covered in point #1 above that a commercial database makes sense, you may decide to use it for small apps as well. Why? Because for many of the small apps (those 95% you’re mentioning) you can probably use a free version of the database. If not free, than sharply reduced costs – since you don’t need the huge enterprise version. What’s the benefit of using a free little version of oracle, db2, etc? Well, if you’ve ever had the responsibility for fixing corrupted databases (thinking mostly about mysql & oracle) or recovering a database after a raid backplain failure – you’ll know that you *really* don’t want to run every single DBMS. Just the bare minimum, please. It takes time to get good enough at recoveries that you can handle them quickly, minimize downtime and not screw it up royally. So, it may make better sense to go 100% oracle than 5% oracle, 25% mysql, 35% postgresql, 10% db2, 5% sql server, 5% firebird, 5% sqllite. Not saying to go this route blindly – but absolutely a factor to consider.

  • Charles Andrews says:

    Our startup uses PostgreSQL but our datasets are in the gigabyte ranges, we’re not considering large TB storage or particularly complex queries at the moment, so haven’t even considered Oracle or MS-SQL. We are also UK based, which I think means we have slightly more lax (or clearer) data retention requirements, which leads to my question.

    I’ve heard horror stories of the amount of data and metadata for auditing processes which is required for SOX compliance by US based companies. To quote the Sarbanes-Oxley Complaince Journal "the CIO and other IT professionals also need to implement strategies that support the explicit and implied integrity, security, credibility, and transparency requirements defined in this act." Do MS/Oracle provide utilities to assist with this? If so, I could imagine them gaining some ground when the decision comes to be made as I know having well documented support when it comes to governance, best practices and disclosure can be hugely appealing to large companies.

  • Anon says:

    > BTW, show me a bank, mutual fund manager, wall street firm, fortune 500 business, etc, ANY OF THEM, that is willing to TRUST YOUR ACCOUNTS in an open source, free database. Would you trust your life savings there? Not my money?

    I think you may be surprised at the number of managed funds and trading firms that run their systems on MySQL and Python.

    Their choice of database is the least of my concerns – it’s the amount of manual processing (e.g. trades entered into SPREADSHEETS by HUMAN OPERATORS with NO ERROR CHECKING) that concerns me.

  • Anonymous says:

    @kenfar
    @xt

    Please don’t disparage postgresql since you guys clearly don’t know what you’re talking about. Postgresql has several private companies that mod postgres for data warehousing and distributed loads. Skype has released several of their modifications to postgres into the public domain as well and this has started a new postgres replication effort. The only difference between postgres and the rest (looks at mysql), is that they do not compromise and release unstable stuff early.

    These guys are one of THE biggest postgresql modders for data warehousing. Their customers include
    ebay, nasdaq, FOX, NYSE, Reliance Comm, O’Reilly, Sun etc for petabyte scale data warehousing loads.

    http://www.greenplum.com/ Main Site

    http://www.greenplum.com/customers/our-customers/ Their customer site

    I’ll agree with you that postgres doesn’t have Oracle’s crm erp etc etc suites as ready made addons, but product lock-in isn’t the same thing as Postgres being incapable of some puny task you’re referring to.

  • Ron says:

    Unrelated:

    Back to pokerbot: what dev environment do you use for developing your unmanged c++ dll’s?

    You don’t answer my emails!

    Thanks.

  • xt says:

    @Charles Andrews
    auditing (SOX…) is in Oracle integrated.

    @James Devlin
    Oh i didnt thought we talk about the 0815 database from the next car shop.
    A lot of people think here that mission-critical databases are so less used. Do you think that your data for your bank account/social security numbers/telephone data/customer data/product data/etc… will hold on non-mission-critical databases?
    The discussion is useless if we talk about small business.

    And i wonder why so much people use SQL server…

  • xt says:

    @ Anonymous on 4/30/2009 6:39:02 PM (8 minutes ago)

    oh i didnt mentioned PostgreSQL ;)
    And btw some of the customers i work for are much bigger and have "realy" mission-critical databases…

  • John says:

    After working with Oracle for 5 years I was sold and thought it was just the bees knees
    After working with OracleFinancials for 5 minutes I wondered if oracle had an expletive clue what a relational database was.

  • Curtis Batt says:

    The trouble with most developers is that they’ve simply never dealt with situations that required the more esoteric features of a commercial DB.

    The trouble with most developers who have required those esoteric features is that once you’ve used the death star, everything looks like a planet.

    The real trouble with most developers from both camps is that they rarely consider the optimal solution for the problem. Though many times this is due to constraints forcing them to select the most workable solution for the situation (which can be significantly different from the most optimal solution for the problem).

  • Anonymous says:

    I company I recently contracted for used to offer Oracle to clients, using the bigger _clients_ purchasing clout to get discounts. The company was bought out and very gently recommended, if possible, _not_ to help clients get an Oracle discount, but to sell them a more expensive Oracle as part of an overall package. This made the company’s turnover look larger which was good for the balance sheet and the company’s financial status on the stock market. MySQL/Postgres have got absolutely no chance in this scenario. While this company keeps is deserved reputation for excellence, it can continue to charge a lot more for its offerings. Over time the company will grow sluggish, and smaller companies will eat into its business with some clients by offering MySQL or Postgres. Some of these smaller companies will grow and some customers with ask for Oracle, SQLServer etc and they will comply. The more successful of these smaller companies will flourish, have an IPO or get bought out and so the cycle will continue. MySQL or Postgres will continue to thrive as will Oracle, SQL Server et al. There is a place for all these products but its not always as simple as which is technically suited for the job or offers best value for a given task.

  • mycall says:

    Does PostgreSQL / MySQL do LDAP/MDX or equivalent?

  • CHB says:

    I develop professional web applications for BI software, and I’m currently working on a project that is being designed as a high scalability website. I absolutely love MySQL and I use it for most of my DB and developmental needs. If I need high-reliability transactional querying with the ability to scale well over multiple CPU cores I would go with Postgre.

    I’ve worked on MSSQL and Oracle RDBMSes for many years and I can say that you are absolutely correct. It’s disturbing how many companies buy licenses for the commercial databases when they don’t need it.

  • ryan says:

    The RDBMS is dead in the old guard form. It is a slow drain to new dbs such as mysql and postgres if still RDBMS but more so towards cloud databases such as BigTble, SimbleDB, CouchDB and the like. RDBMS are left over from mainframe days where a database is binded to a machine, nowadays that has to be spread across many machines and in a decade we will need to support TB upon TB of data. No RDBMS of today’s architecture will make it when the game is at that level.

  • Damon says:

    MySql is an unreliable, slow, insecure piece of junk with a worse than crap toolset. In my experience, those people that prefer MySql do so because a) they don’t know anything else, or b) they don’t understand or care about data integrity.

  • Glenn says:

    @John – Oracle bought (forget who) the Oracle Financials software and renamed it. It is pretty bad from what I hear. Peoplesoft is not much better. But the article is about the databases.

    If you or your development team is not taking advantage of the advanced features that your company is paying for – that is the waste. In the end, it a thorough and proficient understanding of what each database (and each databases different offerings) abilities to what your company and developers require that should drive which database to use. But I agree (if I comprehended the article correctly) that most choose the database they are most familiar with. I know I do.

    Who has time to stay up to date on each databases offerings?

  • Fergus says:

    MySQL and PostgreSQL are free?!!!! HAHA! good luck if that is what you think.

  • Anonymous says:

    Great post! I work in IT in one of those huge financial companies. It drives me nuts… we have to cut costs but we can blow a fortune on things like WebSphere and Oracle when JBoss and MySQL will work for 99.9999% of the situations. I think the IT managers get free vacations from the sales staff of IBM and Oracle. No joke. They always say, "Won’t get fired for buying IBM and Oracle." Yeah, but you will have to layoff half of your staff to pay for thee products! And for those that don’t thing that support is not available for open source software, you are WRONG. If you want support, you can pay for it. It is way cheaper and much more affective than the support from the big boys. Plus there is tons of community support.

    I love these flame war topics!

  • Nathan says:

    @Charles Andrews and @xt –

    For huge log-storage-and-aggregation problems like SOX, PCI (payment card), HIPAA (health)
    compliance, mySQL and PostgreSQL are really underpowered. But then so are Oracle, SQL Server,
    and the rest of the commercial RDBMSs.

    Companies that are serious about these problems (and they increasingly better be) buy tools like
    SenSage that can archive 2 years of 100GB+ daily log data on 10 commodity Linux servers and return
    answers to 10-billion-row-scan queries in minutes. Used by lots of telco’s, NSA, the Navy, IRS,
    banks, insurers, hospital orgs, etc. It ain’t cheap but it’s much cheaper than trying to use
    Oracle or trying to roll your own. http://sensage.com/customers/

  • Anonymous says:

    Which one of you open source bashers is Ballmer and which one is Gates?

  • Anonymous says:

    Oracle has the best support bar -none, but you pay for it. Still, it has saved my butt a few times. Try to get that with SQL Server or Postgres when you hit a bug. With Oracle, if there is not a fix, they come up with a good work around and/or get a patch out very very quickly.

    So if I have a system that generates 600 million in revenue, could Postgres meet those needs? Sure, but it is probably worth spending a million to get the Oracle that I need, with proven support. As an organization, you will feel comfortably using what you know works. If it is a non-mission critical app, does it need to run on Oracle? No, so MySQL or Postgres would work here. Another thing to keep in mind is that Open Source does not mean free. Once you look at the support options and what you are losing, the gap between Oracle and these open source options narrows. Now you decide, is it worth spending that extra money to get the piece of mind knowing that your "proven" DB is backed by a world class company with a support model that no one can beat? It depends, but that is why Oracle keeps winning out.

    You’re being philosophical and it’s easier said than done. What would you do if a mission ciritcal postgres DB crashed? Would you crap your pants and start looking for a new job after you beat your head against the wall and you can’t figure it out?

    Good Luck to you….

  • Anonymous says:

    @Ryan

    People keep using RDBMS because it’s a proven technology that still works in many cases. As far as the large data sets you mention, that’s why ardware and software is starting to get married and the interest in columnar databases. Take a look at infobright.com

  • kenfar says:

    Anonymous wrote:
    Please don’t disparage postgresql since you guys clearly don’t know what you’re talking about. Postgresql has several private companies that mod postgres for data warehousing and distributed loads.

    Notice the purchase button? Same with Netezza. They’re using postgresql but if you want that adhoc query performance in the range of db2 or oracle you’re not getting it for free from postgresql. Well, not today anyhow. Maybe in five years.

  • Paul says:

    This is just a data vs application flame war dressed up as Commercial DB vs OSS DB article.

    If you believe your data is important you will chose a relational database with strong data integrity, ACID compliance with solid HA/DR options.
    Ff you think your application is important you will treat the database as a flat file/filesystem, and roll your own data integrity in the app, trying and hide learning SQL with a Object Relational Mapping tool like hibernate.
    At the very high performance end and large datasets, none of the databases mentioned in the article help and you have to go for custom built or bleeding edge stuff like column store, stream dbs or plain key-value pair dbs. So suffering the reduction again in your ability to keep your data ok.

    I support Oracle, SQLserver and MySQL in lots of production situations. Companies choose the database based on their opinion of the data. SQL server 2008 will probably make the choice between Oracle and SQLserver a coin flip.

    Have Fun

  • Anonymous says:

    I did some (not DB) consulting at an Oracle shop running a very large, read heavy website. I was astonished to learn that [b]Oracle doesn’t scale![/b] A scale problem that in MySQL could be easily solved with master slave replication would instead need expensive rewrite and RAC license.

    Also, support contracts sound very comfortable, but with open source theres always the option of fixing it yourself (or payng someone else to do it, at lower rates than a commercial vendor with lockin would charge)

  • Paul MULDER says:

    > I did some (not DB) consulting at an Oracle shop running a very large, read heavy website. I was astonished
    > to learn that Oracle doesn’t scale!

    Now that’s the silliest thing I’ve heard in the last 50 years….

    @Curtis Batt: The trouble is DBA’s (knowing the is and out of <brandname>DB are not developpers, and deleoppers aren’t DBA’s
    THAT’s why most applications don’t scale, slowdown etc. etc.
    Second to that is this COMPLETELY IDIOT CONCEPT of ‘ Database independant’ batshit-stuff. You bleedin’ choose a DB by it’s featureset, couse it provides the features YOU need (Actually, the developpers…. going round in circles..) for your application.

    Chosing yet another install/licence of Oracle (or whatever) ’cause is’t the de-facto DB in your shop is plain bad, but unfortunately too common. (I do oracle, I don’t know prostgres kind of attitude of DBA’s)

    Paul

  • Coding the Wheel says:

    @Curtis Batt you’ve just summarized this entire post in two sentences:

    [b]The trouble with most developers is that they’ve simply never dealt with situations that required the more esoteric features of a commercial DB.[/b]

    [b]The trouble with most developers who have required those esoteric features is that once you’ve used the death star, everything looks like a planet.[/b]

    Beautiful. Anybody who reads more into this article than that is taking it too far, or at least further than I intended. These databases can coexist. But enterprise-wide prime directives to the effect of Thou Shalt Use Oracle are simply a waste of money.

  • Anonymous says:

    Paul: How do you scale Oracle to handle more reads then?

  • Beer Me says:

    Anonymous, I can answer that.

    Q: How do you scale Oracle to handle more reads?

    A: PAY A FUCKLOAD OF MONEY TO UMBRELLA CORP AKA ORACLE AND PRAY, PRAY, PRAY.

    Seriously you dudes all need to relax, kick back with a brewski and a woman. I didn’t read this as some attempt to start a flame war. I read it as a guy who’s seen companies waste money by the truckload and then go to Capitol Hill for the bailout. Story of my life.

    Peace.

  • Coding the Wheel says:

    For the non-redditors, there are some good comments on both sides of the issue at:

    http://www.reddit.com/r/programming/comments/8gt10/are_commercial_databases_worth_the_trouble/

  • kl says:

    I have been bitten by MySQL.

    MyISAM tables are obviously not good for anything serious – if you get power failure, they may crash, and then it takes forever to repair them. They also suffer concurrency problems – run query with join+aggregate, have any write queued at the same time, and everything else, even simplest reads, gets locked.

    InnoDB is OK, but only up to a point that you have enough RAM to hold all row locks. If you go beyond that point, you’ll be unable to run any query that changes all rows in the DB.

    Also InnoDBs files *never* decrease their size. Usually DBs keep growing anyway, so it’s not a big issue, but you won’t be able to scale down without rebuilding tables from scratch.

    However I can’t say anything bad about PostgreSQL. It’s really rock-solid DB, and has plugins for different datatypes, indexes. EXPLAIN query output is awesome.

  • kl says:

    (BTW: comment form doesn’t work in Opera)

  • G says:

    Anybody else want to store complex chemistry database in a open source cartridge database? I would love to, but the capability does not exist.

  • Anonymous says:

    You people are really missing the point.

    @How do you do more reads in Oracle?

    Simple, spread the I/O out over more disks and faster spindles. Use more cache. If it is a bunch of random reads, the more heads is usually the better. Oracle has something called ASM that scales really well as far as I/O. Look at EXADATA if you want a lot of IOPS and fantastic throughput. Then again, what is the question with more reads? Maybe that is where your knowledge of a database comes in. Just add an index. Before adding the index, look at the QUERY PLAN. Would an index help you? The person who said Oracle does not scale does not know their ass from a hole in the ground as far as Oracle goes. If you would run a 10046 trace, or look at an AWR or Statspack, you can see what the damn DB is waiting on and then get rid of the wait and/or reduce it. I was troubleshooting an Oracle RAC issue where there were a ton of GC BUFFER BUSY WAITS. I found the segment to be an index using a sequence to populate a PK. Hmmm put in a reverse key index, problem solved, and the thing started flying. I then looked for the next bottle neck.

    Disclaimer (A reverse key index will take away some things such as an index range scan, again do your research, there are a lot of idiots commenting, and they will be the ones out there looking for jobs when the shit hits the fan, telling the next client to just use the free shit with no support). In the real world, people can’t fix half the PostgresShit themselves. For mission ciritcal apps, people go with the commercial people for a reason!

  • Paul MULDER says:

    Well said, about the ‘more reads’ . Especially the ‘why’ in there..
    The question is not: I do need more IO/sec, the question is: Why do I need them!
    Thowing resources at a problem is NOT a solution, repeat: [i]NOT A SOLUTION[/i].

    Sequenced PK’s and RKI’s: If you populate a PK With a sequence, the need (Inside the application) for index range scans should simply not be there… (Gimme the records with sequence number 14583895 to 18534352, please??? why???)
    (If you use a RKI for a timestamp, that’s something else… records between 12h00 and 14h32, please)

    How would one identify (like the above comment) the offending segment with MySQL? The finegrained tuning poss. of oracle are SO good, everthing’s predicible, and it tells you ALL about how is does stuff (traces, TKprof etc.)

  • Goldcap says:

    Haha, BEER ON, Oracle geeks.

    IMHO, if you need to process a terrabyte of data, and <snark>really</snark> care about "GC BUFFER BUSY WAITS", why are you trolling blogs about mysql and pgsql? You’re already pretty invested in proprietary systems that have a very very obscure niche usage, and are probably less concerned about the future of opensource tech.

    Thanks for the post, James. Opensource DB technology is expanding exponentially, and between Mongo, SOLR, and Hadoop, the heavy-load opensource issue is becoming less of a burden.

  • Myron says:

    "What would you do if a mission ciritcal postgres DB crashed? Would you crap your pants and start looking for a new job after you beat your head against the wall and you can’t figure it out?

    Good Luck to you….
    Anonymous "

    No, probably a better option would be to contact a company or consultant that specializes in that.

    This sort of conversation has been going on RE: operating systems for at least 10 years now. Plenty of businesses have had success using linux regardless of what people were saying about ‘lack of support’ and ‘nobody to sue’ back then. Databases are no different.

  • I attended a college where they forked out globs of cash for MS products. Example; We had email supplied for us, we all used a webmail inteface. I’m not sure how much this cost, but when I left they were thinking about getting MS Exchange server. It struck me that what they wanted could be done for *Free* by just installing an iMap server and configuring the mail clients to look at that rather than the MS Exchange server.

    They used MS Access for all database stuff, when they could’ve/should’ve used a bigger, more powerful, more reliable database, such as MySQL or PostgreSQL, though that takes time. I would’ve thought that they would’ve looked at OpenOffice.org Base for the small stuff, but I’ve had no experience with it.

  • Anonymous says:

    Those answers cover scaling vertically (more spindles, more cache, query opyimiztion, faster machines) but how do you scale horizontally (more boxes)? That’s what people use mysql replication for.

  • Alan Howlett - busy organising patterns in information, trying to make the complex clear. says:

    > BTW, show me a bank, mutual fund manager, wall street firm, fortune 500 business, etc, ANY OF THEM, that is willing to TRUST YOUR ACCOUNTS in an open source, free database. Would you trust your life savings there? Not my money?

    RE "I think you may be surprised at the number of managed funds and trading firms that run their systems on MySQL and Python.

    Their choice of database is the least of my concerns – it’s the amount of manual processing (e.g. trades entered into SPREADSHEETS by HUMAN OPERATORS with NO ERROR CHECKING) that concerns me.

    Anon on 4/30/2009 6:28:51 PM (16 hours ago)"

    I rarely speak in absolute terms, and I would never say never about this. But I also spent over half a decade at a large MF mangament firm as data architect and dba (two hats, analysis and proper modeling, and implementation).

    We used DB2, Oracle, Sybase, and some other stuff thrown in to support a myriad of systems. We also had a ton of departmental homegrowns with little standardization on names, type, structures, size, etc., using mySQL, Postgres, Access et al.

    The main issue is when they become successful due to the value of their information. When worlds (databases) collide due to synergistic value of the _COMBINED INFORMATION_, the structural differences are also magnified. With the open source and homegrowns, feature and type mismatch frequently results in a migration or fusion into a new system. The lowest RISK component tends to be implementing with one of the big 3 in our case. Notice, I said nothing about COST. Not my job. I are a architect/developer/dba tech type with an enterprise perspective. There are a huge number of terrific developers who are also cowboys. using the Oracle/Sybase toolsets opens a world of standardization potential for many of these, but also imposes some creative constraint. If I have enterprise responsibilities and perspective, and financial influence or control, minimize information and data risk is primary, not cost. Customers hate when their data is lost or compromised. My 2 cts…

  • Tim says:

    Everyone is looking at this from the wrong presepective (performance & features).

    A lot of companies value their data at waaaaaaaay more than the license cost for that database.

    When you have a database problem and your data is at risk, who are you going to call if you use MySQL or Postgres?

    This is why Redhat and the likes exist. What enterprises are paying for is the SUPPORT in the chance a problem does arise.

  • Greg says:

    You’ve obviously gone over to the dark side. Please attend some techie Oracle conference and drink plenty of the Kool Aid.

  • Anonymous says:

    I am willing to bet that there are more people who have lost their jobs going the cheap open source route for mission critical apps, because when a problem arises and they have no one to call, they are quickly looking for another job as they watch their former company burn to the ground. We see this on Wall Street all the time, except there are no Gov’t bailouts here.

    I love Postgres, but I would think twice before using it for mission critical apps.

    Think of this scenario, you get some funky error. You google and it looks like you might have some data corruption. You open a Sev1 ticket with Oracle… you start working the issue ASAP. With Postgres, it is at night, you have emailed some companies you found off Google, but no one is answering the phone. You email, nothing… Meanwhile the Oracle support person has identified this as a bug and provides a patch, the meantime the other DBA is now updating their resume. The Oracle DBA now has his system up and running and it is back online. it turns out the data is not corrupted, but if it was, he had an RMAN backup, in the meantime the Postgres DBA is chewing his nails and is scared shitless. Senior management is screaming, the CIO is going nuts, the CEO is going bonkers, if they don’t get this system up and running, it may put them out. It is costing them $25,000 an hour for downtime and damage to their brand. They finally get a hold of some consultant company. They arrange to come out that night, they arrive at 8pm. System has been down for roughly 20 hours. They finally start hammering away, it takes them two days to find the bug and to fix it at a cost of $50k to the consulting company and probably a few million to the company.

    Now you know why people go with a commercial product. For my own personal use, I wouldn’t buy Oracle or SQL or DB2. I would just use MySQL, Postgres etc… but would I put a mission ciritcal app on it? Only if I could get support (which you can get from MySQL, but its not as good as Oracle’s).

  • Anonymous says:

    Nothing is instrumented as good as the Oracle database… I REPEAT NOTHING IS! If you need to troubleshoot performance issues, Oracle takes the cake which is why it can scale so well. Only if SQL and DB2 provided those metrics. Actually DB2 on the MF are the only other things that are instrumented as well as Oracle. DB2 on Windows or Unix sucks though.

  • Greg says:

    When things slow down on MySQL, you can’t pull a TKPROF report.

    Shout out to O’ dbas.

  • Anonymous says:

    There are some great imaginary tech support scenarios in this thread.

  • Anonymous says:

    @Those answers cover scaling vertically (more spindles, more cache, query opyimiztion, faster machines) but how do you scale horizontally (more boxes)? That’s what people use mysql replication for.

    Actually, horizontal scaling is handled Via Oracle RAC. What you are talking about pales in comparison to Oracle RAC. I would say MySQL Replication is closer to Oracle Streams. If you want DR, then you would use Oracle’s Data Guard. All of those features are part of Oracle Enterprise Edition, minus the RAC, which is an additional license. My only knock on Oracle is their licensing, but people keep buying it because nothing really compares to their feature / performance set.

  • Amazon DB says:

    One subject none of the pro-Oracle pro-MS developers seem to be touching with a ten-foot pole is why the largest sites on the Internet (YouTube, Wikipedia, Flickr, etc. as mentioned in the post) all use MySQL for apps that any reasonable person would call "mission-critical".

    Do you really suppose these companies just "didn’t have money for Oracle"? Or is it possible that MySQL is simply one of the easiest-to-scale databases out there? Or are the people behind these sites just stupid?

    Another thing lacking from these responses: a serious PostgreSQL guru who can speak to the strengths of that platform as of 8.4. PostgreSQL is vastly improved since the old days.

    James always takes things to the extreme, but on the whole I think this is exactly the type of information that decision-makers need to see. They need to understand there’s a huge community of people who’ve built successful mission-critical apps using open-source software, whether free or in a commercial incarnation, either way the TCO is going to beat Oracle every time.

    Now for bank data and so forth…I agree. You want the stability of a dedicated corporation behind your data stack. So go Oracle or DB2 or whatever appeals. But for everything else, open-source solutions are quickly emerging as de facto solutions. This is not a trend that’s going away.

  • Anonymous says:

    Google uses Oracle, trust me : )… What do you think their Financials run on? Then again, Google has the resources that many do not and they are designing something specific where they need to get into the source code to do exactly what they need to do. 99.999% of companies could careless about digging through the sourcecode and just want a database. If it is a mission ciritcal app where the data is valuable, they typically go with the proven solution.

    @There are some great imaginary tech support scenarios in this thread.

    Well, there are also a lot of obviously inexperienced people who have never experienced a production crisis. Try it sometime where you hit a bug and see what happens.

  • K says:

    James,

    Thank you!

    I work for [insert University name here] where Oracle is king and its various servants grovel at its feet. I was tasked with setting up a content management system and did so but that took a dive off the waterfall development model when the higher ups decided they weren’t going to use anything that used MySQL or anything that didn’t use Oracle for that matter.

  • Boris says:

    It’s like buying the more expensive Smirnoff vodka or the cheaper Boris Jeltzin vodka. They do the same thing and tastes the same, but the former is a lot more expensive. A lot of webapplications do only basic CRUD things and such so MySQL would propably be a better fit.

  • Anonymous says:

    For WebApps run MySQL, for some Academic project, run Postgres, for Commercial Applications, Banking or Financial Data where you need rock solid support in case something happens or rock solid diagnostics and troubleshooting capability, then go with the Commercial guys.

  • Anonymous says:

    I work for a reasonably large financial firm, and I’ve brought up this issue before. The answer I got was along the lines of "If it doesnt cost anything, then theres nobody to sue." So if the server goes down for an hour, and we lose $3M due to it, we have no means of recouping that. We’re actually banned from using anything open-source in production at all.

    Also, I question the ability of MySQL or PostgreSQL to work with tables the size we normally deal with. Our largest is just over 1 billion rows, and we have several with hundreds of millions. Can the free alternatives handle that in a reasonable (on enterprise class hardware) amount of time?

  • Anonymous says:

    Hah, good luck suing Oracle or Microsoft should a bug cause you to lose data. Ever read an EULA?

  • Anonymous says:

    I think the point is you have a big company standing behind your product to give you support and software updates /patches. Who will do that with Postgres? I think a company like RedHat needs to get behind it and then BAM, you have what you need to be mission critical.

    Unless you are Google or Facebook of course… then you can afford to buy your own support team.

  • JR says:

    Looking through the comments here; lot of pro-Oracle propaganda. I’ve worked with Oracle clusters for years and years and how often is an Oracle license necessary? Literally 1% of the time. Fact is, you can lose your data on any system. The solution is not to "use a commercial database" but to build in proper redundancy from the ground up. This can be done with any reasonable robust database, including MySQL, etc.

    Don’t believe the hype!!

  • 1. The problems with all these data bases is that they do not scale to extremally large volumes where data structures have to constantly change.
    2. The most important problem they do not scale to complexity, that is why enterprises need to employ vast amounts of people to maintain these things.
    3. Relational Data Bases like Oracle’s, MS’s etc. will eventually die when new generation of semantically based enterprise/personal software is going to become prelevant.
    4. IT departments, suffer from the IBM syndrom : no body can be blamed buying IBM.
    5. 250 million IT jobs realy on the unnecessary work being created by RDBMS and other things and thus they defend this teritory ruthlessly.
    6. Oracle, SAP, MS etc, are centres of unnecessary complexity. They create it to generate revenue.

    Pawel Lubczonok
    ThoughtExpress

  • karbes says:

    The problem is, commercial DB solution does not protect You from human error. Single mistyped UPDATE or DELETE can do a disaster to a production system anyway. No help from Oracle if You screw your db up logically.

  • Alan Howlett - busy debunking bogus excuses says:

    Re: "I work for [insert University name here] where Oracle is king and its various servants grovel at its feet. I was tasked with setting up a content management system and did so but that took a dive off the waterfall development model when the higher ups decided they weren’t going to use anything that used MySQL or anything that didn’t use Oracle for that matter.

    K on 5/2/2009 7:12:29 AM (2 days ago) "

    Can you clarify this one? I don’t understand how the choice of database systems would cause a "dive off the waterfall model". Would the CMS only work with MySQL? <KoolAid sip here> I’ve used Oracle with C, Fortran, Java, C++, and other database systems.</KoolAid sip here>

  • Anonymous says:

    If you’re company can afford multiprocessor SQL server enterprise edition but can’t afford to buy you ReSharper then I would riot!

  • Anonymous says:

    Yes, if the DB is not properly architected, then you are to blame for not doing that, not the vendor (commercial or open source).

    However, if you hit some bug, then hopefully there are channels to fix it and it might take some time. If you cannot afford that risk and you can afford to pay for something like Oracle or MS and your data is worth a lot to you, then you should be buying Oracle or MS SQL.

  • FupDuckTV says:

    Definetly food for thought. I’m sure this will ultimately boil down to opinions of those involved. But, free or cheep databases probably work just fine for more applications needing DB support. I love your uses of the Star Wars references to sizes of the DBs. True SW Fan…

  • Steve says:

    Is $5k per CPU really such a big deal?

    Sorry, but I don’t get it. I’ve worked with PostgreSQL, MySQL (a bit), Sybase ASE, and SQL Server, and the commercial packages have been easier to support and less prickly. At typical IT billable rates, it doesn’t take long to burn through $5k worth of hours.

  • Tim says:

    I have to say, I’m amazed nobody mentioned Sqlite here. In ranking what database to choose when doing projects, I’d say start with Sqlite for very small ones or for exploration. For somewhat larger or longer term ones PostgreSQL, and only when you’re making big returns off the project and have dire scaling issues would I consider DB2, Oracle or MS-SQL.

    I’m afraid I’m on the "never MySQL" side though.

  • Alan Howlett - busy debunking bogus excuses says:

    "The problem is, commercial DB solution does not protect You from human error. Single mistyped UPDATE or DELETE can do a disaster to a production system anyway. No help from Oracle if You screw your db up logically.

    karbes on 5/3/2009 5:08:28 PM (1 day ago)"

    karbes, if you haven’t done a commit, then do a rollback. And with Oracle you can also opt to do a flashback. Either method will help you in this case.

  • Keynes says:

    So I’ve been thinking of going open source to store loads of options tic and price data for a trading system I’m building. Any thoughts on open source systems I should be looking at?

  • Anonymous says:

    @Keynes, do you mean for the database specifically, or are you looking for middleware and so forth? For an OLTP application, one of the PostgreSQL distros is probably going to be your best bet if you don’t ditch the RDBMS altogether…

    This is assuming you’re going open source. If you have money for the licensing, and depending on how real-time/critical the application is, the consensus seems to be to go with Oracle/DB2/etc. For anything else than that, honestly the choice probably won’t matter.

  • Keynes says:

    @Anonymous

    I’m looking for a database specifically. Middleware is already taken care of. This is primarily for storing option data for use in modeling i.e. building volatility curves and whatnot. The thing is though, that options take up lots of space, way more than traditional equities, so I am beginning to lean towards a commercial solution again. Any idea at what size it makes sense to go commercial as opposed to say PostgreSQL?

  • Anonymous says:

    @Keynes

    What is your target market? Are you going after big commercial banks? Then you may want to target Oracle. The open source DB to support is Postgres. I would talk to your potential customers if this is your vertical and find out what they want to run this on. They will know.

    If you are going after the home user, then MySQL or Sql Server since most users use Windows.

  • Anonymous says:

    Firebird, Firebird, Firebird!!!

    It is simple to install, cross platform, embeddable, has .NET data provider and you can purchase support when needed from IBPhoenix. Not only that, it is fast. There is even an Oracle mode version (I believe you have to purchase that). Online backups, very easy to administer. Great DB product that has been around for years as Interbase. Licensing is much more friendly than most other open source products. If you need a good DB look into firebird.

  • Coding the Wheel says:

    @Keynes

    It sounds like you need to do some feasibility analysis. Experience proves that these kinds of systems can be built with open-source databases (including commercial distributions thereof). But that doesn’t necessarily mean open-source is the best solution from a risk management standpoint!

    I’m not contradicting what I said in the article: I still believe somewhere upwards of 90% of commercial database licenses are a waste of money. But if your application falls into the other 5-10%, and it sounds like you suspect it does, then the choice is clear. You must go commercial.

    On the other hand, if budget is an issue, or if you don’t need absolute top-shelf performance, that’s a powerful incentive to go open-source. In that case you’d want to perform due diligence, research how people have built these systems in the past using open-source solutions, etc. And get a proof-of-concept up and running as early in the lifecycle as possible, to thresh out any bottlenecks or showstoppers before you commit to a given stack.

    In my experience PostgreSQL (and other open-source DBs, for that matter) is more robust than people give it credit for, and I’ve used it successfully for some fairly intensive data-driven applications. But these sort of vague recommendations are useless. You have to actually drill down and figure out which database is best for your specific situation, taking all the factors into account. You need to get technical.

  • Anonymous says:

    I agree with James. In the absence of more specific information, it’s difficult to say which database will work for you. Any specific answer is going to meaningless.

  • RDofA says:

    I second the Firefox vote!!

  • RDofA says:

    Or you could go with CouchDB ;-) At least then, you get porn.

  • Alan Howlett - busy debunking bogus excuses says:

    Actually, we had a off-site data center (very non-descript, no signs, etc) with redundant huge generators, redundant underground fuel storage, high security building, multiple power feeds per server, multiple tape robots, and redundant off-site storage for this.
    We re-wrote/verified/libraried COBOL code for Y2K, stored source code and test cases in a repository, researched, wrote, documented, utilized, and updated best practices.
    I have tremendous confidence in the company I worked for. Checks and balances throughout.
    The issues I responded to dealt with commercial vs open source databases. I qualified my answers based on value of data rather than cost of database system. I’ve performed several cost-benefit scenario documents comparing multiple versions and brands of commercial and open source databases. Feature by feature, mapped to data value, security, and utility. Then and only then, factor in costs including purchase, maintenance, support, total life cycle over multiple time periods, and with enterprise rate of return and time value of money factored.

    Due diligence is what you owe your customers. "I feel" is great, but I prefer "I know, and this is why" in these matters.

  • Anonymous says:

    The question is: Would you run a bank with MySQL ?

  • James,
    Wonderful post.
    Would you mind if I translated it to portuguese to post on my blog (and link it back to you)? It says some truths people here in Brazil NEED to know desperately!
    Again, great post!

    Elcio

  • Great post. Sounds like you are getting ready for CouchDB.

  • Eric says:

    Everyone here is missing the real point.

    Management view.

    1) Most IT departments don’t care how much software costs as long as management keeps their job.

    2) If it’s the choice between saving money and taking a chance or spending money, management will choose the option that keeps their job.

    3) Companies will outsource your job at the drop of a hat to someone who will charge 5 cents per hour less as long as management keep their jobs.

    My view.

    1) Which database will give me the most job security and ease of finding another job.

    2) Which database will make me the most money.

    3) Which database will make my life easier.

    We all can come up with a dozen reasons why to pick database A over database B.

    The company is not your friend it’s a business, your job and life is your business. Always look after your business first. If you think this is too harsh remember if you were run over tomorrow and die the only question the company will ask is who should perform your job and they will not care as long as management keep their job.

    PS. I am in a job and earn a good wage, but when I see colleges let go with the words ”Its only business” and when you leave a job, management questions your ethics. I have to wonder why anyone would not pick their business view over that of the company.

  • I love my ghd outlet Glattetang! It heats up very quickly and works well. My glamour hair is annoyingly thick and poofy, but ghdstraighteneroutletaustralia works wonders! I have never been so fully satisfied with just ghd straightener outlet supplier! What a pleasure shopping at this ghd outlet australia! Thank you very much for this wonderful shopping experience. I will be shopping ghd outlet very very often.

  • ghd rettetang heat up really quick, and they leave your hair shiny and soft! Also your hair stays straight for ages! I loved them! They are the next best thing. Great ghd glattetang performers and even the next day your hair looks freshly straightened – and I’m talking about someone with really frizzy hair! Best billig ghd ever bought and I’ve had all the big named ones before I bought these ghd rettetang i norge!! I got ghd slettetang today. My girlfriend very like it. it make us very happy. thanks for the surprise gift. I love my ghd rettetang! It heats up very quickly and works well. My hair is annoyingly thick and poofy, but this works wonders!

  • 鈴木克昌幹事長代理、樋高剛総括副幹事長、古賀敬章副幹事長、村上史好、萩原仁、畑浩治、京野公子、大西孝典=以上、幹事長補佐、松崎哲久、階猛、横山北斗、中村哲治=以上、政策調査会副会長、大谷啓、菅川洋、木内孝胤、笠原多見子、石山敬貴、友近聡朗=以上、政策調査会長補佐、玉城デニー、岡本英子、大山昌宏、三宅雪子=以上、広報副委員長、水野智彦、木村剛司、金子健一=以上、企業団体対策副委員長

  • Fortigate says:

    Well you can try cubrid too.

    It’s a free SQL Database Management tool.

    you can check on their website cubrid.org

    Daniel @ Fortinet Fortigate

  • Pachmarhi tour says:

    Pachmarhi tourI fit in
    with your conclusions and will thirstily look forward to your forthcoming updates.