OS & DB Recommendation

We have to decide on the OS platform ( Linux or Windows) and DB ( Mysql & MSSql server) for our new HIS roll-out.  I need expert recommendations & pros/cons for each of these in terms

1. Performance
2. Maintainability
3. Scalability.

The Hospital information System ( HIS) is  web based one developed in java.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

I would stick to open source personally.

Linux + postgres

I don't know many people who still run on windows production servers these days.
I'd second that - generally you should only choose Windows as a server platform if you are compelled by language or platform constraints - which it sounds like you're not.  Almost all major web sites are Linux based these days, so for cost, performance and scalability you can effectively lean on the thousands of people who have analyzed this same choice and picked Linux.

Once you go with Linux, then MySQL is the natural choice.  Again, it's the database of choice in millions of sites today and so again you have the proof that lots of others have made it work as a cost effective and scalable choice.

Linux + MySQL is a platform that clearly provides any level of performance and scalability you desire (again - the existence proof of all those huge web sites using this combination today).  Maintainability is more down to the specific flavor of Linux you choose.  Some come with more support (e.g. RedHat) and some less.

Hope that helps,


P.S. For our sites (which support millions of monthly users) we personally picked CentOS + MySQL and have no regrets.  We've used this combo for the last decade.
vensaliAuthor Commented:
how about ubintu + mysql.

or how about having OS as Linux and separate server having windows server + SQL Server DB.  
as people at our place are more conversant with sql server DB .  

Also How does MY SQL compares with SQL Server in terms of

1.  Performance   ( around 1000 concurrent users.)
2.  Scalability & Maintainability
3.  Vendor Support
4.  Available tools to monitor Server performance( Performance tuning)
5.  Hardware & Memory Configuration
6.  Clustering.
as people at our place are more conversant with sql server DB .  

That's certainly a valid reason to consider going with SQL server.  If you have DBA expertise with a given database, that may be the more cost effective solution (engineers are expensive to hire!).

If you went that way, I'm not sure you gain much by running the Java app on Linux.
The DB is the expensive and tricky part of any web app, so if that's on Windows server, you might as well run the web app there as well.  It's the part that's trivial to move around, scale etc.  You certainly can run it on Linux too, but heterogeneous environments are just more work for the netops team.

I can't personally give you comparative numbers on MySQL vs SQL server as we never seriously considered SQL server.  But at 1,000 concurrent users (which is a pretty light load unless your queries are ugly - we run about 15, 000 concurrents on MySQL) the cost of the database server will be likely much lower than the cost of your engineers who support it.  So "performance and scalability" will be "good enough" on either platform.

Vendor support is what you choose to pay for on Linux.  You can go for free or you can pay for support options.  If you wish to pay Percona (https://www.percona.com/) are a great option to consider.  They are pure MySQL and even have their own build with some added features.  Excellent team.

Clustering however is a good point.  MySQL cluster sucks.  You do not want to be using that.  The MySQL model basically assumes you're sharding your database yourself (at the software level) with some users on one machine and some users on another.  Although at 1000 concurrents you likely won't need to shard yet - but at 1 million you will need to be sharded.  So that may be a major concern if your software (the Java web app) doesn't support that.

Again, can't comment on SQL Server's clustering.  Most folks in the Linux space who decide they want to pay for a good cluster solution go with Oracle - which is good but very pricey.

There are also startups trying to solve the MySQL clustering problem (so no changes required to the application itself, just add on to the db).  I don't think anyone's nailed that yet.  So usually in the MySQL space you shard - i.e. separate db per user segment.  That's the approach we take and if you design for it, it's not a big deal.  But if you need to add it on later to an existing app...it might be a big challenge.  Depends on the application.


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Linux OS Dev

From novice to tech pro — start learning today.