views:

938

answers:

14

I have read this article from High Scalability about Stack Overflow and other large websites. Many large high traffic .NET sites such as plentyoffish.com, MySpace and Stack Overflow all use .NET technologies and use SQL Server for their database. In the article it says a source in Stack Overflow said:

As you add more and more database servers the SQL Server license costs can be outrageous. So by starting scale up and gradually going scale out with non-open source software you can be in a world of financial hurt.

Why don't these sites use MySQL instead of SQL Server?

A: 

Well, for one thing there are other, better, free databases (e.g., PostgreSQL). For another, the Microsoft ecosystem is designed to suck you in, getting you to spend more and more with the guys from Redmond.

Donal Fellows
Now that sounds like an objective answer, not calling for argument.
Gnoupi
@Gnoupi: Probably pretty accurate, though. Microsoft has been working towards making things easy to do as long as you give them enough money, much like most other software companies. The difference is that Microsoft has a bigger ecosystem than most companies.
David Thornley
+4  A: 

No Microsoft SQL Server Management Studio. For real. A lot of stuff is done there instead of raw SQL that happens in Open Source software world.

Pasi Savolainen
In the case of MySql, I think Workbench provides most of the same functionality. http://wb.mysql.com/
Andrew Lewis
@Andrew - You've obviously never used one or both of them. Workbench is nowhere close to SSMS.
womp
Hey, did you know that open source databases have GUI tools too!?!? For MySQL specifically, there is MySQL Workbench and SQLYog. Both free.
SkippyFire
SQLyog is much much better than SQL Management Studio.
HeavyWave
@womp - I use both of them quite a bit. Sure wb isn't as friendly or easy to use, but much of the functionality is accessible for basic app development.
Andrew Lewis
+5  A: 

I would guess that it's probably because it's really really easy to get started making a site with ASP.NET hooked into SQL Server. And for the sites you mentioned, speed to market was probably more important than getting the architecture "right" (not to say that SQL Server is or isn't the right choice - just that speed to market is the priority). Remember that a developer's job is to release software.

So long as one avoids using too many database specific features, it will be relatively straightforward to switch to a different database with moderate effort. But why bother unless your site becomes super-popular?

Edit: And if you become super-popular, you may even want to venture into the land of NoSQL.

Abtin Forouzandeh
This pre-supposes that SQL Server is a 'Wrong' architecture choice. Your phrasing: "Speed to market was more important than getting architecture right" <- Correctness of architecture has nothing to do with whether they chose SQL Server or MySQL. It has to do with whether they designed their application on top of the database correctly.
George Stocker
I would argue this isn't so much of an issue anymore since the MySQL Entity Framework Data Connector hides the underlying data store. Is anyone using MySQL for their production .NET site?
SkippyFire
@George - I agree. I worded that wrong - I was trying to say that choice of database technology is secondary to releasing the product quickly. Thats also why the word "right" is in quotations.
Abtin Forouzandeh
+4  A: 

Things are much easier to deal with when the technology stack is homogeneous.

If you want MySQL support for Linq-to-SQL, good luck. It's still very much immature. With SQL Server, it's a matter of drag and drop. Literally.

You can also conduct Database queries from within Visual Studio for SQL Server. I've never tried it for any other database, but I'm not convinced you'd be able to.

It's great to say 'Oh, MySQL is so much cheaper than SQL Server.' Yes, it is. But I'm not sure the integration costs are worth it; not to mention having to rely on Yet Another Vendor to provide support if something goes wrong.

George Stocker
you can conduct queries withn VS for other DBs if you have a data provider for it.
Brian
Which MySQL has - and is unfortunately very buggy in my experience.
womp
Use nHibernate. It is old and mature and is used in many commercial products.
HeavyWave
+2  A: 

You use what you know...

(IMHO) The Microsoft tool stack is brilliant. It works well, we learn with it and grow with it, as the technology grows. It becomes easier to use as you become accustomed to it (its quirks and idiosyncrasies).

MySQL is also a brilliant tool. It works, and works well. We could all have religious wars as to what tool is best, but remember it is just a tool to get a job done.

Now let's factor in the cost of the software - Plenty of Fish 2 years ago made $7M, do you really think they care how much their database/server software costs? SO is on BizSpark $0 cost for 3 years (that's got to hurt).

For the sceptics, FaceBook runs MySQL on/for 30K servers and MySQL Enterprise Unlimited Licences cost $40k so this is not necessarily cheap either.

I don't know about you, but for me when I make a ton of cash, I really won't care how much it "costs", because I am making more with it, than without it!

AJ
Depends on how you measure "making": if you're bringing in $1M/year but spending $350K/year on hardware and support costs, wouldn't you be interested in saving US$70K of that?
TMN
To play the devils advocate, large application CAN run on MySQL, but is it easy? Does it in fact scale well/easily? Just because you CAN do something one way doesn't mean you SHOULD. But I have nothing against MySQL. <3 Open Source.
SkippyFire
Having had experience with multiple MySQL/MSSQL implementations, I found (large) scaling out, was really easy for both db platforms. Being honest, I think if you "SHOULD" doesn't leave much choice, and you may miss out on that something "WOW"/"really cool" that the other side has...
AJ
A: 

The real reason is people usually go with MS SQL Server as .NET comes from the same brand. For instance PHP people always prefer MySQL over other databases. It's all mind set and people don't want to take any risk.

A: 

Any large enterprise site isn't going to care about licensing costs that much. What they want is fast, reliable data access and access to company technical support. They also want something that can easily be partioned to scale and that is designed for huge databases. They also want the easy availablity of performance tuning specialists, datawarehousing and Business Intelligence specialists, database developers, and database administrators. SQL Server and Oracle both meet these criteria. I really don't see MySQL as having as many people qualified to design and monitor large systems. I am Not sure how it stacks up on the partitioning and scalibility though.

HLGEM
A: 

It's just culture. People group themselves. It's natural. People who prefer open-source, will naturally choose LAMP (Linux, Apache, MySQL and PHP) for the same kind of project that people who prefer corporate support choose Microsoft IIS, Microsoft SQL Server and Microsoft .NET for. There is a good deal of human psychology involved in this, make no mistake about it. There is nothing prohibiting one from using IIS with PHP and MySQL, or Apache with Microsoft SQL Server, but the way it goes is as described above.

Shorter put, large sites do use either, but yes, not often the two you mentioned together.

amn
+6  A: 

Adding into what AJ said... Remember Facebook also pays C programmers to hack up MySQL code and also PHP code to get things to really work "well" for the amount of traffic they get.

Facebook already made statements in the past and this year about having wished they made a better choice.

As a matter of fact, for coding they're now compiling their PHP down to C++ code using HipHopPHP and about 90% of their servers are running the C++ binaries instead of the PHP scripts.

Their MySQL database might save them a dime or two, but the costs to maintain it, scale it, etc. is extremely intense.

A product like Oracle however would really allow you to scale seamlessly compared to MySQL.

I have a site right now that uses a lot of bandwidth on my database, large number of queries, and the truth is, scaling is a pain in the neck with MySQL and their Clustering product isn't that great and requires a license. Oracle right now has the best "grid" database setup but the costs are insane there...

Also, I code C# as well.. Let me tell you it's MUCH easier to integrate enterprise level sites with SQL Server compared to MySQL.

ETHODE Web Development
Wow..I never thought about it like that..Nice answer
Luke101
Scalability is definitely of the last concerns of a database and it shows from the fact they effectively AREN'T scalable. I'm definitely considering using a NoSql datastore in my application as the majority of site functionality really has no relevance on sql other than it's where I get my objects from.
Chris Marisic
Many MySQL/Oracle/SQL/Postgres DBA's will be throwing stones at you right now.NoSQL is not the answer. The rest of the world live in a relationship enterprise environment. NoSQL only fills a certain percentage of missing donut holes and will not be a long term contender to replace relational database systems.Systems like Solr, Casandra and other "index" database systems which do not use SQL are great for storing millions of records, but even the documentation from both realize that you're still going to run more queries against your database(s) with the data retrieved from their system
ETHODE Web Development
"Facebook already made statements in the past and this year about having wished they made a better choice." Very interesting. Any proof links? It would be very interesting to read one of these.
dotsid
A: 

I believe George has it on mark: "homogeneous".

Most of Microsoft's technologies are built to work together. There are direct hooks between .NET and SQL Server to provide additional functionality like cache management that just don't exist between .NET and MySQL.

IIRC, MySQL doesn't have built in cache management which is why Ehcache and memcached exist.

re Joshua's comment: "A product like Oracle however would really allow you to scale seamlessly compared to MySQL." Years ago, Sabre picked MySQL over Oracle for some high scale projects based on cost and feature set. AFAIK, it's still picked over Oracle unless you can prove through cost/benefit analysis why Oracle is the better choice for a project.

I think it really boils down to functionality, user knowledge base and interoperability.

Sometimes SQL Server is the better match, sometimes it's MySQL, sometimes it's Oracle.

iKnowKungFoo
A: 
  1. Less compatibility issues when you single source.
  2. MS SQL Server is the "default" database for ASP.NET apps (see LINQ to SQL, ADO.NET, ApplicationServices etc)
  3. Immature .NET tools for other databases. For example, you don't have to worry about a feature or functionality not being supported if you stick with MS SQL Server, other databases might not have full support (e.g. DbLInq, etc.).
  4. MS SQL Server is also free to get started, (SQL Server Express) and once you're ready to go public, it's hard to change the Data layer.

I'm in the process of writing an ASP.NET MVC2 site with MySQL as the backend (mainly due to licensing costs) I've implemented DbLinq, but it also means writing a custom Membership/Role provider, and general tweaking of the data layer. It's definitely doable, but it's not as simple as sticking with MS SQL Server. I'm also hoping to move the site over to Mono 2.7 (once it's released) running on a Linux server to sidestep the server licensing issues as well.

Andrew Lewis
+1  A: 

I would say because of the following:

  1. Microsoft is very well integrated while used with Microsoft products ;
  2. Though using SQL Server, a free Express edition is available and can be used to host sites ;
  3. With the .NET Framework coming through, Microsoft gained a lot of terrain over its competitors in schools an so, thus making SQL Server a well known database engine ;
  4. Microsoft products works better with other Microsoft products ;
  5. There are two ways of licensing SQL Server, per client (CAL), and per server processors or something like that. For sites hosts, perhaps is there an advantage of using SQL Server this way ;
  6. Other database engines such as MySQL, PostgreSQL, Firebird, etc. all have their syntaxic differences, thus making SQL Server TSQL somehow a wise choice as for the number of persons being able to interact with SQL Server more easily ;
  7. There might be some other politic related reasons for using SQL Server over other less costly solutions.

I would like to mention that some are using SQL Server, yes, but they use SQL Server Express Edition. Though they are whether aware or not that publishing or commercialising a solution with SQL Server Express Edition makes, according to the EULA of Microsoft for this product, your solution a free solution as well, as the EULA states that you need to provide your solution to your customer, and your customer is free to share your commercial solution with whom who wishes because it is sat on SQL Server Express. Although this is stated, some continue to use SQL Server Express without informing their customers about this information. Most of common clients won't know about this and they will respect their contract with the solution's supplier.

Furthermore, as I think I have above-written, some don't care about the price, but they have political reasons for using commercial products such as SQL Server and other software products. There are some places where the money isn't the most important factor, but service after sale, etc. They want specialized engineers or support teams directly, not necessarily what offers MySQL-like communities.

Hope this enlights a bit.

Will Marcouiller
"publishing or commercialising a solution with SQL Server Express Edition makes, according to the EULA of Microsoft for this product, your solution a free solution as well" -- I just went through the EULA for 2005 SP3 and it said nothing about this. References?
Jon Seigel
+5  A: 

While this doesn't directly answer your questions I really have to refute your comment about outrageous licensing costs. ALL ENTERPRISE grade commercial software comes with a high price tag because it has the VALUE for it. If it doesn't have that value, it wouldn't be a successful product.

SQL Server's pricing is extremely competitive and has a very substantially lower TCO than Oracle. Another reason a decision to use MS SQL Server would be made is that most shops that develop on the Microsoft stack are Windows Server shops. MS SQL Server is built specifically for Windows Server so it can integrate as flawless as possible with the operating system. Many other products are not primarily and solely developed for Windows Server so this results in feature differences and environmental bugs.

These enviromental issues can be further compounded with the fact that large scale shops will employ primarily system administrators that have long backgrounds in that specific stack so in a .NET shop most system administrators are all most fluent in Windows Server, having to support multiple operating systems becomes a large cost especially in the risk management side when you're a large scale business.

Chris Marisic
+3  A: 

To repeat what others have said. I work in a corporation and money, so to speak, does not matter that much when it comes to these matters. Decisions are made on the basis of "What kind of support can we get from the vendor", "How many skilled people are in the market", "What are the vendors reputation", etc.

I think there are two distinct groups for adopters of MySQL or SQL Server.

  1. Large websites that are privately owned that does not have additional financial resources. These websites will typically run MySQL. Naturally.

  2. Large websites built by corporations. These sites will run whatever is the accepted database technology within the corporation. Money does not dictate this decision, but more of who can support this software and development.

+1 This is a good point – what's the cost of the database software versus one developer?
Kenny Evitt