views:

1080

answers:

18

I'm about to start developing a product (in .NET), and I'm evaluating open source database engines in order to avoid adding licensing costs to the overall cost of my product.

Which ones do you know that are potent? Is MySQL a good alternative? What kind of website load can it support?

Do you have any experience using an open source database in real life projects?

Or do I just need to use Oracle or SQL Server to develop a robust product?

+13  A: 

MySQL is good enough for Flickr, Facebook, Wikipedia, Google, and YouTube to use it (says Wiki) - I'd say they each serve more load than you're likely to reach. I believe WordPress.com - four million+ blogs (stats), including CNN, Time, etc. blogs - also uses MySQL.

Oracle/MSSQL are definitely not required to develop a robust product.

ceejayoz
That's a little misleading: Google uses MySQL for some things, but Google's search engine does NOT run on MySQL
Joel Coehoorn
@Joel: But a modified and enhanced version of MySQL. They built it on top of that. It would be unimaginable to think Google uses Oracle as their database. For the amount of cpu's they have and the specific work they do, it wouldn't be feasible to use other thing.
OscarRyz
Of course for the architecture the previously mentioned websites use, the database is just one of the whole. I mean, MySQL alone won't support that amount of load by it self. But they do because of their infrastructure. Again, the license cost per cpu offered by mysql is key here in that big picture
OscarRyz
Google's search engine, as well as most of their main properties, use their proprietary db called BigTable.
Adam Lassek
Saying Google uses MySQL is about as helpful as saying Google uses Linux, or Windows, or OS X...
Matt Rogish
I like this answer, but it's a little in conflict with this one I also like: http://stackoverflow.com/questions/398704/open-source-databases-capabilities#399281
Juan Manuel
@Matt - if someone asked "can Linux work in the enterprise?", Google would be a great example of Linux working in the enterprise. I'm not sure what your point is.
ceejayoz
Yes some big sites use MySQL, but their true cost to operate versus SQL Server, DB2, or Teradata is comparable. These sites have dedicated dba staff to optimize everything and developers to create their own extensions. It is not a good assumption to assume the OP has similar resources.
mson
As I stated elsewhere in this question's comments, any large site is going to see large costs for database setup and administration, regardless of platform. MySQL just reduces licensing costs, not administrative ones.
ceejayoz
+2  A: 

MySql should be fine for your needs...

it works for lots and lots of businesses.
Note also that it has lots of support, developers who are familiar with it, it is still in developments, etc. Look no further.

Tim
A: 

Oracle also has a free version, called Oracle XE.

tuinstoel
+4  A: 

This is a tough question to answer. The nature of your application the nature and the number of your database interactions. I can say that both MySQL and PostgreSQL will work as well as any DBMS in most situations.

Jim Blizard
+1  A: 

SQL Express is free, as far as I know. It may have some missing features from the standard SQL Server but it allows you to distribute it with your product and your clients may move up if/when needed.

Otávio Décio
+6  A: 

This wikipedia link should help, it compares most of the big relational databases. http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems Mysql should work fine assuming you write your code properly, it's what wikipedia runs on so should support almost all applications if configured properly and run on good enough hardware/clustering setups.

Jared
Cool link, thanks
Juan Manuel
+2  A: 

Wikipedia (imho one of the best web worlds ever developed) runs on MySQL so it can't be all bad. I have the pleasure of being able to code against whatever DB platform suits the projects needs and while there are some fun features of MSSQL that I really get a lot of mileage out of, MySQL is what all of my open source packages run off of and I can't say that I have any complaints about that setup at all. If you have a choice between PostgreSQL and MySQL I say go the PostgreSQL route because if you get deep into stored proc and function development PostgreSQL will give you a much more robust feature set to work from.

thaBadDawg
A: 

If you're just worried about licensing costs, there is a free edition of SQL Server that's pretty capable. There's a size limit involved, but if you outgrow that you're probably also pulling enough revenue to afford a for-pay edition.

Joel Coehoorn
+2  A: 

It all depends on what you're looking for in a database. Realistically, how big are your data sets? What sort of load are you going to need? Are you going to need clustering and/or partitioning? Are you going to have a full-time DBA? Are you going to need any extensions on top of what you get from vanilla SQL?

Is the app a true 'green field' roll-out or is it going into an environment that's already got an existing infrastructure/staff to support an existing DB?

MySQL has reached the point where it can handle most anything you'd want to throw against it but 'free' and 'can do the job', by themselves, aren't enough to make the decision.

Sean McSomething
+1  A: 

I Agree with ceejayoz, mysql is a mature DBMS. No frills, no limits, lightining fast, fault tolerant and robust as needed.
Definitely It deserve more than a chance.

As open source addicted, though, I have to point that mysql is a licensed under the GPL.

Do you plan to release the project under a GPL compatible license? This is a requirement often overlooked.

Edit:
I got some critics on my punctualization, I had to explain better my position

Reference on GPL regarding linking of closed source code to a GPL one
http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#MereAggregation

You should read the faq, expecially when it say

... pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program

I was already bitten when the mysql interface libraries switched from LGPL to GPL, in the 3.80 version. We, our legal department, had a discussion with MysqlAB, if I remember correctly the name of the firm before the Sun acquisition, on this point and the options they gave us were to acquire a non GPL commercial license or remain stuck with the 3.80 version of the library.

By the way the .net connector is GPL, it is clearly stated in the download page
http://dev.mysql.com/downloads/connector/net/5.2.html
and I don't think you, as everyone else me included, can find useful to talk to the server via raw tcp communication with a connector available.

Two other words on mysql % php: php license and mysql license are incompatible eachother Sun, and MysqlAB before, had to insert a license exception tailored to php and other opensource projects to permit php to support mysql. It was a long and passionate diatribe and I was disappointed with the result, we got a clear chance to have php released under GPL.

Eineki
Unless he's modifying the MySQL code or linking against it, it shouldn't matter what license MySQL uses. Connection over TCP/IP is sufficient decoupling to consider your application separate and thus not bound by the GPL (not sure about the library you need to use to interface with MySQL though)
rmeador
Needn't be GPL-compatible. That would forbid PHP from using it, as the PHP License is not GPL-compatible.
ceejayoz
Hi meador, The .net connector is GPL too and, the GPL Faq is clear on considering link the use of a GPL program via pipes or socket. To circumvent it you should grant compatibility with at least two dbms, more details and reference in the edit of the post.
Eineki
PHP is coompatible with MYSQL only by a license exception. You can find more info, and a link to the text of the exception in the post I've just edited
Eineki
+1. I don't understand why this was downvoted. It's a vitally important point if you need to distribute your application to others.
MarkJ
A: 

Slightly offotpic answer ( for the interest shown in mysql and the wikipedia ) :

Here's a link to the server layout diagrams of the Wikipedia over the time.

http://meta.wikimedia.org/wiki/Server_layout_diagrams

Taken from:

http://en.wikipedia.org/wiki/Wikipedia#Software_and_hardware

OscarRyz
+1  A: 

Also note that MySQL .Net client lib is GPL-ed. And if you use it, you must release your app under GPL licence. And you must not distribute MySQL with your product.

Or you can purchase MySQL, but than advantage over MSSQL/Oracle goes away.

Or you can use 3p client libs that conect directly to MySQL without GPL libs.

All in all, not an easy decision to make. Think twice.

dmajkic
+1  A: 

A note regarding MySQL and GPL: I believe if you are not distributing your application's binary (ie, your product is a web application that only you host and is not deployed to your clients) then you can use the GPL license without needing your application to be open sourced as well.

Abdullah Jibaly
+1  A: 

As you are developing in .Net, you may find MS SQL Server useful.

You can code CLR stored procedures which can be super-efficient for building treeviews of data from lots of sources for example.

It is also free in the Express Edition with Advanced Services.

That version includes reporting services which is pretty good.

MySQL is also very good as a database engine, fast and free, but as you are already using .Net I would consider MSSQL first.

pro
A: 

I have used MySQL and Postgres for more than five years on and off, and both are good. Do note, however, that MySQL vs Postgres is one of the holy flamewars like Linux vs Windows etc.

Both should be OK for most everyday uses. Note that advanced capabilities such as clustering, hot backups etc may take an effort/research to set up.

Postgres is more "Oracle-like" in syntax and in some of the features, Indeed, it has been occasionally called "poor man's Oracle". MySQL I am not sure what to compare to.

Of the two, Postgres has for a long time been considered more robust, and MySQL - faster, however, both advantages are by now somewhat debatable.

Note also that while Wikipedia and Flickr do run MySQL, nobody says how many actual MySQL servers are needed for their backend.

There may be a number of features that one of them misses/implements compared to each other as well as commercial databases. If you would specify your particular needs (clustering, triggers, sequences, ACID-compliance, good scalability?), it might influence, which datbase you'd be better off with.

Gnudiff
+5  A: 

MySQL is not as cheap as you think.

The big orgs that use MySQL spend considerable resources on keeping it running and often have to develop their own extensions. There have been several recent articles from MySQL insiders about the poor quality of their product. I've been a user of MySQL for several years and the quality of releases took a precipitous drop after change in ownership to SUNW.

I realize that MySQL can be optimized and made to run well, but I'm not a dba and cannot afford to have a dba on all of my projects. I have several very complicated queries that sometimes cause the system to run out of memory. I am currently in the process of migrating my systems over to SQL Server Express. The test queries run significantly faster on SQL Server Express than they do on MySQL. If you are not very strong in databases and need a robust and fast system, I would not use MySQL. SQL Server Express is made more for developers with middle of the road knowledge of databases. They've automated and performance tuned a lot of things that you would have to do manually on MySQL.

On the other hand, if you are very comfortable with databases, you may want to consider PostgresSQL. It is open source. It's not as user friendly as MySQL, but from my cursory understanding, it is more powerful and much more stable.

bottom line - MySQL used to be a good option, but consider SQL Server Express and PostgresSQL as better current alternatives.

EDIT:

here are a few of the references. there were 2 other very scathing ones - but i got them off of reddit.

monty-says

was it a good move

destroying mysql

kick in the teeth

criticism

random forum post

what's going on

mson
Very useful, thanks
Juan Manuel
No database is going to be cheap for a huge site.
ceejayoz
*There have been several recent articles from MySQL insiders about the poor quality of their product* - Have you any reference of this, I'm very interested?
Eineki
@Eineki - are the linked articles helpful? I can't find the really scathing ones where a someone was furious at MySQL for hosing his production system...
mson
The definition of Quality in the above post is not clear. I agree with ceejayoz, DB are expensive does not matter if Oracle, MySQL or MSSQL. And if MSON is using MSSQL Express means his data is below 4Gigs, any DB will work with that amount of data, unless the design is very poor. Post is subjectiv
Geo
+1  A: 

I have migrated a large development from Ms SQL to PostGreSQL (motivated by similar reasons to yours) and have been pleasantly surprised.

I have found that there are a few caveats:

  • Expect some learning curve around Stored Procedure ('functions' in PostGreSQL). If you are familiar with Oracle's plsql, this might not be a big deal.
  • The npgsql .Net connector has some stability issues (esp with .Net 2.0). However the developer community is v. active and responsive to queries and problems. (There are more stable, commercial connectors available)

(As a result of my experiences and in the quest of developing a codebase that can supports a number of databases, I have found that it is best to remove most of not all of the logic out of the query language. With this approach PostGreSQL has perfomed more than adequately and the learning curve has not been onerous)

Al
A: 

If you are developing a product for sale, MYSQL is not free. There is a fairly significant license cost to release the database with the program. Take a look at Firebird. Very capable, free, and there is a small footprint version in addition to a full database server.