views:

283

answers:

10

Hello, I am beginning work on a relatively large web-based application with the potential for large throughput and storage of a large amount of data.

My expertise lies in MS SQL Server but it is cost prohibitive for a startup project.

Is there any alternative to SQL Server (standard) that can handle the same throughput, has similar features and is free? Any advice is greatly appreciated, Thanks in advance, JP

Update

To answer a common point - SQL Express has limitations that make it a no-go for me. Specifically, correct me if i am wrong, it can address only 1 CPU, 1GB memory, has a max size of 4GB per database, etc. etc.

Also, I am aware of bizspark. The problem is that once the project goes live one must pay for server licenses (i.e. Windows/SQL Server). Great for getting up and running but after that you must pay. (Correct me if i am wrong)

A: 

Obvious answer: MySQL.

There's also PostgreSQL.

LiraNuna
A: 

It really depends on your requirements. If you don't need triggers or other "advanced" features, MySql will scale quite nicely. Otherwise, look at using PostgreSQL.

Whatever solution you choose, be sure to write your application to use a database abstraction library and use stored procedures. When your requirements change and you get money for a full commercial database, doing those two things will make the transition that much easier.

Jesse Weigert
Why do you feel that using stored procedures would ease the transition to a different DBMS. Stored procedures are generally not portable. Wouldn't _avoiding_ stored procedures in favor of rigorously standard SQL syntax promote DBMS portability?
Larry Lustig
@Larry: SQL statements themselves have different syntax for equivalent functionality. IE: SQL Server's TOP == MySQL/Postgres's LIMIT. Avoiding stored procedures doesn't really do much for database portability.
OMG Ponies
Well, I think avoiding stored procedures would make your system somewhat more portable. That's not to paper over the differences in different products' SQL implementations, but I don't think stored procedures PROMOTE portability. They may help performance, security, and separation-of-concerns, but not portability.
Larry Lustig
Why spend money! Both Mysql and Postgres are in regular use at large commercial web sites. They get uptimes which usually much better than sites using asp/sqlserver or Java/Oracle/DB2. I have never heard of a large commercial site switching from Mysql or PostgresSQL although a couple of Mysql plyers have defected to PostgresSQL.
James Anderson
@James: Exactly, but if the need arises....@Larry: Well written stored procedures should conform to the SQL specification, and switching to a new database would only require minor changes to the schema and stored procedures, but not any changes to your application. In fact, your application could be written such that the database engine could be configurable at run time. If you hard coded SQL statements into your application, then changing the database engine might require changes to the application itself.
Jesse Weigert
A: 

SQL Express http://www.microsoft.com/express/sql/default.aspx

MySQL http://mysql.com

Postgre SQL: http://www.postgresql.org/

I think the answers are obvious, however, if you're developing a .net app, I suggest SQL Express.

Baddie
+4  A: 

If you don't know already, Microsoft has a program called BizSpark that basically gives free software (well, there's a nominal cost of $100 for the program) to start-ups. The key requirements are that you are privately held, have less than $1m annual revenue and be less than three years old.

From the BizSpark Program Guide:

Technology offering: The BizSpark technology offering to Startups currently includes:

  • For design, development, testing and demonstration of your software application:

    • Software included in a Visual Studio Team System Team Suite (VSTS) with MSDN Premium4 subscription is included in this Program. Additionally, VSTS Team Foundation Server (Standard Edition) is available for use by the entire development team
  • For production use - that is, to deploy and host Startup's new "software–plus-services" application to be delivered over the Internet to Startup's customers:

    – Windows Server (all non pre release editions); SQL Server (all non pre release editions), BizTalk Servers and Office SharePoint Server for Internet Sites hosting, and;

    – Systems Center for managing hosting server operations.

You're quite right that SQL Server Express (and for that matter Oracle Express Edition) come with limits on CPU, RAM and amount of data.

That being said, how large is large? Ten million rows? A billion? 100 billion? You haven't defined what constitutes "large" and people have very different ideas about this. Ultimately you will find that join performance breaks down on any database (at different points) to the point where your application architecture will need some form of sharding/partitioning.

MySQL is good enough for this and does it on Flickr and Facebook, which are probably larger than you'll be.

cletus
+1  A: 

I'd rather suggest PostgreSQL as a first choice, but MySQL is a nice product too. An argument that may influence your decision is the big difference in licensing between the two: MySQL is GPL (or commercial) licensed including the client library, PostgreSQL is licensed under a BSD licence.

This table contains some (tech) points of comparison between SQLServer, MySQL and PostgreSQL. It's probably slightly pro-PostgreSQL but there are pointers to further info on that page and it should at least give a decent overview of similarities and differences.

fvu
+5  A: 

Opion 1: MySQL Option 2: PostgreSQL

MySQL has the larger user base, but fewer features. If you are used to the fancy things you can do with commercial systems, you might have a hard time adjusting.

The replication story is more coherent for MySQL than Postgres.

PostgreSQL is significantly more full-featured, has a better optimizer, but isn't as widely deployed.

Both are fine choices.

SquareCog
Option 3: Firebird
Si
+2  A: 

No love for the Firebird? It's free, open source, and when I've been able to work with it, an enjoyable experience. FAQ on db size.

For a nice front end, try IBExpert, not free but a good product at a good price.

Si
A: 

Given your vague hand waving towards the problem, I surmise that you are not likely to have any kind of scaling issues or need to worry about really any hard problems. Therefore, go for simplicity.
MYSQL has a ton of documentation and has some nifty windows installation tools.

sqlite could be an option, it's really simple to use, and will likely satisfy all your requirements.

Don't do any more research beyond these two, and just pick the one that seems easiest.

Also, this is a pretty dumb question that you could have answered with a simple Google Search

johnny
actually, i wanted discussion on the issue and believe this to be a valid question. if you had more than 17 points i would take your criticism more personally.
JP
A: 

Actually, have you heard of WebSiteSpark? It is a program from Microsoft that allows you (if you have less than 10 members of your company) to get MS SQL Server, Windows Web Server, and Visual Studio Expression all for free. BTW, I have been looking into this program myself but haven't yet signed up.

jle
+1  A: 

Three options:-

  1. Mysql - fast, simple, somewhat limited functionality, transaction management not bulletproof. Could be considered an alternative to SQLServer.

  2. Postgres - slightly slower, slightly more comple, full functionality, bulletproof transactions. More of an Oracle alternative.

  3. JavaDB - Good if Java is your program language of choice, full functionality, bulletproof transactions -- won't scale up as well as the other two.

James Anderson