
Ask HN: How is your experience with Oracle, Postgres and MySQL? - tuyguntn
This is a follow up to https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9702372.
How was your experience with these databases, PG, Oracle, MSSQL, MySQL. If you describe with one sentence how do you describe them in one sentence.
======
needusername
Oracle: Doesn't scale down. Lacks a lot of convenience features (BOOLEAN,
DATE, IF (NOT) EXISTS, …). You need a team of DBAs to manage it and have a
good relationship them (send birthday cards for their kids, I'm not making
this up). You need to have people on your team with a good understanding of
Oracle. Then the speed and information you can get out of it is amazing —
given your corporate structure gives you access to a good disk subsystem.

Support is a waste of time (we have a priority 1 bug open for more than half a
year).

11.1g was so buggy that your DBAs would forbid us to go to 12.1c (BETWEEN AND
wasn't working correctly).

I just wish they would open source their JDBC driver and accept pull requests.

Scale: about 10 TB, tables with between 500M and 1.5B rows, slow disk
subsystem (SAN with about 150k IOP/s)

~~~
pjungwir
The last time I used Oracle was 8i, but it certainly supported IF (NOT)
EXISTS.

I mostly agree with you about scaling down, and culturally Oracle DBAs are big
at gatekeeping, but as a fairly junior database developer I was still able to
figure out the basics of installing and configuring it, so maybe it's not
_that_ bad.

~~~
needusername
I meant IF (NOT) EXISTS for DDL. It exists for DML of course.

------
drifter89
DBA & PL-SQL/UNIX Developer here. Primary work with Oracle and SQL Server.
Also support PG, and MySQL.

SQL Server hands down has the best GUI tools, none of the other DB's can even
match this. Lots of information/documentation online. Makes life a lot easier.
With Flashback being added to SQL16, it's going to be really hard to beat.
Setting up, and maintaining HA options like Mirroring, Clustering, Replication
is significantly easier that all the other DB's I've used.

Oracle is great, and also a pain in the ass. Works on any OS...but in my
experience works best on Solaris. They really need to improve their tools. If
you want to be effective you pretty much have to use the command line, and sql
plus. There is nothing wrong with that, and in fact I prefer this method for
most things. However, once you get used to SQL Server, it's crazy how much
time you save, by having simple tools. Data Grid sucks ass, and is just a
pain. They try to push this now, instead of the command line tools, pretty big
mistake in my eyes. Oracle also has a lot of new features that are truly
awesome. Like Audit Vault, and data masking.

PG is pretty awesome, but most enterprise level applications do not support
it. Same issue with MySQL. The learning curve is also steeper for these. I
don't believe MySQL, or PG can come close to SQL Server, or Oracle.

------
thornygreb
Longtime Oracle dev/dba. I have been using PG now for over 6 years, and it is
my #1 choice for new projects if possible. Oracle beats it in instrumentation
and tooling and to me the Oracle RDBMS documentation is more thorough. The
implementation of MVCC is radically different and I'm not too keen on
vacuuming but it is a necessary evil tradeoff for the benefits in PG's
implementation. And above all I can put PG on a box with 40 cores and have
dozens of hot standby's for $0 in licensing fees.

------
stonemetal
In my experience MSSQL and Oracle are more or less interchangeable. I have
never run across PG running at the same sort of scale as the other two, but it
seems to be a contender. Though I would have to agree with breakingcups, PG
lacks tooling compared to the other two.

~~~
tuyguntn
Can you say little more about what kind of scale are you talking?

~~~
stonemetal
Not very big, 10s of millions of rows. The biggest Postgres install I have
gotten to work with was in the tens of thousands of rows. I am sure Postgres
could handle more I just haven't seen it in the wild.

------
cmollis
oracle is great, has lots of great tools, and seems to be pretty solid. It is
also ridiculously expensive. I have found Postgres to be essentially equal to
it in terms of programmability (triggers, stored procedures) and.. it's free.
It keeps getting better.. lots of larger scale startups use it (like
instagram), and is essentially eating Oracle.. particularly where Oracle plays
best (at the fortune 100 corporate level). Most of my clients have plans to
migrate to it, or are actively doing that. I've used Mysql for smaller stuff
and it's ok..why use it when you have postgres. The license is better anyway.

Haven't used MSSQL in years, but it's very good (on Windows).

~~~
thorin
Oracle XE is good, free and still pretty good but you are limited to
small(ish) amounts of data. You can do most of your testing and dev with it
though. There are a number of options such as Standard One which offer pretty
cheap licenses for most of the functionality you'd need to compete with
Postgres and MSSql.

That said, I've had great experiences with Postres and MSSql too, it's just
that I learnt all my core db stuff from Oracle 7 and moved on from there.

I haven't bothered with mysql for some time. I think I'd always go for
Postgres in preference.

MSSQL and Oracle have many advantages when working in coporate/enterprise
environments and you probably won't have to worry about licensing costs so
much then!

------
cafard
Oracle: use it a lot, find PL/SQL an excellent language, wish that it were
less expensive.

MSSQL: Use it some, wish that T-SQL had more of the features of PL/SQL, don't
mind it.

PostreSQL: Limited experience, like it OK. May yet port some Oracle stuff
there.

MySQL: Don't mind it, but don't use it much.

------
bsg75
PostgreSQL has great language features and has been a stable OLAP platform.
Coming from MSSQL, the only feature I miss is query parallelism.

The lack of equivalent feature in MySQL makes it difficult to work with once
accustomed to others (OLAP context, not OLTP).

------
breakingcups
PG: Great in theory, virtually no GUI tooling that's up to the task. MSSQL:
Excellent, wish it ran on Linux.

~~~
samspenc
Have you tried Aqua Data Studio? Its not just for PG - can connect to quite a
few different DB types and works really nicely with all of them.

Aqua is commercial software, but pretty inexpensive, and we use it at my
company to connect to the different databases we work with.

~~~
breakingcups
I haven't yet, I might look into that.

------
fiedzia
MySQL: half-backed, inconsistent, full of quirks and traps PG: My db of
choice.

------
dalacv
I love Oracle XE (Express Edition - Free) and use it regularly for any side
projects. Oracle APEX is not bad either.

------
ibejoeb
edit: Sorry, I missed the "1 sentence" guideline.

I have a lot of Oracle commentary in my post history, but I would still like
to chime in again with a specific case that may be interesting to some people
here. I'm totally unaffiliated with Oracle, so if it sounds like a pitch, it's
just because I've had a long, positive experience with their technology.

There is absolutely nothing on the market, commercial or OSS, that can touch
Oracle Database. If you really take advantage of it, it'll be clear.

I wrote a couple of big financial software applications, and reporting is a
huge component. One of the key differentiators in my product vs the
competition is that all of the reporting is ad-hoc, whereas theirs is batch.
This is important to my customers, because they typically have planning and
modeling work to do, and waiting around for batches just won't fly.

There are a few ways to get this kind of ad-hoc reporting experience, but the
easiest is by directly issuing queries against the data. For this to be
viable, though, you need two things: An expressive data manipulation language
and the ability to exercise the hardware.

Oracle is the only database that delivers. Oracle's support for modern SQL and
its proprietary extensions (e.g., [1]) are incredibly powerful, but they're
expensive CPU-wise. However, Oracle will parallelize these, effectively
running a single query over n cores.

Without those features, I'd have been building change monitors, data diffing
algorithms, solvers, and all of that stuff to support background partial
recomputation. Job runners, queuing, cache invalidation... man, just thinking
about all that stuff again makes me realize just how nearly impossible it
would have been to get this company off the ground.

Also, a note on pricing: it's expensive if you need these features, and
licensing truly is arcane, but their are some pretty good options now. Several
others have pointed to Oracle's free and cheap offerings, like XE and SE1, but
Oracle is available on RDS with licensing included. You can quite literally
amortize the licensing cost by the hour and quit anytime, and it's nothing
more than an option when you provision your instance.

All that said, if you really need it, buying a $40k license is an awful lot
cheaper than buying a couple $150k engineers to make it work on some other
platform.

This has really informed my philosophy, especially when doing things on a
startup budget. Get the best tools you can and use the hell out of them for
all they're worth. There are thousands of engineer-years behind Oracle, and
they've tackled a lot of hard problems for you. It's always a shame when I
look at an operation and see people doing suboptimal reimplementations (you
did you own materialized view?) because nobody read the docs...

[1]
[http://docs.oracle.com/cd/B19306_01/server.102/b14223/sqlmod...](http://docs.oracle.com/cd/B19306_01/server.102/b14223/sqlmodel.htm)

