Hacker News new | ask | show | jobs
by justlearning 5469 days ago
Having Oracle as your db doesn't mean that you are not working on interesting problems. Every company is not a startup. Some of us work on well established products used by huge customer base who use Oracle and in turn we are forced to.

Above all, are you helping a customer? solve his problems instead of compounding it - that my friend is more important than choosing Oracle or Mongodb.

1 comments

    Having Oracle as your db doesn't mean that you 
    are not working on interesting problems
First, I consider consultancy for customers using Oracle to be OK, as long as you earn something from it.

But if your company chooses Oracle, it means that you're bogged down by legacy, stupid company processes and/or clueless managers.

And in most such environments, the harder you try to change it for the better, the harder it fights back, putting yourself in an awkward position in which you are considered the bad apple of the team. So you end up either adapting (not giving a shit), quitting or finding some small project with no perspective for the company (i.e. less controlled) that can bring you pleasure.

Of course, some companies, like Adobe for example, use Oracle when it doesn't impact their core competencies, as it's a safe choice for corporate types. But a company like Adobe doesn't earn money from projects that are relying on Oracle and other projects inside Adobe are also using HBase and MySql and their own distributed file-system that can be queried and so forth.

Either way that quote is correct. I'm not promoting the latest fads (personally I'm not into NoSql unless it makes absolute sense), but you can safely ignore companies that make decisions based on brochures and lap dances.

I hope you realize that a company might choose to use Oracle for a reason other than "brochures and lap dances", and that a "legacy" decision to use Oracle doesn't necessarily mean you are "bogged down" or that the decision was stupid.

I don't understand how using Oracle for your RDBMS is suddenly equated with all the things you mention.

Such as? Really, I'd like to know the reason for why a company might choose Oracle.
Oracle costs at least twice as much as any other databases. Yet companies still buy it. Why do people buy things that cost twice as much? Hint: it's better.

Forget price for a moment, any feelings you might have for Larry Ellison, the good/evil nature of the company, or whatever. Consider the software itself.

Many people aren't all that familiar with the basic things a database is supposed to do. The list is large. I can't possibly give it justice off the top of my head, but here are a few that come to mind: make it possible to see data in a consistent state (as of a single point in time), without being blocked, even as other people are changing it; support "transactions" -- a group of requests that either all succeed or all fail -- so that the database cannot end up in an inconsistent state; guarantee recoverability to a consistent state even when people change their minds, statements fails, power fails, hardware fails, or all of these things happen at the same time; and many, many other things like security, support for the relational model, SQL, joins, etc. Real databases aren’t simple key-value stores.

Historically, Oracle obtained a huge lead in market share because it delivered the most complete mix of these basic things long before anyone else.

Something not widely recognized, but that should be obvious to programmers, is that low-level architectural decisions have a huge impact on how well a database performs these basic duties. Oracle maintained its lead for a long time because it got many of the low-level architectural decisions right. It is really hard to catch Oracle if you are trying to polish up a bad locking model, for example. Oracle still does the basics better than most. That, in and of itself, is a reason to consider Oracle.

Oracle remains viable, even as others continue to catch up, because Oracle builds on its solid foundation by adding additional capability and features relentlessly. I challenge you to read the new features guide for any new release of Oracle and to remember just the names of 20% of the new features. The Oracle documentation, as of 6 or 8 years ago (10g), was 40,000 pages. No telling what it is now. I can tell you this. If you have something you need to do with databases, Oracle probably figured out how to do it a long time ago.

I, personally, am a huge fan of PostgreSQL (and it’s freeness), but I recognize that Postgres is never going to be able to touch Oracle in features. It’s impossible. Working with Postgres is just going to require a lot more manual labor. Some things aren’t going to be possible. Performance may just have to suffer sometimes. Let’s hope Postgres does the basics well (it does). That’s the most important thing. But when it comes to building spacial indexes on hierarchical dimensions, or whatever, Postgress just isn’t going to have a feature for that. I’ll have to figure that one out for myself.

One key point: if you need to build a large, high-performance, data-driven application that provides nearly instantaneous response for thousands of simultaneous users, Oracle is one option that can get the job done. If you need to build something huge, say billions of rows, that provides nearly instantaneous response to dozens of users, Oracle is one option that can get that job done. So no wonder that some companies consider Oracle.

The last thing I’ll mention is that it takes a lot of time to learn something like Oracle. I would be surprised if after a year of using it, for example, that you can really make it hum better than any of its top competitors. If you do use it for a while I think you’ll find that it is really good at the normal things and in a different league when it comes to the unusual things. This comes in handy when you are being paid to get things done (by a company that can afford Oracle) -- hence the reason that most startup-oriented people don't have much appreciation for Oracle.

"Oracle remains viable, even as others continue to catch up, because Oracle builds on its solid foundation by adding additional capability and features relentlessly. I challenge you to read the new features guide for any new release of Oracle and to remember just the names of 20% of the new features. The Oracle documentation, as of 6 or 8 years ago (10g), was 40,000 pages. No telling what it is now. I can tell you this. If you have something you need to do with databases, Oracle probably figured out how to do it a long time ago."

Are these good things?

We can also reverse this argument: if you're using Oracle, you will never have a use for 99% of its features.

Or - as I picked up from some long forgotten blog post:

If you need Oracle, you'll know it. If you don't know that you need Oracle, you don't need Oracle.

I run MySQL, Oracle SQL Server, hundreds of databases, a couple in the 'many thousands of queries per second' range.

There are reasons for each database platform.

> But when it comes to building spacial indexes on hierarchical dimensions, or whatever, Postgres just isn’t going to have a feature for that. I’ll have to figure that one out for myself.

In this case, yes it is, Postgres probably has the best type system and extensibility of all SQL databases. GiST and GIN are very good technologies that also exist in Informix.

If I had to choose something that is missing in Postgres and very far away for sheer want of implementation effort, it's parallel execution of queries.

Oracle RAC is also quite a crazy and neat feature, except when it has problems, in which case you get even more crazy for that crazy.

On the other hand, Oracle is also not a strict superset of the features in PostgreSQL. For example, 9.1 has the only credibly fast implementation of SERIALIZABLE level isolation that I am aware of. There are also interesting features like "index exclusion constraints" that have no equivalent in Oracle, and solve problems hard to solve otherwise (example constraint: there are no overlapping circles in this table)

Oracle is a bear to get setup. Nearly impossible, best I can tell, but the feature set is incredible. It's like Excel 2003 -- pretty much every feature you might want is in there somewhere, just need to find out how to expose it. For example, I've seen people say that its auditing and regulatory support has no peer. I don't really know that stuff well, but the ppl who told me spent non-trivial amounts of time with other solutions to see that Oracle made the most sense.

My point, if all you ever need from a database is solved with key/value store then Oracle is not mildly interesting.

Because they might want to run some of the applications that Oracle sells that run on top of their database - the example that I am most familiar with being Oracle Hyperion HFM which is by far the leading financial consolidation application for large corporations. Even Google uses Hyperion:

http://www.google.com/intl/en/jobs/uslocations/mountain-view...

[If 12 dimensional hierarchical databases with complex logic are your thing then Hyperion is really rather cool in a perverse kind of way].

BTW If anyone here is interested in this kind of space I have had some interesting experiences in building extensions to HFM...

  true clustering (Oracle RAC)
  multi platform
  support
Amazon uses Oracle. I think to completely disregard Amazon because of this fact would be a mistake.
As does Facebook I believe
Facebook uses MySQL as it's primary data store, with some hbase, cassandra, and other more minor usage storage solutions in various places.
Facebook uses Oracle for certain things.