Ask Slashdot: Is Postgres On Par With Oracle?
grahamsaa writes "I work at medium sized company that offers a number of products that rely fairly heavily on backend databases, some of which are hundreds of gigabytes and deal with hundreds or thousands of queries per second. Currently, we're using a mix of Postgres, Oracle, and MySQL, though we're working hard to move everything to Postgres. The products that are still on MySQL and Oracle were acquisitions, so we didn't get to choose the RDBMS at the time these products were designed. So far, we've been very happy with Postgres, but I know next to nothing about Oracle. It's expensive and has a long history of use in large enterprises, but I'm curious about what it offers that Postgres might not — I'm not saying this because I think that sticking with Oracle would be a good idea (because in our case, it probably isn't), but I'm curious as to how some companies justify the cost — especially considering that EnterpriseDB makes transitioning from Oracle to Postgres feasible (though not painless) in most cases. For those that use Oracle — is it worth the money? What's keeping you from switching?"
Stupid fucking managers
Is this a gay porno site or what?
A big code base in PL-SQL I guess that nobody wants to re-write. We have lots of high dollar clients so it's easier to just stay with the status quo.
We have been experimenting with MongoDB with a few of our newer projects. We'll see if that becomes a viable alternative.
It is common for application support by vendors to only apply when specific database versions are used. If that doesn't include postgres, you're usually crazy to use postgres.
MongoDB, run away, run away quickly if you need anything close to ACID or XA.
my previous employer had a similar decision to make when they were restructuring the company. the powers that be decided to pay Oracle big $$ just because of name recognition ... and for the off chance that it would make the company a more appealing acquisition candidate.
imo, if your enterprise is optimized for postgres, you'd be crazy to switch. rearchitecting would be a son-of-a-bitch.
Is not open source, but is a good alternative for testing postgres as first step with a high % of oracle compatibility http://www.enterprisedb.com/solutions/oracle-compatibility-technology and later you should probably migrate to the open source version that is great, sorry mysql guys but I love the complex sql querys than I'm able to create at postgres without temporary tables and the engine mess... (personal opinion).
Materialized views (and all the related magic)
Flashback queries and flashback archives (they are really cool)
Index only scans (can be a major performance boost)
No transaction control in stored functions
Oracle handles queries that return 50k plus records far far better.
Oracle uses a statistical optimizer for execution plans in the engine. They are working through the 2nd generation of it to handle situations where they are lots of high frequency values
Temporary table undos
Oracle is really an excellent product for a database in which there will be DBA maintenance. If there aren't DBAs Oracle's complexity becomes a minus not a plus.
Really, it depends. Is the stuff in Oracle using the database as a simple RDBMS? Then likely Postgres would be a good alternative. But there are many great features in Oracle that command the high price. The PL/SQL engine and all that comes with it is extremely powerful. Advanced Queueing is outstanding. The analytic functions are second-to-none. The tools that come with Oracle are great.
That said, I think most projects that need a database could do just fine with Postgres. I'm in the process of converting our corporate system from Oracle to PG now. I've worked with both systems extensively. For really large projects that need special features and absolutely bulletproof DR infrastructure, Oracle is the only way to go.
I choke when I say that, because I simply hate Oracle, the corporation. The database is stellar though...
Most people I've met using Oracle don't know shit about it. It's great if you have lots of data and you want to harvest it with views and stored procedures. But the only people I've met seriously dealing with Oracle were qualified DBAs who only focus on DB dev and the Oracle DB was an internal DB that the web and remote entities DUMPED to.
It have never seen not used as a consumer facing DB for remote parties.
Though I have wrote a few apps that wrote to an internal Oracle DB and provided custom schema with procedures and views so that internal consumers could draft reports. But these were big ticket dudes and it was Marketing that wanted the views. I wrote the procedures for me to help me out as well as triggers etc. They were nice and gave me full admin access and Windows RDC into a Server. For a Global Retailer on the order of magnitude a brand like Levi's that was pretty hot and made my dick grow a couple inches.
But really Oracle and Postgres is Apples and Oranges. I say ditch Oracle, because you likely aren't using it for what it was created for and move to Postgres. The only reason why MySQL is so popular is because 90% of Web Developers don't know dick about what a DB is and how to properly use one. To them it's a data catchall, sock drawer etc. Rails style platforms and shit like Hive have only helped to propagate the fucktardery around DBs in Web Development.
When you can write 40% or more of your applicational business logic via stored procedures and views that Joe Blow Webscale can't possibly fuck up or mess with, you know you are an A-Grade Web Developer.
Many legacy applications built using Oracle use one or more Oracle extensions to the SQL standard. Eliminating those Oracle-isms would take developer resources that (most) companies prefer to spend on enhancing the application (you get credit for new features, not old features being rewritten; why do you think there is still so much Cobol code still in use?)
The first reason to go with Oracle is its reputation. If you are responsibile for making a choice about which database to run, and you choose something that has the perception of being the second rate or the cheap option then if things go wrong and data is lost that decision might cost you, even if the data loss has nothing whatsoever to do with the quality or reliability of the database software. Is this unreasonable? It will depend on how conservative the organisation is. If it is a startup then they will be more comfortable with a open source database. If they are a financial organisation the licensce cost may be far less important than the perception of reliability.
The second reason to go with Oracle is lockin. Oracle DBA's in my experience have been trained to utilize the Oracle specific features of the product in such a way that moving to another database is impractical. Liberal use of stored procs, or even a decision to only use stored procs for data access has been a common theme. So has the idea that the business rules should be implemented in the database. All this does is couple your application to Oracle and lock you in. If you are buying an application the chances are that if they have developed against Oracle that you will have no choice about the database to run.
Oracle also has an ecosystem of professional support companies, and this too can provide an additional level of comfort for those making the decision about which database to run.
However, if you are like me and develop using a abstraction layer such as Hibernate, and refuse to write applications which tightly couple against specific flavours of database, you will retain the option of using Oracle if you or your customers choose, while keeping the door open to other options. My experience is that both MySQL and Postgresql provide a level of robustness at least equal to Oracle. They are far easier to install, do not require complex licensing, have highly experienced communities around them, as well as their own commercial support options.
There are features Oracle provides that have no PostgreSQL equivalent.
Oracle is big and great, and most of all expens--worth your money! Just remember to hire a proper DBA to manage all the thousands of patches you will get from Oracle. Other than that it's perfect for all uses.
Signed,
-- Oracle DBA.
When you work for a big corp. and have the money to burn, it's all about shifting liability to a 3rd party -- the bigger, the better, hence the saying, nobody ever gets fired for buying IBM.
In turn, with the money you pay them, a big 3rd party will more than likely throw all the man power at your problem until it gets fixed.
Maybe it's dumb-ass developers like this one who jerk off with technology instead of writing things that customers actually want?
Oracle has a patent that limits a query to only use 1 cpu. So the answer is a big NO.
Aren't software patents great?
http://saveie6.com/
So just because your shop is running Oracle, doesn't mean you can hire chimpanzees to write your font end code. Optimize your database design and queries and you can go a long way before you need the power of a commercial database system. Don't, and even the most advanced commercial database on the planet won't make your app suck any less.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Like you install netbackup on it or one of the other enterprise products And it backs up directly to your tape robot via the San. No shutting down the database. No copying to a snapshot. Online backup of the production db straight to tape. Full, diff and log backups straight to tape.
Does it support online restore?
Is it certified for VMware and hyper-v?
If you have a problem can you open a support case right away?
Hibernate is a great tool in many ways, but it is far too easy to allow the actual details of what is going on under the covers to be hidden. As the parent suggests using Hiberate in a naieve way can be very dangerous. Complex queries are usually best handled by native SQL.
Postgres is bait and switch database. For the really needed features you need to buy a commercial version. What do you think why is the guy who works for EnterpriseDB the head of the steering committee? Incidentally, EnterpriseDB has hints, session trace and the event interface, all the things that the open source version so desperately misses.
Postgres has no parallelism worth mentioning. Nada, zilch, zero. Also, their partitioning is useless. There are no global indexes and the optimizer makes very strange decisions when partitions are involved. The answer to the question whether Postgres is on the same level as Oracle is a resounding no. Is Postgres good enough? I am a DBA, not a business user, but I would not recommend it for any company larger than ma's and pa's corner bar and grill. If you are looking for the alternatives to Oracle, there are several worth looking into, depending on the database type: Vertica, Greenplum, MS SQL and DB2. I would look hard into DB2, version 10 has number of Oracle compatibility features and is much cheaper than Oracle. IBM is going aggressively after Oracle's market share. Trust me, you don't want Postgres. There is a reason why people are not using it, although it has been around forever.
I did now know about EnterpriseDB oracle compatibility for PostgreSQL, that is interesting.
However there is still a strong Oracle feature missing here, which is called CYA. It is just like using Microsoft software: even if it does not work nobody will tell you were wrong by choosing it
Personally, I think it all comes down to accountability; that and "in-house" buying and mark-up. With open source software, there isn't any "mark-up" pricing for businesses.
You're omitting a key concept about price that I've seen many fools around me exploit. If they are managing a big project that has software costs of millions a year then they must be very important. If I'm managing a project that only costs the company a hundred thousand or so in software costs a year then I must be less important. It really doesn't seem to matter if my project does more or is actually more critical to the operation of the company, those are concepts that are too abstract for upper management to understand. So if you want your department to look important then waste as much money as you can.
I'm an American. I love this country and the freedoms that we used to have.
If your DBAs believe in hands off the database and your tables have a lot a churn, you are going to be in for some pain.
Seriously, the cost of switching is what keeps everyone locked into their databases. Unless an alternative DB can provide a seamless drop-in replacement, the man-hours spent on re-engineering and the downtime vastly outweigh the performance improvements you might get out of it.
Is there anything better than clicking through Microsoft ads on Slashdot?
Installing and testing.
I installed Oracle a few times and played with it. I didn't put a proper shutdown method in the shutdown scripts and there was also a mishap while testing the UPS. Both times I was unable to recover the Oracle database and had to reinstall. I had never had that much trouble with mysql. I installed it for someone else that had an Oracle expert and they where able to recover when we had a similar mishap there but all the googling in the world is nearly useless without a properly trained Oracle administrator. I'd suggest sticking with a database where the documentation is fully available and many many more people that can help you. There are easy free forums for mysql, maraiadb and postgresql.
As much as I hate to admit it.. The Oracle stuff for the most part just works and if you have competent DBA's you don't have to worry about it. You may regret using oracle when you get the bill and sometimes it does not have the more esoteric features of the other DB's but you will be glad for its stability and its enterprise focused features in the long run.. And no one will sack you for choosing Oracle.
It think it might be expensive and that's something, but I suppose the main thing keeping from switching to Oracle or even calling them, is the lack of benchmarks. I can't get any data about whether or not we'd get anything out of it. It's almost as though the first rule of Oracle is that you don't talk about Oracle.
Ja! Das ist wahr, mein kapellmeister!
Ich bin ein anus Amerski: {}
Ich bin ein anus Sovski: o
Like most DB comparisons, it depends on the workload, non-technical business factors, and more.
Oracle has superior clustering to PostgreSQL, better native XML support, autonomous transactions, procedures that can return multiple result sets, a really solid embedded JVM for procedures, proven scaling to absurdly huge database sizes, etc.
PostgreSQL has transactional DDL, generally better standards adherence, no lock-in, streaming replias that don't cost you anything, multi-language stored procedure support, extreme extensibility, proven scaling to multi-terabyte database sizes, and probably more I take for granted and forget about.
With Pg you get a lot of choice of support provider, including "none, I can do it myself and I can always contract someone if I need help". With Oracle you get support from Oracle, or from a vendor who must comply with what Oracle wants in order to get access to the resources they depend on to offer support.
PostgreSQL has no per-cpu or per-core license fees so you can run it on a lot more hardware. You can also afford to buy a much bigger server for the money you're saving on licensing fees and upgrade it more often. This can make a huge difference; PostgreSQL's performance is generally very good, and in areas where it does fall behind Oracle you can make up for a lot by throwing bigger hardware at the job. You also don't have to face NDAs, license audits, not being able to afford to have a second off-site hot standby backup machine, being stuck on old versions because licensing new ones is just too expensive, etc.
So, really, a huge amount of it depends on the workload, business requirements, etc.
I work professionally with PostgreSQL as a member of the 2ndQuadrant team, but if I'm discussing planning with somebody I'm still quite prepared to say "I don't think PostgreSQL will do the job as well as [blah] here given the time frame and requirements". It doesn't come up much but it has, and I'd be doing them a dis-service by saying PostgreSQL's perfect for everything all the time.
I find PostgreSQL to be the safe and sensible default, but I consider alternatives or supplements to it when I run into workloads it's not ready for or not great at - like someone who has a hard business or compliance requirement for synchronous multi-master clustering, or somebody whose query pattern and data set is going to be a better fit for Greenplum than native PostgreSQL.
No, Not even close. Oracle has a lot of enterprise-grade functionality that does not and probably never will exist in PostgreSQL.
If you actually need that functionality it will probably be worth the exorbitant prices Oracle charges for it.
Perhaps a better question is what does Oracle do that PostgreSQL doesn't and is it necessary for your business?
(Disclaimer: I am not a DBA and I go out of my way to avoid working with Oracle, however I often run in to Oracle DBAs that know less about databases in general and sometimes Oracle specifically than I do.)
Any insufficiently advanced magic is indistinguishable from technology.
In 95% of cases (or more) as one of the first response said: "stupid fucking managers", in 5% (or less) of cases, some very very very high-end features that almost nobody actually needs. Sorry, bathroom break is over, got to get back to the movie with the wife, otherwise I'd say more ;-)
But I'll leave you with this: the postgres folks are truly experts in database, and extremely forthright. Unlike the MySQL founders, if you go and ask this same question on the postgres mailing list, you will get an honest answer, not marketing bullshit.
Also, I see now that Craig Ringer has responded above. Anything he says, believe it ;-)
Not familiar with PostgreSQL locking but we used to find that MS SQL Server would, what's it called, escalate its locks from block to row to table, well, we thought quite easily (you could criticize our design that brought this about, doing many insertions in a single transaction over a long period, but Oracle handled the same process without problems). More recent MSSQL Servers have improved this, though. How is PostGreSQL's locking?
Ever try to store an array of strings? Better to store it as one field and parse it in code!
If you're trying to store complex data structures in SQL, I would recommend protocol buffers. Imagine XML, but more compact, and with built-in support for versioning. It's open source too.
"Once we've identified and embraced our sickness, we'll have strength...and that's when we get dangerous." - John Waters
This is the best thing about SQL: it's a standardized language letting you switch between different database vendors with fluidity.
That's the great thing about standards — there are so many to choose from.
"Once we've identified and embraced our sickness, we'll have strength...and that's when we get dangerous." - John Waters
In my opinion:
Oracle is easier to hire for. A lot of "reporting people" know Oracle. If they had half a brain in their head they could write SQL for any DB... but if they had half a brain in their head you'd have to pay them more.
Oracles support is... worse than anything. We just stopped calling. It's better to live with the bugs than waste man hours on that cunt licking whore Oracle calls support. I'd rather traverse the 7 layers of hell in a thong than ever talk to Oracle support about anything ever again.
Oracle is Satan. They will fuck you in the most evil way imaginable. Whatever alternative you think will get you away from them, half way through the migration project oracle will buy the alternative company out. If torturing puppies were profitable, Oracle would have a puppy torturing product as a SASS. In fact, if torturing puppies just made the product slight less helpful to you, they'd probably do it as well... because their favorite pastime is making their product of less value to you.
We go on Slashdot from repeating that IT is like a janitor's job, to discussions about the idiosyncrasies of different databases and the specialties required therein.
Is there a middleground wherein an IT janitor can do his job AND properly maintain a database? Because that seems the question.
The vendor/author/distribution/licensing of that database seems irrelevant.
Kid-proof tablet..
i rather use Oracle 10g/11g Express Edition instead of Postgres. I like Oracle's web interface. haven't figured out how to use Postgres yet. it is kinda complicated.
I'm not very familiar with PostgreSQL but I can tell you that Oracle is a giant money machine. To do anything with Oracle is complex and so it takes "experts". Usually people who talk about how Oracle is the one and only true solution are people who have spent their life making a lot money off of "solving" complex solutions that didn't really need to be that way to begin with. My advice is to stay as far away from Oracle as possible.
Almost all of the junk they sell to execs is designed to sound fancy but is usually a lie. Guess what a "personal Oracle cloud" is? A machine that sits in your server room that everyone else calls a server. It's just junk designed to cost more money.
I don't have time to make a sig
Based on a rumor I heard about a local mega-development firm, make sure you build your app with the flexibility to swap out DB implementations and make sure the Oracle sales guys *know* it. Prices change drastically when they know you're not locked in. As for PostgreSQL, from my experience where I'm sure you'll lose out is with tools and a development environment.
I swear to God...I swear to God! That is NOT how you treat your human!
funny =)
For those that use Oracle — is it worth the money?
Absolutely not.
What's keeping you from switching?"
Applications that require Oracle.
Tired of being "punished" by the Slashdot $rtbl since 2002. I'm now over at http://soylentnews.org/ .
Done. Been handled natively by PostgreSQL for over a decade. Combine with pivots or windows for some really interesting stuff.
http://www.postgresql.org/docs/9.2/static/arrays.html
MySQL isn't bad. It's replication features are REALLY nice. And it does scale well. But the thing is, Oracle effectively owns it and is trying to kill it.
MariaDB is the replacement. Haven't had any experience with that one though.
I used to work with Oracle pretty heavily in the 90s, and 7 years ago quite a bit...Solid database, but worth the money?
I consider PostgreSQL the best piece of software I have ever used. Given how much I have used it, this is saying a lot.
I remember reading on the old Slashy-Dotty some quote from some language-designer that I will now paraphrase:
"There are two kinds of languages: Those that people complain about, and those that nobody uses."
The point of this anecdote being that the more you use a tool and learn its nuances and flows, the more you find to bitch about.
I have been using PostgreSQL for over 10 years. And in this time I have found very little to complain about. I may have a handful of anecdotes about its failings, and most of those are mediocre complaints, at best.
It is a solid workhorse.
Aside from the fact that it exists and that it's expensive is the experience we had in the mid-1980's with it when I was an undergrad. It ran on a Prime minicomputer. Even though only students were banging away at the server, it crashed a lot. The computer operator in the mainframe fishbowl had to called to restart it. If it was at night when there was no operator on duty, no Oracle. A very reliable minicomputer running a then unreliable database server. I suspect they've fixed their problems since then.
It's really quite a simple choice: Life, Death, or Los Angeles.
The issue is organizational rather than technical.
Legacy applications aside, enterprises that have invested in Oracle has teams of Oracle skill sets in both development and operation. Furthermore, there are operating procedures that are Oracle specific.
All of these are costs of migration from Oracle. Yes, Oracle is SQL based. But you are locked-in once you invested heavily in it.
The way out: slow does it. Put together an PostgresSQL adaption strategy and do it case by case, leveraging opportunities when they present themselves.
At the end, it takes real commitment, just like getting off addiction or bad habits.
Hint: EnterpriseDB may ease your pain.
Clustering is the big thing that Oracle (RAC) does well that Postgres can't yet touch. If you've got many thousands of customers using your service at any given time, you don't want to have to dick around with having only a single DB server.
Postgres 9.x does have the option of streaming replication to a hot standby server, so there's *some* opportunity for HA, but that's still a long way off from Oracle RAC with a four-node, multi-master DB always up and accepting requests.
If your application does mostly reads of the DB, then read-only slaves are a reasonable alternative that Postgres can do, but you're still bottlenecked on the really mission critical writes to the DB.
Postgres is a really good option that keeps getting better. But if you do go with Postgres, just watch out for the frozen XIDs. I hate having to juggle those stupid vacuum processes.
Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
Postgres has native support for XML. It's stored in compact binary form.
I am surprised how many developers etc exist in the world and how heavily they stand behind a particular database without doing any benchmark comparisons.
I have done a fair amount of testing over the years. MySQL is a lot faster then Postgres or Oracle.
Now few people need that, but if you have a massive database, massive transaction rates, etc that can be the kind of thing you need a heavy hitter like Oracle to do. There are workloads that just aren't possible on lesser DBs. As I said, not all that common, but they are there.
Overall when it comes to the "free vs enterprise" type question there are three things I think you really need to look at:
1) Can you, or someone else really support the free solution, or is there GOOD support you can pay for if not? If you don't have a support contract, everything is on YOU. Make sure you weigh the cost of your (and other's time) and productivity vs the cost of a support contract. In the case of things like Postgres, you can find companies that support it, however they have a great range in their competence levels.
2) Are there any features you need that you have to trade off for the free stuff? If so, the enterprise stuff is probably the right answer. Don't assume you can just cowboy up a solution that is "just as good" because you probably can't. If you need those features, pay for them. However if all the features are either "don't care," "meh," or "nice but no biggie," then the free option can be a winner.
3) Can the free solution scale to the level that we are talking about (performance or size)? If not, then it is probably not for you.
So like with databases: Just hosting a single website? Hell ya use Postgres or MySQL. Oracle is not likely to buy you anything. However dealing with a 2PB data set that does hundreds of thousands of transactions per second, all of which is absolutely mission critical and has to be always online? Ya, you probably need something heavier hitting, and more reliable.
Your actual setup probably falls somewhere in between those big extremes. You need to determine where and thus what side it falls on.
One thing not to underestimate in some workloads is how well the procedural SQL is. Hopping back and forth from a program to the database is expensive, CPU wise, so in some cases you really need to do some procedural SQL for performance reasons. How well that works can vary DB to DB. If you have stuff like that, worth testing to see how it performs in other DBs. Does it have what you need to implement it, and how fast is it?
You can install PostGreSQL. Try that trick with Oracle. Hahahaha.
Protocol buffers are database-independent, i.e. using them keeps one from being tied to one particular database implementation.
"Once we've identified and embraced our sickness, we'll have strength...and that's when we get dangerous." - John Waters
IT JUST WORKS. postgres and mysql do not even come remotely close to oracle. not by a mile.
they are simple RMDS Oracle is an application stack the db is only a small part of what oracle can do.
Linux modi 2.6.26-2-parisc
I wonder if XML is a standard.
But is it Web Scale?
I've used just about every major RDBMS in production. Oracle, in my experience, is the most forgiving and has a query optimizer that nearly eliminates the need to think. PostgreSQL works wonderfully in the hands of a competent engineer. Oracle works well for people that barely know SQL. Much of Oracle's complexity comes with the training wheels it provides... at the expense of cost, configuration, tuning, administration, customer service, etc.
One thing that does stand out in Oracle's favor is the security record.
Oracle has real good internal processes for secure software design, implementation review, and emergency response. (I know this from people who have actually worked there and were subject to these processes– it's not just marketing fluff).
Postgres developers, on the other hand, willfully ignore security issues in their code on flimsy grounds.
They'll tell you "We have to be competitive with your salary, your job is a global market!" but when the executive rewards are out, defend the pay increases with "We have to get the best CEO to be competitive!".
Four hundred extra people could be employed if the CEO was kicked out.
Given the CEO actually produces ZERO output, how much more productive would you be without him?
Note too that first of all your company needs customers. They buy your shit.
Then you need workers, they make your shit.
You don't need managers. AT BEST they just ensure that the workers are more effective, but without good workers, your managers are doing nothing, protecting nothing. You can manage for a few years having sacked EVERY manager.
Last of all you need the executive board. You never actually need one.
The big thing Postgres still lacks is a licensing scheme so complex and obfuscated that you will always be breaking some rule, allowing the vendor to extort you into selling something new.
Anyone that has dealt with Oracle will know what I mean....
---
>>Last of all you need the executive board.
But, without the executive board, where would all the profit go?
Codifex Maximus ~ In search of... a shorter sig.
Also; I hear plenty of government workers saying Management has a no open source software policy; for security reasons, the more money spent on the product the better, as closed source code is deemed to be more secure...
And that's a convenient meme for the spooks who have been getting the big companies to embed spyware in their systems, where the systems' closed-source or as-a-service nature makes it difficult-to-impossible to detect such spyware, even as it's doing you harm.
Perhaps the revelations about the Prisim program will drive a reevaluation of such policies and a move toward open systems which CAN BE CHECKED for embedded nastiness.
Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
Then you really shouldn't be the one making decisions.
Each system has its uses... But when you are managing mission critical data with gigabytes of data, you want something with a good solid support base. You should be paying for ongoing support. If you license Oracle on Sun (now Oracle) hardware, its a hell of a lot cheaper then Oracle on x86. And should shit hit the fan, you have Oracle resources to fall back on to help you save your ass.
This has been superseded by SQL standard CTE (aka Common Table Expressions) Oracle has that. PostgreSQL has that too.
Both Oracle and Postgres have some merits.
Personally I would say, if you need more modern features/possibilities, go for Postgres.
If you don't like to do things manually (materialized views for example), use Oracle.
I'm a big fan of postgres and have been for many years. I consider it to be an excellent RDBMS.
That said, postgres is not a replacement for Oracle. Oracle has a large number of enterprise features which are too numerous to list here.
One important thing which springs to mind is the lack of index clusters in Postgres, even in the most recent versions. The postgres equivalent (cluster table using index) is just not the same thing at all, or even close. This by itself could easily cause some complex queries to take more than 5x longer in postgres.
Another important thing is that postgres has no equivalent to RAC or other clustering technologies available in commercial RDBMSes. Hot standby is not the same thing.
There are many other examples that are too numerous to list here.
Years ago I was on a technical team which looked at which database engines to standardize upon. From a ten-thousand-foot view, all DBMSs are good. Enterprises and critical applications are run on Oracle, DB2, MySql, etc. Ultimately, the decision is a monetary decision, not a technical decision. And there are three components to determining the monetary costs. First, what's the difference in purchase costs for a specific footprint? (Usually the non-Oracle footprint is cheaper). Secondly, are you going to provide database support in-house for Postgres or buy support? (If in-house, is your resume current? Because when a critical application fails because of database problems, that database needs to be brought back to life as soon as possible. I was never confident that we could keep a team of crack developers hanging around for years waiting to fix a few emergencies. So the real cost comparison is 7x24 support.) Thirdly, how much would it cost to port the applications currently using Oracle to another DBMS? This was the killer in our analysis. There are not only the costs of the port, but also the lost business opportunities when that application team is tied up in the port instead of building new revenue streams.
thank you
My turnips listen for the soft cry of your love
I'm guessing that you've never owned or operated a medium to large sized business? If you had you would know all of what you said is nonsense, except the CEO pay disparity issue. That is a legitimate issue to be addressed. The rest is a rant of the ignorant. Quality managers are rare, but they are essential to business operations and continuity.
I know there are some options for Oracle like Standard and Standard One which are less costly and can be used in servers with four sockets or less.
I've been a relatively mild-mannered open source advocate for over 20 years now, and have been running Linux for all of it. My first DBA job was with Postgres (6 or 7, ~12 years ago now!) and now Oracle. This is all about databases, completely ignoring the application related acquisitions they've made in the last decade...
A lot of difference I see and is evident from the discussions here is that Oracle usually has the features earlier (not always, but yes, usually). The earliest example I've witnessed is Postgres' Write-Ahead Logging, which was definitely cool, but Oracle were there first. More recently, with 11gR2 you have advanced compression (pay $$$$ and it will store all your data compressed if you want) and with 12c there are a bunch of features that make me drool. Pluggable databases is just one of them.
Again, not entirely sure about Postgres, but Oracle build a lot of instrumentation into the database software itself. Tracing custom events is a great way of profiling your application as well as database deficiencies. Pay for the license to unlock the full power of ASH or AWR and you have a great deal of ability to see exactly what's going on and figure out how best to resolve any performance issues. The best bit is that this instrumentation doesn't make the database run like a dog. A few percent overhead gives you a lot of debugging power, and it's ALWAYS turned on with basic event tracking always happening anyway. But you can add MOAR.
I see some impressive performance on Oracle databases these days, but not entirely convinced that Postgres cannot meet them. But then, Oracle can run on anything from 32 bit x86 to some seriously beefy hardware (and when it does, it runs well). I'm not entirely sure about Postgres, but I know Oracle has been compiled for RISC architecture (Power, SPARC, HPUX, others??) for a long time. These days they to lean towards x86 - and will even sell you a "database machine" (google for Exadata). This extends to scaling out on any of the supported architectures with their cluster software (Grid Infrastructure) these days, which is quite mature now. Again, Postgres probably does this, but each generation sees a significant improvement for Oracle.
Having said all that, leading edge can also be bleeding edge... The biggest problem for me with Oracle continues to be the time it takes to resolve software bugs combined with their support infrastructure. While it usually gets there in the end, for the price you pay for enterprise support one might expect quicker resolution if you happen to be the first person to hit upon a specific problem. Unfortunately this tends to tie with the need to certify with all the Oracle applications they release and support. The one and only bug I reported when I was a Postgres DBA was around a date calculation issue - from the behaviour I reported it was tracked down and patched in ~ 2 days, and I had a workaround for the meantime anyway.
Oracle have also done some cool stuff in the open source domain with OCFS (and now OCFS2) and the free domain with their base GI cluster software, as well as the plain cool domain with ASM (dynamically manageable disk pooling with Stripe And Mirror Everything methodology providing solid data robustness) and ACFS which lets you carve out clustered POSIX compliant filesystems on top of ASM at will. This all helps with scaling (don't need OCFS2 now if you use ACFS tho).
Hmmm, it seems they really are turning me to the dark side.... heeellllllppppp!!!!
Actually PostgreSQL's XML type is a thin wrapper around "text", not a compact binary representation. It does get TOAST compressed which might've what made you think so.
Postgres also has support for json, and while it is simply stored as a string, it at least can be validated on insert and deeply indexed.
MariaDB is the drop in replacement for MySQL, leg by the original MySQL developers. Fedora has moved to it in recently released Fedora 19. And RHEL 7 will support MariaDB at least as an alternative for MySQL. Two months ago Wikipedia moved from MySQL to MariaDB. SkySQL has merged with MariaDB. So the momentum is behind MariaDB.
They didn't make a complete catrastrofuck called the Java web plugin and they didn't ruin Open Office so I'd say they're beating Oracle.
Hibernate is a piece of shit. A leaky abstraction that's more leak than abstraction. I don't get the fascination with this technology.
Are agnostics skeptical of unicorns too?
Let's not get into bashing Hibernate here. I'll just say that the only project where I've seen reasonably efficient and working usage of Hibernate was the one project with the highest number of people actually knowing SQL well. Which is exactly what most ORM promises you won't need ...
If Postgres is on par with Oracle then it has fallen a long way.
We migrated from Oracle to Postgres on our customer facing applications - with no impact whatsoever from a performance perspective (we have terabytes of data stored in our databases).
That being said, Oracle and Postgres are administered differently so there was a learning curve for our DBAs, and some code had to be rewritten if it used 'oracle-isms' (e.g. non-standard SQL functions).
Not a big deal.
Oracle will handle highly concurrent transactions with minimal locking, and provide consistent reads at the same time. This is the most difficult thing transactional databases do. You can also throw horrendous queries and really bad applications at it and Oracle will handle it. Like the other major companies Oracle gives fairly good support for their product and the product documentation is superb. The big corps have the money to pay for it and like to play it safe.
Hmmm, it seems they really are turning me to the dark side.... heeellllllppppp!!!!
Oracle is a database company with massive resources. Thus database is what they are good at. Price is the biggest downside that I can see.
So if you can afford it (ie. You work for a VERY profitable/large company) and you need the features that are not available (Or not good enough) in other offerings, then join Larry and don't look back. Evil may not be good, but it sure has a nice database engine!
Postgres should hire more MBAs.
Casteism
Who would buy a $5000 Nikon body and a bunch of expensive lenses when a pocket camera can do almost everything a DSLR does?
Evil may not be good, but it sure has a nice database engine!
There are lots of things that can be said about Oracle, some more flattering than others, but I'm fairly sure "nice" isn't one of them.