I think its probably time to move off to a free open source platform like PostGres, esp for non critical apps.
Don't underestimate the power of corporate support. I had a problem with IBM DB2 in a previous job - to diagnose IBM went out and bought an exact copy of our hardware, installed the exact copy of our build and ran automated queries to match our load and recreated the problem. You don't get that support from stackoverflow.
Oracle will let the ticket bounce around Tier 1 asking you basic questions for months until you just give up, just like every other vendor.
Sure, we've had our reps bring in pizza and beer during huge Oracle downtimes, but they never actually SOLVE anything. "Escalation" means "get a manager really mad at the poor support person", not "give it to somebody who knows what they're doing", because those support orgs don't have those people anymore.
OTOH, Oracle knows you're not about to stop your business for a year or two so you can figure out how to migrate a 150TB DB, and figure out how every little piece of code written over the past decade or two will handle the migration to different software.
What are they getting paid for then? They take the TPS reports from the in-house engineers to the Oracle managers? They're people people?
You get very wildly different levels of skill, and many times very low levels of skill. Then they hire consultants, because we can make the thing go.
Like COEs, and all sorts of other things that a EnterpriseDB can't compete with due to the money involved. It just isn't the same.
The current versions still have the same syntax and core features. Performance, replication, features, and tools are all vastly improved. But it still feels like the same product.
4. We are paying big bucks to license industry-specific commercial software that forces Oracle or SQL Server.
5. We already have the licenses available via an EA, so why not keep using the same tech for other projects?
6. We can't find highly qualified offshore labor to support FOSS software/platforms (this isn't really true anymore, but it definitely was 10 years ago).
7. We have various data interchanges with our trading partners and using X makes it easier.
8. We already have all this ingrained experience with X and we're a thin margin company already. We can't afford the switching costs. Another angle for this argument is CapEx (big purchases) vs OpEx (labor), and how corps handle IT budgeting.
Post mergers the mantra is "you say that we will get $n from putting all our systems together and it will cost $n/10 but I say you are a bloody liar and want proof and hostages."
Sorry, but this story is true in every Fortune 1000, except maybe a very small number of technology companies.
Why? Line of business team X demands product Y, that only runs on prem on DB Z. Done.
The boss finds that proposition attractive, because the alternative with in-house databases is that it's the boss' fault.
All of them on our portfolio, which are all non software based companies, rather telecomunications, manufacturing, healthcare, commerce, and so on.
Sometimes there are a few projects using Postgres or MySQL, but usually those are small department experiments that either stay small or are eventually migrated to Oracle/SQL Server.
Also I am yet to work in any NoSQL project.
The db/table creation is probably the one part that requires the most tweaking.
I have to admit, I always hated MS Enterprise Library, specifically the Data Application Blocks (I think that's what it was called). Mostly because it was a lot of abstraction for zero gain when you only targeted one database. The only time it was worthwhile was when I worked on an application targetting multiple backend databases. Even then it was a lot of work.
Their in house teams are already over worked, under staffed, and usually lower skilled because they are not paying a premium for staff. Could be in some random city without a strong base of people to hire.
That's why consulting works. You pay me a ridiculous amount to fly to your random city every week, where I essentially work as staff, but with clear deliverables on a timeline that must be met.
Then I work ridiculous hours every day while your inhouse staff goes home to see their family.
No, it doesn't have every feature that pgsql has, but I'd rather work with it mainly because out of the box configuration and replication support is so good. The licensing costs are also pretty damned good compared to EnterpriseDB support contracts, and much less than equivalent for Oracle.
I've always found too many WTF moments with mysql for my liking, and Firebird simply isn't popular enough (though a very cool dbms option). On the flip side, for certain roles, I'd probably reach for RethinkDB (similar to MS-SQL in terms of admin ux, and a really nice db option). If you need pure scale in terms of read/write Cassandra (C*) is probably the best option.
YMMV of course, and on personal projects I'm very frugal, I really like Azure's Storage Tables for some instances. I think that if Azure had a good keygen service, that combined with Azure Storage Tables would be awesome.
It becomes a self perpetuating system.
Some of the reasons why this trend WILL continue:
1. Critical software like databases needs support. To the point where there should be someone who can come on premise to fix things.
2. We need to use X because X is used by other big corporations and you never get fired for choosing X.
3. The products (Oracle,MS SQL) are not that bad. (Not sure if there is a better way to put this)
I could be wrong, but I can't think of any other important reason. Can anyone pitch in their experience?