Oracle and PostgreSQL Debate
Mark Brunelli writes DBAs are talking about the merits of the open source PostgreSQL database management system (DBMS) as compared to Oracle - and their opinions truly run the gamut. DBAs responding to the interview said they liked the low cost and ease of use of the open source database, while others said that Oracle's rich feature cannot be ignored. Still others talked about how well the two systems play together. According to one DBA, a gateway product from Oracle would be a welcome offering."
90% of the people who use it don't need it. 100% of that 90% are/have been convinced they need it.
We're using PostgreSQL as the indi backend; it handles requests both from a Jabber server and a Ruby on Rails web site and web service using the native extension (i.e., written in C) driver.
It's working great so far, and since ejabberd has native integration with PostgreSQL, we'll be able to switch to that pretty easily.
The Army reading list
others said that Oracle's rich feature cannot be ignored
Oracle's rich feature? Oracle only has one feature?
If that's the case, it would have to be a pretty mighty feature to beat any other database...well, except maybe Access.
So does anyone know what this feature is?
http://ingres.com/
Agile Artisans
obviously they've never tried to dump and restore a database when upgrading to a new major release. Never goes according to the documentation. thats why I love mysql, just install the new rpms and keep on truckin'.
/etc/passwd for authentication of users/passwords, I hate that it has to use its own internal user/pass database.
I just wish mysql could use
Does the name Pavlov ring a bell?
I like how I can call Oracle and get the best developers/DBAs/integrators/troubleshooters to solve my problem, and it requires only money. I like how I can look at the Postgres source code, so I don't have to call anyone to solve my problem - or I can choose who I call.
--
make install -not war
Uhh...is editing a config file really that difficult a process? It's like two lines.
Why does everything have to be all or nothing? There's nothing stopping an Oracle shop from using PostgreSQL here and there. Plus you've got EnterpriseDB, which bolts Oracle compatibility onto PostgreSQL for a little bit of the best of both worlds. Go ahead and pay Oracle for the top end of what their feature set lets you do and use PostgreSQL for the rest.
Breakfast served all day!
as is MySQL/InnoDB and Postgres.
MySQL and Postgres have the features that most projects need. Most databases are relatively small (in the 50 gigabyte range), and do fine with a standard database with triggers, views and stored procedures.
Oracle has features that are absolutely essential to some projects. And MySQL and Postgres are slowly (or more quickly in the case of MySQL) adding features, turning Oracle into a niche product.
Long gone are the days where, to paraphrase, "No one was ever fired for implementing Oracle".
MySQL 5.1 (beta) has data-partitioning, row-based replication (and statement based), event scheduler (like Oracle jobs), and the ability to replication between non-clustered databases and clustered databases (clustered databases don't support foreign keys in MySQL 5.0 and 5.1, so this is a good thing).
http://www.whenpenguinsattack.com/2006/02/mysql-vs -postgres.html
b ase-speed-tests.html
and a speed test of various databases
http://www.whenpenguinsattack.com/2006/03/10-data
To me, the important advantage of Open Source on the server side is that my data is in an Open Format - because I have the source. I can clean up corruptions or load old backups because I know exactly how the server reads the data.
Also, I can use the same database version forever. I have to get someone to patch the code to run on Vista or Windows Server 2025 or whatever in the future, but the core of the database server remains the same. Database servers just keep running on some server and are forgotten until suddenly someone makes the decision to upgrade those old NT 3.51 servers ASAP. If you run an ancient version of Oracle, you are stuffed. No support for the old version, your proprietary front end application doesn't support the Oracle versions that run on Win2003 - so what do you do? Run your business critical RDBMS at an unsupported version on NT on VMWare on Win2003? With Open Source, you can patch the layer that needs fixing, without changing the rest of the product or include the feature bloat the Oracle Sales keep getting added into their products.
What is the sound of one hand clapping?
cat
If they want something that plays nice with Oracle, they should take a look at http://www.enterprisedb.com/ .
One of the goals of the company is aimed specifically at making life easier for Oracle people on PostgreSQL.
Company I work for runs both PostgreSQL and Oracle. Years ago we were a PostgreSQL only shop. Along comes a Sr. Developer who touts Oracle to management, and they listened to him.
Now we have 2 Sr. Oracle DBAs, 1 Jr., and 2 PL/SQL programmers.
Oh yeah, we don't have any PostgreSQL DBAs. But we have just as many PostgreSQL servers.
Now we are moving some of our applications back to PostgreSQL, which of course scares the Oracle DBAs.
Our servers are heavy-hit. Thousands of queries per-second on both systems. PostgreSQL can keep up with Oracle, and Oracle can keep up with PostgreSQL.
One thing I've noticed about the market that is both good and bad for PostgreSQL - You can put out an Ad for an Oracle DBA and get hundreds of responces. Put one up for PostgreSQL and you get almost none. Almost a year we've had an Ad out for a PostgreSQL, there just arn't any.
And I don't think its because there arn't any full-time DBAs. The reality is PostgreSQL just doesn't need the same amount of staff that an equal amount of Oracle databases need. The good side, it just works and requires so little maintenence. The bad side? Its hard to sell to companies when they can't have someone full-time on it.
I'm curious with other companies experiences. How many full-time DBAs do you have for Oracle? How many for PostgreSQL?
"...missing is a gateway product from Oracle. These two don't talk to each other except by externally built and most times [highly customized] connectors."
/. just took place.
I can see how Oracle must be dying to take advantage of such an opportunity in much the same way Microsoft jumps at the chance to inter-operate with something like Linux.
In other news a sarcastic posting to
Of course that's all he has to offer. He's pretty much a spambot to plug the software he's working on. Thank god someone else finally realized that. Now if only the mods could realize it, too.
It's like sex, except I'm having it!
For those cost-conscious users, you may want to explore the free Oracle Database 10g Express Edition.
e /xe/index.html
http://www.oracle.com/technology/products/databas
Oracle Database 10g Express Edition (Oracle Database XE) is an entry-level,
small-footprint database based on the Oracle Database 10g Release 2 code base
that's free to develop, deploy, and distribute; fast to download; and simple
to administer.
It is absolutely free. It has certain size-restrictions but they should be enough for a lot of usages.
Slony I requires a primary key on all tables in order to be able to do anything. I have tables that don't have primary keys and I don't want to ever have them. I've normalized my DB and it's the best way to keep track of multiple items for a single person. OIDs are a waste of time in this situation and a cop-out. I don't want to rely on some level of replication that runs on top of the database server, I want it to be part of the database server so everything that works with the DB is aware of replication needs.
Postgres really needs some replication or mirroring mechanism built-in in order to even begin to attract people away from Oracle. The Slony II project will certainly require this level of integration, and I hope it succeeds, even it it takes until PostgeSQL 10.0.
Think of it like exiting vi. It is not difficult to type :q! but it is hardly intuitive. Same with enabling TCP/IP connections in postgres. If it were a one-liner in postgres.conf, then fine. But also pg_hba.conf? What the fuck does pg_hba mean? I don't know what hba stands for. How do I know to go looking there? I don't, because it's unintuitive.
"Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
Thank you for stating what should be painfully obvious. By the time MySQL had gotten around to supporting nested queries and CREATE VIEW I had long since written it off as a toy (one that wasn't even fun to play with).
Of course, to get back on topic, the article discusses a comparison of Postgres and Oracle. Until this week I never saw any need to use Oracle. But, they now have native RDF-store and some support for graph queries. Larry is still a colassal a$$, but I am now forced to concede the existence of some smart developers at Oracle.
Sigh!
Post gre ess que ell
Post gres SQL
Post gres QL
So is oracle's rich feature the one the one where you pay through the nose for their software and they get rich?
"If you are going through hell, keep going." - Winston Churchill
Anyone who has done enterprise level web-enabled applications can easily tell you the faults with all of the major players in the database field. Oracle is simply 'ok', but for most tasks, it's -to be brutally honest- over kill. Do you really need the replication features of SQL when all you are doing is cacheing emails and collecting messages from your users? At this juncture, most people are relieved because they believe that they settle for a second-teir solution such as MYsql and save the licensing fees to boot.
This might be ideal if all that you were doing was a ruby program that indexed your record collection, say for a student project in your CS class; but in the real world if you have to interface with serious e-commerce applications you will find that not only does MySqL lack even moderately advanced SQL features, but that you will be facing rising support costs for this "free" platform.
So, this brings us to PostGRESL. Now, I don't have a lot of experience with it, myself, given that I've mostly stuck to following the major database players instead of the fringe ones, but since this article addresses it, I've asked some of my friends their opinions. While it's featureful and scalable enough to meet the demands of your average medium sized shop, they've noticed that it tends to not be a viable solution for larger projects. In particular the latest industry benchmarks show PostGREsqL performing poorly compared to more mainstream vendor such as ingres.
Again, like MysQl, POSTgres demonstrates that in order to get enterprise level performance out of hobbyist level software, you're going to have to pay enterprise level fees for support as well as licenseing.
So, in conclusion, after seeing the way in which the other industry standard database solutions fail, there's only one choice a sane IT manager can make: When you need a datacenter solution which both high performant and scalable, is eoconomically viable and contains more support for the current standards the only real contender is SQL Server.
"I like how I can look at the Postgres source code, so I don't have to call anyone to solve my problem - or I can choose who I call."
.001% of the elite programmers who can do this on the fly, (b) ex-developers from the PostgreSQL team, or (c) nerds in their basement with no time constraints because all they're doing is running their Star Trek fansites with it.
In discussions like this, availability of source code always comes up.
I want to know who has a job where they have so much extra time on their hands that they can debug the source code of their database product.
No, seriously. I REALLY want to know. I can't imagine things operating at a pace where this kind of thing is even an option.
The only conclusion is that people who actually do this are either (a) the top
Next week on Slashdot:
Movers: 18 Wheelers and Pickup Trucks Debate
Grave Diggers: 360 Degree Excavators and Shovels Debate
Firefighters: C-130s and Hoses Debate
As long as that situation exists, there is 0% chance of them being used on the platform we use.
PostgreSQL does run on FreeBSD however. And every day that passes without Oracle makes it eaiser to say 'We do not need Oracle'.
How about a site that shows me objective views Oracle, PostgreSQL, MySQL, etc. have to offer?
Just go to that site that has the unbiased comparison of emacs vs vi (can't rembember the url), then click on the "Perl vs Ruby vs Python: An Ojective Analysis" link. On that page, there is a link to exactly what you are looking for (It's just under all the "Linux vs Microsoft: TCO" whitepapers.)
you do realize that postgres is the successor to ingres, right? (hence the post-)
I want to do this, anyone tried this yet?
2 years and no mod points. Join reddit. Because openness is good.
http://www-css.fnal.gov/dsg/external/freeware/mysq l-vs-pgsql.html
I suppose you could define the primary key as the order_id and item_id. In which case, I'd have to defer to not wanting to use something that ran on top of the database.
...that ANYONE /needs/ Oracle.
I will accept that someone would need something like Oracle Financials and that would be contingent upon using the Oracle database, but structurally speaking, why is it necessary for anything in particular? I mean, cripes, GOOGLE uses MySql. If THEY don't need Oracle, who the hell does?
I've run into this before trying to sell a TINY Division on using MySQL or PostgreSQL--every single !#!#%ing engineer said the same thing: we don't need _anything_ beyond MySQL, hell PostgreSQL is even overkill, so let's use it. Absolutely not, was management's response no matter how many high-profile case studies we threw at them. It was as if the #1 requirement was "Must cost at least $57,000, but list for $75k, so the purchasing manager can get a nice fat bonus for 'saving' money."
Seriously, I'd like someone to explain what precisely about Oracle could ever be considered absolutely necessary that cannot be found anywhere else aside from organizational bias and insipid politics.
Lack of pure built in clustering or proven replication support keeps me away from Postgres. Any idea when it will be part of the actual DBMS?
Oracle's got PosgreSQL beat in terms of features (which, as someone else already noted, many Oracle users don't need), but I wouldn't try whining that PostgreSQL is "hard to configure" Not compared to Oracle it isn't!
For one thing, these days, Oracle ships with an Java GUI that makes the database creation process alot less painful plus the Enterprise manager also helps to keep an overview. Not that your complaint about the DB instance creation process really makes much sense. You are comparing a Sabertooth tiger with a common house cat which is pretty redundant. OracleDB is a much more complex product than Postgres is, they are in different weight classes. Also keep in mind that it's not just about features. While working for a former employer I watched MySQL get dumped for Postgres as their billing system grew because Postgres had more features. However after about a year Postgres got dumped for Oracle because Postgres kept suffering major faliures every two or three months or so at very high loads. Oracle simply proved to be more stable at high loads, it scaled better, had top notch (though expensive) support and most of all it offered better disaster recovery mechanisms whenever seldom it did experience a catastrophic faliure (once due to a power faliure caused by construction work) and disaster recovery cost us considerably less effort than it did with Postgres. If you run Oracle on top notch hardware on a properly set up, patched and configured OS administered by a good Sysadmin/DBA it is about the most stable setup you can get. For companies that are making millons using Oracle for, say, their billing system like my former employer, the cost of expensive servers, a good sysadmin and the occasional contracted Oracle specialist is really peanuts compared to the damage that downtime can do in terms of Customer confidence and simply lost revenue.
Only to idiots, are orders laws.
-- Henning von Tresckow
Like any profession, database administration is rife with the mediocre and downright incompetent. For those, Oracle and the like provide an awesome service. A DBMS that works half the time, and the half the time it isn't working, there are documents, online knowledge bases, and expensive tech support personnel who can read to you from their CDROMs.
If you really want to know if PostgreSQL (or MySQL) can handle it, look at the best and brightest tech corps in the world. I'll pick two for you: Google and Yahoo!. They use MySQL extensively. IMO PostgreSQL can do whatever MySQL can (though, honestly, I'm not sure, I've only ever seen MySQL in high volume environments like Digg, where I'm currently working).
If your org *NEEDs* Oracle or Sybase or whatever because MySQL and PostgreSQL aren't supported by some software you bought, I feel sorry for you, and recommend you either accept your company's mediocrity or get out.
If you think MySQL/PostgreSQL just don't have what it takes on a fundamental level, I humbly suggest you rethink your competence in the field.
fifth sigma, inc.
order_id, item_id, quantity
I too have been using PostgreSQL since 6.5. I have experience with every version from 6.5 to the current 8.1....
:-)
The article made a number of mistakes or maybe the interviewees were not that knowledgable:
Jim Allen, a longtime Oracle professional and an independent technology consultant, says he has had considerable experience with PostgreSQL 7.4 and 7.5, but not the newest version, 8.0.
7.5 never existed. It was renamed to 8.0 shortly before entering beta. Goes to show how little he knows-- like those people who used to call and ask for tech support for "Windows 97" except a DBA should know better....
On the other hand, Allen was unimpressed by the fact that in PostgreSQL, stored procedure parameters are not typed.
"Everything is passed as strings, even integer arrays," he said.
Huh??? This is plainly incorrect and has been since I have been working on stored procs in it (at least 7.0, maybe 6.5 or earlier). All parameters are typed. They may, however, be presented as text depending on the function and how it is called.
PostgreSQL doesn't behave as nicely as Oracle when the system fills up, Goulet said. In those instances, the system tends to crash quickly.
I assume he is talking about oid/xid wraparound issues. Oid wraparounds fail pretty gracefully. In 8.1, you will get plenty of warnings before the xid wraparound forces a crash. However the crash is there as a safety measure to protect your data-- if the xid was allowed to wraparound, previously committed transactions would become invisible.
The solution to the xid wraparound is simply to do regular mainetnance. With 8.1 the autovacuum capability is integrated into the database backend and so this should never be a problem.
Goulet said that setting up a TCP/IP connection capability with PostgreSQL is hardly an intuitive process. To do it, he says, one needs to modify the postgres.conf and pg_hba.conf files manually.
Prior to 7.4 I think this was the case. With 8.0 and 8.1, only the pg_hba.conf needs to be enabled though you *might* also want to allow the system to listen on addresses other than localhost. In this case, you might need to alter both files.
But then there are webmin plugins etc. that allow you to modify the pg_hba entries from a web interface
LedgerSMB: Open source Accounting/ERP
Interesting that you call someone out for spamming their own software while you're trying to get others to sign up to a pyramid scheme to get yourself a free PSP. At least Tom actually creates something he's proud of. He's been a fixture in the postgresql and ruby communities for quite some time now.
Oh, the irony.
Just to plug my favourite itch..
PostgreSQL needs a reliable, well documented method for performing live incrememental backups. As in:
1) dump the whole database once a day
2) dump the transaction log every 5 minutes
You can then recover to any point give or take 5 minutes by loading the last full dump and each of the incrementals up to the point you need.
PostgreSQL ALMOST has this in the form of "Point In Time Recovery" but..
1) the documentation is incomplete - key details (like a definitive method for identifying the current log file) are missing. Check out the threads in the postgres-admin mailing list. It needs to be easier and users need to be 100% confident that they have the right set of files.
2) you can only backup and restore the whole server instance - ie ALL the databases at once. In practice this means you need a second server somewhere to do recovery on, then need to perform a complicated migration back to the primary server.
If backups don't really matter to you (or you're not running a transactional system) then PostgreSQL is fantastic. But if it's getting many updates a day and you care about recovery (so you're not boned when someone forgets the WHERE clause in a DELETE/UPDATE command) then it doesn't quite cut the mustard yet.
An official reference implementation backup & restore script would be a good start.
No, I did not read the f***ing article!
The difference is that I don't sneakily insert it into every post that I make.
It's like sex, except I'm having it!
Goulet said that setting up a TCP/IP connection capability with PostgreSQL is hardly an intuitive process. To do it, he says, one needs to modify the postgres.conf and pg_hba.conf files manually.
If you've ever had to bail out an inept Oracle DBA, this quote is rather ironic. Managing Oracle through it's GUI looks simple, but a few false steps you fall into a terrifying shadow world of arcane SQLPlus incantations and mysterious and evil grimoire config files.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
I didn't put a primary key on some of my tables because it didn't help anything at the time. Much later, I go to mess with Slony and discover in the installation documentation that you need primary keys on everything. Not all tables have primary keys defined, so I promptly gave up.
:-)
If you don't use something, you lose it, and I haven't designed databases in a while, so I honestly forgot about it until I got flamed.
The largest public library consortium in the US is using Postgres. If it's good enough for them, it's good enough for 90% of situations.
By default, PostgreSQL is only accessible from localhost.
You can change the listen address in the postgresql.conf
The Host-based authentication configuration file (pg_hba.conf) provides a very fine-grained level of control for how people can connect to the database. In it you can allow specific networks to connect but not some machines within those networks, and you can use different types of authentication for different networks.
For example, you can allow the web server to connect only using an account named 'www' but allow other users on your network to authenticate transparently using Kerberos V. This is all configured in the pg_hba.conf.
Does this make more sense?
LedgerSMB: Open source Accounting/ERP
TechTarget is paid by Oracle and others to write articles like this, so keep in mind the bias when reading the linked article.
Postgres has supported 64-bit archictures way before Opterons were available. You can google up people running pgsql in 64-bit mode in DEC Alphas and Sparcs in the late 20th century.
8.1 just gave the option of having larger than 2GB shared buffers because people kept complaining about the limit not realizing that pgsql performs better w/ small shared buffers and large OS cache.
Google and Yahoo are both examples of very intensive but very simple applications. I call this "wide but shallow." Lots of data flowing through, but comparitivly basic usage patterns. Take a typical ERP system, on the other hand, and you're suddenly looking at a narrow scale but deep requirement package. I worked for over a decade on a tier-one warehouse management package that had over 750 tables, 3+ million LOC, and some very complicated business logic that still measured its throughput in millions of processed order lines per hour (each one requiring many database calls) the last time I benchmarked it, which was back in 2003 on a 4-way IBM.
Its like saying that since Freightliner is the choice of companies like Wal-Mart, that they'd make the best luxury cars for people looking for ideal interior fit and finish. Same principals, totally different application.
You're special forces then? That's great! I just love your olympics!
extremely important too.
None of them have the reputation Oracle has in supporting its own core product.
True. And Tom Lane is employed by Red Hat, and so the main access to his expertise is over the email lists.
The companies I mentioned by name employ core PostgreSQL developers (exceptions being Sun and Fujitsu, the latter having contributed a great deal of code however), and provide support for general distributions of PostgreSQL.
Now.... When you call Oracle, you will get an engineer who is a DBA or an app developer who will try to help you. I almost guarantee that this engineer will have no access to the software engineers who built this version of Oracle. When you call COmmand Prompt (which support not only their proprietary fork, but also the community version too, 24x7), you get access to people know know the code, and if the engineer doesn't, he or she can definitely correspond with the people who are intimately familiar with the workings of that part of the database.
Imagine you run up against a bug in Oracle. The best you can hope for is a workaround. With PostgreSQL, the least you can hope for is a workaround. The best you can hope for is a patch.
Having said all this, I will say that the support on the email lists, esp. for performance tuning is phenominal. I ran into a bad query plan for an out of the box application. I was able to narrow down the bad query and submitted it along with an explain analyze to the list. I got a very good explenation as to why the problem existed, why the bahavior was not going to change, and what I could do to resolve it in the database without touching the code (the issue had to do with joining physically empty tables against very large tables). For the more complex issues such as "why is this not using an index like I think it should" it is not uncommon for a posts to go on 10-20 posts per thread. Sometimes I have even seen extraordinarily complicated problems be carried on for 50 posts. I have never seen anyone give up on the perform lists in particular.
I would rely on the lists for most support and then call Command Prompt, etc. for those time-sensitive issues where you cannot afford downtime or to wait for an answer.
LedgerSMB: Open source Accounting/ERP
As I mentioned, Postgres' open source offers the extreme advantage when dealing with a bug in the released RDBMS. However, it is possible for the right price to get an Oracle support person who is not only extremely qualified, who has access to the RDBMS developers, who has access to the source, but who will work on my premises. That kind of support is not available for Postgres - even the contributors to the Postgres source who can be hired directly don't have access to Oracle's professional services management structure and its resources for customer care.
The choice isn't quite as clear as it could be - which generally is in Postgres' favor. In extreme environments, like the ones on Wall Street where I've earned the largest share of my own income, Oracle and its support means "minimizing the risks", while Postgres means "economical risk mitigation". That's good enough for most people, and a testament to Postgres' value, especially per dollar.
--
make install -not war
...that turning on you computer's networking and opening a hole in the firewall are two seperate operations.
I can see the conceptual theory, but still, it's bad design. Typical programmer-invented UI. Their mistake is "lets force the user to make the coder's job easy" and "implementation detail leaking out of the abstraction". We implemented TCP and access control seperately, so we configure them seperately.
A better way to do it would be to make the networking switch-on implicit: if you open a hole for TCP in the access file, this causes TCP to be enabled on the server. Therefore configuration follows interface ("these networking modes are supported, make it happen") not implementation.
Postgresql has a patch that enables CONNECT BY support, but it's not standard.
File under 'M' for 'Manic ranting'
I want to know who has a job where they have so much extra time on their hands that they can debug the source code of their database product.
Nobody except the active contributers to the RDBMS I'm guessing. Certainly not be. But I'll tell you my personal experience with PostgreSQL and how it being open source directly benefited me:
I was doing a project involving PgSQL many years ago (v6.2 I think) to manage a small inventory database. There was a problem that looked like a bug in PgSQL rather than a configuration issue (I think it was causing VACUUM to fail among other things but my memory fails me). What I clearly remember was how I resolved the issue, and it is the first time that the benefits of open source directly affected me and when I becane clearly sold on open source.
I had given up and since there wasn't a company to turn to I looked for contact emails in what passed for the docs at the time (they are MUCH better now) and on the website. I emailed one of the core developers and described my problem. He emailed me back the next day and thanked me for my feedback and said he had a few other reports of problems somewhat similar to mine. He also ATTACHED THE SOURCE CODE OF THE PATCH he had been working on that was not yet in the release on the website! I applied the patch and recompiled and bingo...it was back to normal!
Now I was (still am) far from a guru C programmer but as with a lot of people I can stumble my way around makefiles and GCC and patches and so forth, and I did have time to recompile PgSQL. I can also (at the instruction of one of the developers) to traces and such and send in the results and THEY can do the debugging with my help. If I was using Microsoft SQL Server and had a similar problem I'd be screwed: I'd have to call clueless tech support, or wander around the KB articles and hope to find the solution, and in this case I'd probably find a useledd KB article along the lines of "Microsoft has acknowledged this to be an issue and will provide a solution in the next available hotfix" telling me to do some kludgy, unacceptable workaround in the meantime, which could be days, or weeks...or maybe even never. I certainly would NEVER have the ear of a Microsoft programmer who wrote or reviewed the code as a lowly intern-type doing a small experimental project.
So there you go...I'm (a) not an "elite programmer", (b) never been part of the PostgreSQL team beyond exchanging emails with a team member, and (c) though some may say I am a nerd I moved out of my parents' home when I was 17 and never lived in their basement. Despite that I have indeed directly benefited from source code availability for software that I did not write.
Although now, with modern computers, I suppose that should read performs best in a powerpoint presentation.
No wonder digg is such a pile of shit, is everyone there as clueless as you?
Yeah, I'm sure everyone desperately wants a job an "Anonymous Coward Inc.".
Bit by bit how the data is laid out is covered in Oracle literature. Database concepts chapter 2 covers blacks and 5 covers the rows (the data). There really isn't anything stopping you from writing a perl script to pull data out. Of course Oracle has all sorts of easy export routines so no one bothers.
I've been a oracle dba for a long time, and recently turned my back on oracle to seek other career challenges. I think the short explaination for my decision, is that the speed of hardware has grown to overwhelm most any real world performance problem, with just "good practices" as a dba as opposed to having to be some kind of hero dba. So there is no future there as far as $$.
/sec on a few xeon servers facing a few FC disk arrays. PG or MySQL will never do that even on the same hardware, since they don't parallelize and they don't do directIO and asyncIO in a pervasive or big way. This is the classic datawarehouse design and is probably a bastion for oracle (oracle is basically trying to eat terradata from the lower end)
I built some very large, very high thruput databases under difficult conditions (torrid growth at paypal) and I don't think it could have been done with that hardware and even todays mysql or postgres: only oracle had the features then, and it's features then exceed what pg and mysql have *in the category of scalability and serviceability*. This mostly stemmed from the difficulty of doing transaction safe database calls across multiple machines forcing us to scale a single machine for a very long time. And before anyone says pg and mysql have transactions, I"m talking about billions of dollars of transactions, where if you loose or fail to recover even a few you risk goign out of business because customers stop trusting you.
But moores law and whatever law applies to disk densities just crush any classic RDBMS problems. Number of spindles can still be sort of costly, but way cheaper than even 5 years ago. memory and cpu are practically free, making it unecessary and wasteful of time and money to obsess over tuning, inall but the most exterme cases.
If you're writing a custom new application, fuck oracle, except in those cases fall along these few lines:
- you want to do truly massive scans of multi terrabyte tables: Oracle RAC will do 2-4 gigabytes
- you want > 99.9 uptime: You will still need to work 10x harder in the application to get this or better, but you'll also need the serviceability of oracle e.g. index rebuilds corruption fixes without reboot. Also, the visibility and monitoring of oracle is lightyears ahead of mysql and pg.
- you want to build an empire as a middle manager
- you are writing a turnkey application you plan to sell to corporate america or govt.
That was great, till the demo timed out, and the development was not done yet. So then I learned about Postgres. So far, so good. Yes, I need to edit those stupid scripts. I am a notably grumpy and impatient person, and this was not hard. MSSQLServer also doesn't run very well on my Mac.
I consider MySQL, but back when I was considering, MySQL did not do subqueries, and it turned out that the SQL I was writing (not knowing any "better", just reading the book and believing it) used subqueries. So no dice there, either. That failing, together with all the hype, as since led me to pretty much ignore MySQL -- why should I believe today's hype, when yesterday's hype was so wrong?
So, in my book, postgres wins. It hasn't done me wrong yet, and the other guys have.
You can get a PostgreSQL developer on your promises too. You can even train one of your own workers to be a PostgreSQL contributor/developer. As PostgreSQL is open, you don't need to rely on foreigners to get access to anything should you be inclined to invest the time and money to look yourself. You can get involved steering the future development. Or you can fork the project for total control. Now where are these Oracle options, aside from buying out the company?
That you can get deeper insight into Oracle's inner workings by their support than into any *open* source DB is self contradictionary. The process is different though, I admit that.
I agree on your second paragraph.
I don't want to beat this issue to death, as we're all really expressing different valuation of the different factors in the different products' support realities, according to our individual requirements. But I did say that
"even the contributors to the Postgres source who can be hired directly don't have access to Oracle's professional services management structure and its resources for customer care",
which classes Oracle's support beyond the reach of Postgres. And beyond the needs of most users, who will probably be just as well served by 3rd party Postgres support as by Oracle's basic (and affordable) support.
--
make install -not war
That's nonsense. It doesn't crash. What it does do is wait for you to give it some more space. As an administrator, that's a fairly easy thing to do. Once you've done that, Oracle continues on its way as if nothing had happened.
Postgres does not have support for CONNECT BY statements to generate hierarchical results.
Oracle's CTX text indexing/searching feature works great for fuzzy text, soundex, etc.
All our work (bioinformatics for a small biotech) is done on postgres (of course, the payroll for 75 people is in Oracle), over the last 6 years I've installed and configured probably over 100 instances of postgres and maybe 5 or 6 of Oracle - and I've spent a lot more total time configuring Oracle.
sic transit gloria mundi
The parent isn't trying to hide the fact that he's participating in a pyramid scheme. And he actually had something to say in his post (meta-topical as it were). But Copeland will just post a barely tangental, non-sense reply to any story to blindly plug his software and books.
It's bullshit.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
I mean... wasn't Postgres unique way back in the day because it was a strongly typed object database? I haven't used it enough to know any better, but I was surprised to hear a claim that it didn't have typed parameters... it seemed completely off base.
And what's the big deal with editing conf files to modify the db bevahior? Any Oracle DB worth his salt is happy to get down and dirty with sqlnet.ora and tnsnames...
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
There is a known bug in Oracle's HSODBC layer that prevents Oracle integration with PostgreSQL (or any other non-oracle database probably). Any VARCHAR fields in Postgres with UNICODE encoding will not be readable in Oracle.
Oracle know about it. And the answer is no, they won't fix it.
True life story follows...
Now imagne you're Oracle customer and paid 50,000 for database. And you can't integrate it with other systems because of this.
- Oracle is quite arrogant to say the least. They know about this major problem for years and the answer is - won't be fixed. Maybe they do it on purpose. You have other non-oracle DBs and they force you into submission, so you either migrate everything to Oracle or drop Oracle for Postgres.
And of course if you paid 50,000 you won't be dropping it., You'll buy anouther 50,000 license to justify the first one.
- You're pissed off because you paid big money and you can't even fix it yourself because source code is not available. You can go with Postgres, for free and it will work with any database. Turns out that Postgres is more supported and more standarts compliant than Oracle. And even if you have a problem you may fix it in source.
So morale is quite simple, don't buy Oracle product.
In most of these cases, the support is not going to be what is really keeping you on Oracle. Parallel quieries for huge databases is the big one. No open source solution can match that one at this time.
LedgerSMB: Open source Accounting/ERP
Either the moderating system is fundamentally flawed (well, maybe it is), or the mods are simply on crack... I dunno. This isn't interesting, it's -1, TROLL or perhaps -1, FLAMEBAIT!
Even megacorps need some software that often relies on Oracle/Sybase or such (supposedly Wall Street uses Sybase a lot from what a friend that used to work there said). Quite often, companies WILL need features or what not that MySQL/PostgreSQL does NOT offer. Not everyone needs Oracle, but some do, and that doesn't make people incompetent, nor does it make a company mediocre.
Just because MySQL works for a shit simple toyish web app (I've seen 12yo kids put stuff together that was FAR more complex) doesn't mean it's good enough for everyone. As long as your DB scales well enough (optimize queries, add some caching and such features) and that you got enough hardware, running something like Digg isn't quite as hard as it may seem.
Just because the site is well known doesn't mean he has a clue. He's just yet another MySQL fanboi.
Disclaimer: I don't like Oracle. At all (I've left a otherwise great job just because they were switching to it). But it doesn't mean that those who need and use it are incompetent.
Please, mod accordingly.
You're either a troll --OR-- (you) have no idea what you're talking about.
> The companies I mentioned by name employ core PostgreSQL developers (exceptions being Sun...
Josh Berkus is now employed by Sun, and Bruce Momjian now works for EnterpriseDB (both are part of the PostgreSQL Core Team).
<sarcasm>When you put it like that, it's so simple!</sarcasm>
I have nothing but respect for the PostgreSQL guys - they are a damn smart bunch, let's hope they can put some work into making upgrading a replicated setup a lot easier in the near future - there's so many points at which that could fail it scares me!
I am NaN
Hello,
this is what varchar2 and nvarchar2 types in oracle ar for- unicode characters.
I agree, it is extremely idiotic that normal varchar type is useless in oracle, but you can still use oracle and unicode.
--Coder
Wow all these posts and there are only a handfull of Sun/Solaris mentions. Sun are making great improvements to PostgreSQL, they're currently working on a Solaris optimized version which will be a big bonus.
Reference: See the coming soon section.
Time is an illusion. Lunchtime doubly so. - Douglas Adams
I like to think of myself as a very technically minded person. But I recently installed Oracle 8i on my Linux (debian) server and found it very hard to use. Administration was very hard and I followed instructions in my huge Oracle 8i book but it never worked. when asking for help on the Oracle forums I did get the right answers, but just could never control it myself, with the use of the book. Simple things like shutting down and starting the Oracle server was hard. A complex and big DBMS, should be used for big and complex operations.
I'm an Oracle Administrator & Developer. I worked with both PostgreSQL (7.4 and 8.1) and Oracle (7.3, 8i, 9i and 10g) and, from the developer perspective I prefer Oracle. From the Administrator perspective..., Oracle is more easy to administrate but her police in fixing security vulnerabilities makes me very paranoid when I need to protect one Oracle Database.
This problem doesn't appear with PostgreSQL (or any other Open Source Database), simply, because I can modify the source code of the product if I found a problem.
There is no such option with an Oracle database so, you can try using a workaround (if possible and available) or you will need to wait for a year (or more).
When the Oracle guys change her policy about security problems I will say that is my prefered database in the world. At the moment I can only say that it's the most powerfull database (among IBM DB2) and, surely, one of the most insecure databases in the world.
But the second reson I chose MySQL is that it has true incremental backups with snapshot+binary logs, and it's dead easy to use. I looked at the docs in postgres on the subject, and found it to be extremely rough around the edges.
I'm surprised the Postgres team has not fixed this yet. They finally got around to making a non-blocking vacuum. You would think that functional incremental backups would be on the list as well. Pretty basic as far as db requirements go.
"Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
"Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
Don't be so hard on Oracle! I know it is gougingly priced, but it is pretty good at certain things! It has those features, man, rich FEATURES!*
*(Feature Oracle as your DB and our PHBs get rich)
It's called tsearch2. It has come bundled with PostgreSQL for a while now.
O'Reilly was talking about it at a conference in 2004, but I forget when it was actally released. Version 7.3 or something I think.
If you want to see something really cool in PostgreSQL, check out PostgreSQL's GIST support.
- I don't need to go outside, my CRT tan'll do me just fine.
Oracle costs a fair bit. Their pricing has finally come more in line for mid-size installations, but still it ain't cheap. So why spend that cash?
x .asp or forums.oracle.com or www.dizwell.com/forum or ...
1. You can find experienced developers and DBAs who live and breathe best-practices.
2. DBAs and developers cost money too. A developer is so much more productive in PL/SQL (Oracle's stored procedure language is a real language, not a shell script running in the db) that once you have 6 or so full time database developers Oracle pays for itself in developer productivity. It really is comparable paying licensing fees to code in Java or C# vs. coding in ksh for free.
3. There is an enormous, in-depth Oracle knowledge base to draw on, both on-line and as authors. I can get any question resolved frighteningly quickly at asktom.oracle.com or http://www.quest-pipelines.com/pipelines/dba/inde
In short, I have much better tools, much better support and a much deeper knowledge base to draw on.
On the plus side of PostgreSQL, recently I had to resolve a SQL Server issue that simply brought the db to its knees. The solution was to not use large (10k to 100k rows) transactions. PostgreSQL has an entirely sensible concurrency/transaction model and does not have the same aweful issues.
Cheers,
Scott
BTW, in times when I have seen people rule out PostgreSQL, I have seen them do it for two sets of reasons:
1) Investor relations in privately held firms-- I.e. the opinions of VC's.
2) Inability to meet technical demands (usually due to a lack of intraquery parallelism, though the currently vaporware Bizgres MPP ought to help with this if/when it comes out).
In my opinion, only the second one matters in the long run.
I have never heard someone say that they wanted to use Oracle because they could buy great support. If that level of support is truly necessary, often you have a need for intraquery parallelism which PostgreSQL doesn't offer, so you are left with a choice between Oracle, DB2, and Terradata.
LedgerSMB: Open source Accounting/ERP
TSearch2 last time I checked was bundled with the PostgreSQL source, and unlike MySQL's full text indexing that only works on non-transactional data stores, it is fully transactional (as is essentially everything in PostgreSQL).
LedgerSMB: Open source Accounting/ERP
Everyone keeps responding as if I'm saying "No one needs Oracle, therefore everyone can get by with MySQL." No, what I'm saying is that many people could get by just as well on, say, a $1M Sybase or MS-SQL install as the $5M Oracle equivalent.
...directly referencing Oracle Financials.
It's the same with Yahoo!. MySQL fanboys always claim 'Yahoo! uses MySQL not Oracle. That proves it's as good of a database'. Guess what? Yahoo! does use Oracle as well (and no, not just for financials. Just like Google).
In case you hadn't noticed, Google and Yahoo are very nich companies. Their largest 'product' (a search engine) requires massive ammounts of simple selects. It also doesn't require strict data integrity. If you only get 14,000 hits rather than 14,005, because the 5 are corrupt, who cares? The same goes for companies who's main product is an online forum (digg.com, etc). Simple selects. And if a few flamefests go missing now and then, no great loss.
The vast vast majority of companies out there aren't search engines or web forums. Most companies have data in their databases that are precious to them. I'm sorry to tell you, but the new *strict* feature in MySQL isn't all that. There are still plenty of areas where you can be running as strict and tell MySQL to do one thing, and it will not throw any errors, but will silently do another. That doesn't cut it when your data is precious.
That's one of the reasons Yahoo! uses Oracle for their email service, and not MySQL (Gee, look, a use other than financials!). People tend to get a lot more upset if an email they counted on having disappears than if they get 5 fewer hits on a web search than they potentially could have.
There are lots of applications in the world that aren't based on primarily simple selects, but use lots of inserts/deletes/updates/complex-nested-subquires where MySQL just isn't the right tool for the job, and even more where data integrity is a primary factor. That's why saying:
"I mean, cripes, GOOGLE uses MySql. If THEY don't need Oracle, who the hell does?"
is so patently rediculous.
Professionally, I've mostly used MS SQL, DB2/Universe and Sybase. I've NEVER used MySQL professionally, so I can HARDLY be considered a "fanboy."
Of course, I'm not going to rebuild SQL Server... that's a 2 week long excersize in pain.
Wait - how do you do that? I don't have the source.
Does this mean you're on the SQL Server team and use MySQL? That I'd believe.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
If you think your job is so secure, you ought to read this http://www.lewrockwell.com/north/north446.html from Gary North, in particular the story of the Linotype setter ...