Poll: What database does your company/you use?

228 points by rorhug ↗ HN
Please upvote this if you would like to see more people take the poll.

This has been asked on occasion in the past but like all things, database preference/technology changes quickly. Let's see what people are using today.

If you think I've left out an important one, leave a comment and I will try and edit the post.

100 comments

[ 3.7 ms ] story [ 169 ms ] thread
/dev/null
Which only support one operation: DELETE. Isn't it?
INSERT works fine too, but you cannot SELECT tho :(
memcached as a database is a stretch.
MemcacheDB and memcached are both databases. You put data in, you get data out (if it exists).

In CAP theorem they are CP.

No SQL Server?
I have it in as 'Microsoft'.
That could also mean Access, unfortunately. Microsoft SQL Server is the name most people would be looking for.
No CouchDB?
CouchBase (Couch, Membase included)
CouchBase isn't the same as CouchDB.
PostgreSQL and MySQL have more in common than Couchbase and CouchDB
No Solr but ElasticSearch?
The reason I thought of adding ElasticSearch in the end was because some projects have started to use it as a DB on its own.
ElasticSearch and Solr are both search engines built on top of Lucene. ElasticSearch just has all the hipster hype these days. Maybe update the description to include all three.
Lucene isn't really a database, though.
We have been using Solr on it's own as a database for years. Many times I hear the "don't use solr as a database" rhetoric but honestly for our usage it is amazing. We're using it as a document store and querying using fulltext and key/value indexes. It is fast and reliable and has handled millions of documents pretty easily. I've been happy with it.

Currently evaluating ElasticSearch and it looks really promising also. We may move over to it as it seems to have a bit more momentum and better support for cloud/scaling.

At work i inherited a mysyiam,no foreign keys, no transactions,duplicate indexes,bad indexes, no composite indexes, no backups mysql db and many other stuff.

But at home and for personal projects i use postgresql + it's advanced features. So voted for both.

The vast majority of places I've worked at used MySQL, which isn't surprising considering most have been LAMP shops. Only one Postgres, and one MSSQL
Currently using Postgres, but not utilising any of its more powerful features.
I'd start with going over the points of this article (assuming you haven't done just that:) -- https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Serv...
The PostgreSQL 9.0 High Performance book has been great for us, goes in depth into most interest variables that you can tweak on your instance to make sure you're making the most out of your machine's resources: http://www.packtpub.com/postgresql-90-high-performance/book

A bit of a lengthy read, but worth it.

Seconding this. Packt Publishing is really hit or miss, but PostgreSQL 9.0 High Performance is a hit.
Virtuoso Open Source
Virtuoso is great for handing large-ish graphs and then being able to use SPARQL to walk the nodes. We used it at the last company I worked for and we were able to get fairly good performance out of it while walking hundreds of thousands of edges. I think it would have scaled even beyond that, however the python RDFlib bindings we were using were a bit slow.
Would be interesting to know the context; small or large company / is there a strong IT focus or is IT just an internal service for the company, etc; think that may give more telling results (i.e. enterprises that buy off-the-shelf are often forced the Oracle/SQL-Server route causing them to select the same techs for bespoke systems to limit DB diversity).
I think the only easy way to find that sort of stuff out is through the comments as HN doesn't allow for much customisation. It has its upsides though.
Sybase ASE and Sybase SQL Anywhere are not listed, yes they are different.

If you are going to have column stores, you should have InfiniDB.

And if you are going to have SQLite, you should also list MS SQL Server Compact. MS Access is also a viable option, also DBase and Filemaker.

Clustrix and NuoDB should also be in the list if you are listing NewSQL systems like VoltDB.

I am sure there are others :S as a DBA would be interested what businesses or systems only back onto column stores without a traditional RDBMS or a modern NoACID system.

Sorry. There are hundreds of Database projects and I can see where you're coming from. I added the most popular and had a search around for some smaller ones that seem to be gaining traction. The comments should suffice otherwise.
Ask HN: Has anyone ever considered "MS Access a viable option"?
I freelanced once for the local VA hospital and they sure tried!
"Access, why would we need that? We already have a shared folder with all our Excel sheets"
This is true, and several of the world's biggest companies run that way. Several-hundred-megabyte spreadsheets, with VBA interfaces copy & pasted between them; can't change it because the unknown cost of breaking it is potentially greater than the known cost of hiring an entire department of people to do one database server's job :(
(comment deleted)
It'd be nice if HN sorted polls by points
Only after you had voted and reloaded the page. Otherwise the effect would be to promote the most popular options.

Ideally when you hadn't voted, the ordering would be random.

This is not a popularity vote, it's a vote on what DB you actually use. For a "Best DB system" question, you need to evaluate each DB and rank them all.
It has a lot of options, people will answer a few, get bored... scroll down and read some comments.

The options towards the bottom of the list may not get as much attention and votes even if they are used by people.

If it were alphabetical, people might hunt and peck for the one they use most, e.g. PostgreSQL, they might then see things around there (memcached) but fail to scroll back up and vote for Custom too.

Random deals with it well enough without even knowing the poll content or number of options.

I suppose it really depends on the poll. Answering ‘What is your age?’ would be frustrating if all the options were scrambled. But anything subjective like ‘What’s your favourite programming language?’ would certainly benefit from random ordering.
LDAP?
(comment deleted)
A word of opinionated advice to anyone deciding on a database to use for their new project: Just go with something popular (MySQL, Postgres, Mongo, etc.), or go with an Amazon hosted cloud database if you really don't want to set anything up (RDS, SimpleDB, DynamoDB).

There's no good reason to start a project with other databases. If you're worried about the scalability of something like MySQL when you haven't even got your first 1000 users, your priorities are messed up. Finish your product and get your users first. And I hope to god if you DO get your users and I ever have to maintain it, it's not running on some bullshit like Tokyo.

I don't think this is terribly good advice. Many databases have specific domains in which they excel. I agree you shouldn't be worried about scaling before you have users, but you should absolutely evaluate different tools before picking one.
What you're saying is true, but worrying about scaling before it's necessary is unfortunately common, and I've felt the pain caused by this (modern) premature optimization.
Balance is the answer.

This tends to be true of all things.

This is good advice. I've scaled multiple sites to +3 million registered users and more than 1 million unique visitors with heavy DB usage. This is excellent advice for starting out. Along the way we found areas that could be improved and we were able to move quickly to them because our underlying DB was standard stuff. We knew what areas were breaking down and then fixed them with targeted moves to other DBs and things like memcache. Yes, each DB has a specialty but a good general DB gets you a lot of mileage because those specialty DBs do very little a general DB can't but that is often not true the other way.

You would never start a journey with cloudy destination and of a million miles by asking for a moon rover as your vehicle. As your journey develops you would start looking at other options or options for certain segments. Apps follow similar patterns.

What exactly is wrong with Tokyo Cabinet?
I would guess, very few people have any experience with it, let alone know its quirks and good reasons to use it.

I wouldn't build my MVP on obscure technologies just because they're hip or promise something useful when you have 1M users...

This might be good advice if you're building cookie cutter systems for clients that have high turnover of contractors, but for startups I think it's horrible.

I'd take one person that really groks devops and database internals well enough to make informed choices over a million one-size-fits-all SQL/Mongo+MVC devs. Any day of the week.

What do you do when that guy quits?
but for startups I think it's horrible.

Why? Wouldn't it make more sense for startups to color within the lines, in terms of getting features to market faster?

I'd take one person that really groks devops and database internals well enough to make informed choices

Funded or not, a startup has the responsibility to turn every dollar into a feature that creates revenue, not architecture.

First, I never said "don't use SQL, even where it makes sense." The original commenter wrote, "advice to anyone deciding on a database".

I strongly disagree with the notion that any practicing or aspiring creator should refuse to learn about and consider the full range of tools at their disposal, simply because there's a popular default choice.

Specialized tools provide a form of leverage to those who understand and employ them wisely. Every problem I have ever come across that is sufficiently difficult and interesting to warrant forming a startup requires deeper insight on a technical level than "just ignore everything else and use X".

Can you imagine if the founders of Google took this kind of advice?

(comment deleted)
Can you imagine if the founders of Google took this kind of advice?

As a couple of examples, Google started on clusters of relatively commodity hardware. For years, AdWords ran on MySQL. Google's advantage wasn't in the innovative architecture, but rather, in the PageRank logic, which led to leadership in other areas. The architecture supports the innovation, which is the competitive advantage; the architecture isn't the competitive advantage.

Better advice: just use Postgres.

Three reasons: 1) your data is probably relational, even if you think it's not, 2) if you have non-relational records, Postgres has JSON and hash storage types that perform better than most NoSQL databases, and 3) The architecture, standards compliance, and sheer capabilities of Postgres are all best in class. Seriously, if you want to read some good C, peruse the PostgreSQL source. Go Bears.

Unless you're trying to do some analytics (in which case, find a column store), or want to use it and forget it (Amazon's database services; and RDS is Postgres), Postgres is the way to go.

I personally would have included Google Datastore given how many app engine apps there are out there, but I guess Bigtable is a reasonable approximation of that.
I'm really happy to see PostgreSQL doing so well. They've been up against MySQL and Oracle for so long and really deserve it due to all the hard work the team have put into the amazing OSS project.
As far as I'm concerned, PostgreSQL should be the standard for any new free software projects. It's just too bad so many older projects (Wordpress, etc.) are tied to MySQL.
(comment deleted)
Redshift? or would that go under PostgreSQL?
For some reason I thought all major distros dropped MySQL in favor of MariaDB. The list, however, is not too short and it includes Debian, Ubuntu, RHEL, Fedora, openSUSE, among others.

https://mariadb.com/kb/en/distributions-which-include-mariad...

If you thought you were using MySQL, check your package repository!

(comment deleted)