views:

208

answers:

5

As a C# developer that uses MS SQL Server heavily I'd prefer to use what I know; however, for a small project the licensing costs are prohibitive and so I'm looking at using a free open source solution such as MySQL. Which of the free RDBMS solutions are the best in terms of stability, performance, features and ease of use for someone familiar with MS SQL Server?

RDBMS I'm considering so far are (in alphabetical order):

+5  A: 

If SQL Server Express is an option, it might be the best choice for you. If not, I'd pick up MySQL or PostgreSQL from your list, they both are good choices. However, MySQL has IMO more user-friendly admin tools (see MySQL GUI Tools) that you may like if you aren't familiar with the command line.

If you are interested by a comparison between MySQL and PostgreSQL, check MySQL vs PostgreSQL from WikiVS, the open comparison website.

Pascal Thivent
OMG Ponies
Thanks. I had assumed some form of purchased license would be required for SQL Express in any live public facing system, but it appears I was wrong, thus it's probably the ideal solution.
locster
+9  A: 

I would recommend PostgreSQL over MySQL. I think it's more robust. But it's got more of an Oracle flavor, in my opinion.

UPDATE:

All the suggestions provided to date are relational in nature. There are other alternatives, such as object databases. There's a whole "no SQL" movement out crying in the wilderness for non-relational alternatives. They might be worth a look as well.

duffymo
Do you have some specific examples of areas where PostgreSQL is more robust? I know very big sites that are running MySQL and tend to think that if it's good for them, it'll be good for me too. So I'm curious. To me, both MySQL and PostgreSQL are good products and I would actually recommend to use the one you know the most. For someone not familiar with any of them, I think MySQL is a bit more "user friendly".
Pascal Thivent
For a long time, postgresql was the clear winner when you actually counted up the features.. I think mysql finally has triggers now, but last I looked they still didn't have an inbuilt language for stored procedures (both of which postgres had for forever)... that said, mysql was always slightly faster... The trade off used to be features / performance...
dicroce
@dicroce I agree that PostgreSQL might have more features (I do not use them but that's another story) but my question was about robustness. And because claming that PostgreSQL is more robust doesn't convince me (and could be interpreted as MySQL isn't robust which is IMO not true), I'd be interested by some references/studies/experiences prooving that.
Pascal Thivent
@Pascal, PostgreSQL has had features like triggers and stored procs a lot longer than MySQL has. I never liked the idea of having one table model that enforced referential integrity and another that didn't. PostgreSQL just took care of all that. I don't have any studies - it's purely a personal opinion, which is why I wrote "in my opinion." I thought that should have been clear enough.
duffymo
We use postgres, and I'm pretty happy with it. It has good documentation that explains which features are standard SQL and which are postgres-specific. Which ever choice you go with, I would hope that you resist the urge to use SQL statements that are peculiar to that implementation. This is most important if you plan to use an alternate, in memory database like SQLite for your unit tests.
Ewan Todd
@duffymo Well, I took the "in my opinion" for the Oracle flavor part as both are in the same sentence. Of course, you wrote "I think" about robustness but, no offense here, without proven facts, this is a kind of free statement that is closer to FUD than to valuable information IMHO.
Pascal Thivent
But every statement in this thread, including yours, is a free statement without proven facts. The facts that PostgreSQL has had a functional language longer than MySQL has, and MySQL uses several table engine models that don't all enforce referential integrity are the only hard evidence that has been presented. You've provided nothing besides your opinion, yet you give it weight as if they were proven simply because they came from you. Sorry, I'm not buying it. Why are you so defensive? Just curious.
duffymo
You're right, I didn't provide evidence neither but "ease" of use (which is the only criteria I mentioned) seems subjective to me so difficult to prove, where "robustness" is more technical and thus objective. However I'm really not saying my opinion is better because it comes from me. But maybe I'm reacting too defensively indeed, in which case I apologize.
Pascal Thivent
Accepted. No worries. For the record, I like MySQL and use it myself.
duffymo
A: 

MySQL?

There's no reason to use MySQL over PostgreSQL. Although MySQL seems to have addressed some of the product's worst flaws, they general attitude towards RDBMS' theory makes me very wary of them. And there's certainly lots of things still going against them:

  • Awful, terrible documentation
  • The fun game of choosing table engines so that you get the functionality you need
  • Modifying your data without warnings! Silently dropping data! Silently ignoring constraints!

... and you can go on... The only plus I see towards MySQL is the builtin replication.

There's also SQL Server free editions, no?

alex
"Modifying your data without warnings! Silently dropping data! Silently ignoring constraints!" - The only single human account of that I can recall is from a ROR developer who did not know what he was doing. Can you give me an example of some query or anything MySql which *will* modify or silently drop my data without warning?
karim79
So much FUD is laughable. Please provide some references, some facts. not just free bile. Thanks.
Pascal Thivent
If you don't use InnoDB table model, you don't get referential integrity. That's something that MySQL itself freely admits. Choosing table engines is a fact as well. None of this is FUD, as far as I know. Pascal, maybe you should reveal whether or not you have an affiliation with MySQL or just merely attached and defensive.
duffymo
I have no affiliation with Sun/MySQL and I like MySQL **and** PostgreSQL. I actually think that you can achieve almost the same thing with both of them (if you aren't using triggers or stored procedures which would be a good thing). But I do **not** find MySQL's documentation terrible, I do **not** find choosing the table engine that hard (you want referential integrity, choose InnoDB, MySQL gives you the choice), I've **never** heard about silent drops or data modifications. Now, call this how you want, but I do not agree with it.
Pascal Thivent
Not all features are available for InnoDB tables, such as full-text indexing or spatial indexes ( http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html ).As for an example about silently dropping data, I believe that, for instance, inserts will truncate column values to make them fit into a column without warning (see http://sql-info.de/en/mysql/gotchas.html#1_13 ).If I have some time, I'll try to dig some highlights of the documentation...
alex
+1  A: 

Just an idea ...

Sybase offer a free version of their enterprise product 'ASE' - may be worth a look. It's somewhat hobbled - can only use up to 2G of memory and 5G total of data on disk. Depends just how 'small' your project will be. Given the shared parentage of SQL Server and ASE, it might be worth a look.

martin clayton
+1  A: 

If your experience is with SQL Server, have you considered SQL Server Compact? This is a free, in-process RDBMS compatible with SQL Server that you can link to your app. Performance and features are excellent for applications that do not require multiuser access, and it does not requre an admin install.

Dour High Arch