Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I would never use SQL server willingly but I really like the direction Microsoft is taking lately. They are a software company and restricting their software to PCs running Windows only doesn't make sense.


I hope it continues. I've been caught in a bind twice in my career when Microsoft offered their product on a non-Windows platform and once it started to develop critical mass, the platform was dropped in favor of Windows only. (FoxPro being one example.)

I obviously have no idea what went into the decision, but it felt like it was an attempt to get people committed to the product then strong arm them to Windows.

Even today, for mainstream products like Excel, they still hold back key features from a major platform like OS X. (E.g., https://support.office.com/en-GB/article/Compare-Excel-2016-...)


This is partly why I do not buy that they've given up on Embrace Extend Extinguish.

They have another decade worth of good behaviour owed before I'm willing to consider giving them the benefit of the doubt. But that's me.


> they still hold back key features from a major platform like OS X.

I don't think "hold back" is the right term. It's my understanding they share some code between the platforms but for a lot of the GUI they do not so it's expected many of the OS X features are simply not done / lower priority than other features.


That's true. For me, the Flash Fill feature keeps me going back to a Windows VM just to use Excel.


ms sql is better than mysql. downvote me all you want, but you can't possibly disagree if you've tried both like I have. transaction isolation anyone?

don't have much experience with postgres, but my money is still on mssql


> ms sql is better than mysql.

That's one hell of a benchmark, up there with "eating paste is better than being on fire" and "missing a hand is better than missing a head".

> don't have much experience with postgres, but my money is still on mssql

Obviously, since postgres is FOSS.


If you ever become a comedian (unless you're already one) I will gladly shovel money at you to tell me jokes ... I was thinking the same thing, but could not express it as viscerally.


PostgreSQL is pretty amazing. MySQL isn't even in the same league as PostgreSQL. I'm sure MSSQL is nice, but my money is on PostgreSQL being even nicer.

http://www.pg-versus-ms.com/

https://www.reddit.com/r/programming/comments/2mhpwp/postgre...

MySQL is hardly a relational database, it's not quite the benchmark you're looking for.


I'm sure MSSQL is nice, but my money is on PostgreSQL being even nicer.

Having used both, I'd take that bet. MSSQL is in my opinion the best DB out there in terms of ease of use, documentation, integration, and tools. PostgreSQL is a distant second, and SQLite is probably a distant 3rd (though it's really not in the same category).


> documentation

The pg documentation is quite through and informative.

> integration

Meaning? "Integration" in and of itself is meaningless because that depends on what we're integrating with. Rust integration? pg is much better. Some obscure windows-only business tool that most people have never heard of? well, it integrates with what they want it to (probably mssql). Some obscure BSD-only business tool that most people have never heard of? well, it integrates with what they want it to (probably pg or mysql).

> tools

Again, meaningless unless you discuss what the actual differences are. Being able to be used on BSD makes pg infinitely superior in terms of tooling for my cost function.


Tell me of these BSD-only business tools


In my experience, people who like MSSQL are the kinds of people who prefer to use a GUI to access their database (or Entity Framework). Basically, the user experience is like this:

PostgreSQL: Just nice. Every once in a while, you learn about a feature that makes things easier.

MSSQL: Plain vanilla, slightly outdated. Works. Nothing fancy. Expensive.

MYSQL: Every once in a while you learn about a feature that makes things harder.


It sounds like you haven't used MSSQL in quite a while. The 2012-2016 editions have progressed significantly. 2000-2008 were pretty vanilla but then most databases of that era were.

Pricing can be expensive if you need the standard, BI, or Enterprise editions but otherwise it's not. It's no where near the cost of Oracle though.


  >It sounds like you haven't used MSSQL in quite a while.
You're wrong.

  >The 2012-2016 editions have progressed significantly
Instead of saying "it progressed significantly," why don't you list these features that are so great? Come on, sell this product that you like so much! Help us understand why you like it!


some of them, off the top of my head.. columnstore index, in memory tables, R integration, Always ON, Stretch DB, Dynamic data masking, encryption at rest and transit (always encrypted), row level security, temporal tables, JSON support, query store and stats, live query stats,polybase, backup to cloud, TDE enhancements, replication enhancements, TSQL enhancements, FK relationship limit, managed backup, multiple tempdb files, trace flag improvements, db scoped configs, query optimizer improvements, HA-DR improvements, replication enhancements, Master data services, data quality services, SSIS catalogue, SSIS project model and execution, mobile reports in SSRS, datazen integration, HTML view in SSRS, tabular mode in SSAS, improvements to UDM model in SSAS, DAX language and improvements.. And I got tired of typing...


MS SQL has the best GUI for administration of any database I've used, if that sort of thing is important to you. Hands down better than anything I've seen for a free database or even Oracle. In that sense you do get what you pay for. I'm not sure how they'd bring that to Linux other than maybe with Wine or other emulation layer.


The past couple editions of Microsoft's management tools have just been front ends for powershell commands on the back end.


> SQLite is probably a distant 3rd (though it's really not in the same category).

Definitely not in the same category: the goals for SQLite are very different to those of MSSQL and Postgres.

It is impressive how well SQLite performs and scales so you sometimes see it do the job of a "larger" engine because a project accidentally grew and hasn't been re-factored in that respect yet, but if you are starting a new project I can't think of any cases where you would ask yourself if you should use it instead of MSSQL/Postgres. For an integrated storage engine for your app with SQL semantics, ACID, and so forth: SQLite wins hands down. For a fuller database and anything that needs any significant concurrency SQLite is not what you want and isn't trying to be that.


You're absolutely right, though given the choice between developing a large scale app with SQLite or MySQL I'm afraid I'd go with SQLite. At least I'd know what hell I've wandered into.


We are in danger of encouraging a small war here, but I would partly agree with you in that I would not by choice use mySQL for anything. IMO there is nothing for which one of SQLite or Postgres (or SQL Server or other decent RDBMS) are not more suitable for. mySQL and its descendants/variants are popular today mainly because of a mix of two things: many people not knowing better and its popularity having significant momentum.

I still wouldn't use SQLite for a large scale app (assuming that means one that needs concurrent data access for multiple users) though: it is not the right tool for that sort of job.


Does MS-SQL have anything like PostGres' Bidirectional replication?

Also, Postgres is missing multiple result sets, which Sql Server seems to have, right?


I'm not as familiar with later versions of MS-SQL, but it's replication story is well in the box... Postgres is a bolted on, hard to setup/maintain hodge podge... I really hope the out of the box, via a gui admin and all story for replication on postgres gets to where MS-SQL was in the box in 2005.

NOTE: this is not a bash or nag on postgres, I really like it's JSON integration, and plv8 is awesome. That said, even simple replication stories in pgsql have me pulling my hair out, mainly because I don't WANT to know every intricate detail about my dbms, I just want to build applications on top of it, and ms-sql is pretty nice in that regard.


Admittedly I've never used the replication in Postgres but that surprises me. I don't think I had the opportunity to use replication in MSSQL 2005 but it was pretty awful 2003 and pretty terrific in 2008 so I guess it was fixed somewhere in between.



One thing to be said about Microsoft and their products is that they probably support what you want to do. It may cost you an arm and a leg, but it's probably supported (as with most high-end enterprise products, I find). It's easy to see how this came about, too. "We have a multi-million dollar sale on our hand, but they really want feature X. Guess we can subsidize the development with that sale."


I feel like cost has only really become an issue recently with their drive to get everyone in the cloud or on Azure and even then it's only an issue for small businesses. They offer ridiculous discounts to nonprofits and in education settings it's basically free.


Sadly, even the basic synchronous mirroring with automatic failover that MSSQL offers is ahead of anything pgsql can offer at the current time.


SS is more advanced than PG out of the box. Built in scalability and HA; far more reliable point in time backup/restore; PG even only had a plan cache added recently (the past year or so?)

Then you have full text search, built in columnstore, in memory tables, native procedures.

That's not counting all the non engine stuff. There is no adequate free software equivalent to reporting services or analysis services.

Sorry PG isn't even close. PG is no doubt extremely important and the best of the free software pack. And you will pay your life to MS for adequate licensing. But there really is no comparison.

MySQL on the other hand is a flat out joke.


> Then you have full text search, built in columnstore, in memory tables, native procedures.

Err, Postgres has full text search, columnstores and native procedures. Memory tables is slightly different, but doable.

It's an open source project with extensions, you can't just classify it by the core.


Lets not forget proper JSONB support. Oh god it's the most amazing thing to ever happen to a relational database.


> far more reliable point in time backup/restore;

Hmmm. I use ZFS snapshots for backup of my PostgreSQL instances. It's faster, as reliable as it can be, and I can run a full backup every fifth minute and keep the snapshot history on a database that weights 2TB.


> PG even only had a plan cache added recently (the past year or so?)

What? You have no idea what you're talking about.

> you have full text search, built in columnstore, in memory tables, native procedures.

Postgres has all of these (column stores only available as extensions).

I don't think you're very familiar with Postgres.


This precisely. MySQL has made headway in recent years but is still miles behind PostgreSQL. No commercial database is in the same league when it comes down to it either. Oracle has some nice stuff that PG doesn't have yet but PG is still the nicer database overall.


What metric are you using to compare databases? It sounds like you're saying MySQL, while crap, is better than commercial databases.


I read it as saying Postgres is better than commercial databases.


Other gentleman is correct. The tier list is pretty simple.

MySQL < MSSQL < Oracle < PostgreSQL.

Basically PostgreSQL is king of relational databases right now.


MSSQL < Oracle?

No way. Maybe Postgre is nicer than MSSQL for you. I don't know. But Oracle? Oracle is worse than MSSQL in just about every way that matters.


Why?


Free + Fast + no weird syntax (like Oracle) + Most features (although I think Oracle replication might still be better)


Oracle replication usually requires Golden Gate to the best of my knowledge. Someone was telling me the other day they hacked their own system together with shell scripts (ship and restore log files using scp etc), but that's probably not something you'd want to build your business on.

So yes, Oracle replication is probably better if you use Golden Gate. But Golden Gate is pretty expensive (17k per CPU?).


I'm still unclear under what criteria Oracle comes out on top of MSSQL. Aside from the extreme high end, I can't think of a circumstance where I'd prefer using Oracle to MSSQL.


For MySQL vs PostgreSQL, I link people to this one: http://grimoire.ca/mysql/choose-something-else


Microsoft's HA and replication user experience is light years ahead of PostgreSQL's from an operations perspective last time I checked.


What a ridiculous statement to make!


That first link has been discussed many times on HN and the consensus always is that the author is extremely ignorant.


He acknowledges his crassness at the bottom. Unfortunately, sometimes ignorant people have a point. Native regular expression support is a big deal, if it balances towards a better platform is another question.


I will agree with you on that one, but one is free and the other isn't. Postgres, however, is free and blows MySQL out of the water. Each has their pros and cons though.


SQL Express is free, but limited :)


> ms sql is better than mysql.

Well, gosh. I'm convinced.

(Full disclosure: I abhor MySQL. But if you're paying attention, you'll notice that my position is a statement of opinion, while yours is a statement of "fact". The reality is, every RDBMS has strengths and weaknesses, and should be evaluated for their applicability to a given project on a case-by-case basis — at which point, I'm sure, you'll conclude that PostgreSQL is the best choice, anyway.) ;)


The thing is I wasn't trying to convince anyone though :) I doubt anyone here will be willing to shell out the money for a license. Although, Azure might make it affordable but I hated the limitations they put on the mssql instances (can't remember them rn).

My biggest problem with myssql is that it is very immature. Biggest problems I have with it are (right now, b/c that's what I'm facing atm): transaction isolation and stored procedures. I'm pretty sure pg has the same lame transaction isolation issues as well.


Whatever transaction isolation issues PostgreSQL might have, I guarantee you it doesn't have the "same lame" ones as MySQL.

As just one example: "range locking". Look it up.


the biggest one for me is the lack of support for nested transactions


Which you can effectively accomplish in PostgreSQL with SAVEPOINTs. In fact, with those, you can have arbitrarily complicated nesting of "transactions", though that does start to smell a bit like a foot-gun pretty quickly.

http://www.postgresql.org/docs/current/static/sql-savepoint....


What do you mean Postgres has tx isolation issues? The entire point of preferring it over mySQL is that it does most things around that area properly.


not from my experience. last I checked, neither one of them supports nested transactions


Care to serve something more substantial than just a summary of your opinion in a flaming manner?

* A list of advantages vs mysql? (Bonus if you can admit faults of MSSQL as well) * Some blogs or articles perchance? * Performance metrics or % of SQL standard it implements vs the accused?

I'm genuinely curious if it is good but one half-screamed pledge is hardly trustworthy.


I mean, i think most people might agree. it's the pricing that's pretty different though. :)


sure, and I've never used mssql for any project of mine b/c it is so expensive. I've only used it when someone else (a client) pays for it. That still doesn't make it functionally worse though.

I find mysql to be very immature: transaction isolation is a joke, stored procedures are a joke... etc.


I agree it is better than MySQL, but you pay for it. Using MS SQL has heavy licensing fees.

PostGreSQL kicks both of them into the trash.


Okay... now setup a cluster of three pgsql servers with automatic failover... your options are to become very intimate with your dbms, and now pick from half a dozen poorly implemented solutions, or pay licensing costs to EnterpriseDB close to the same costs of MS-SQL, where you get to click a few buttons and your db is clustered.

It is a very big deal... and an area Posgres is sorely lacking, but progress is made, and in another 2 releases may catch up to MS-SQL 2005.

I love what pg offers for dev, but it really isn't enough from the operations side. That said, I'd be more inclined to reach for RethinkDB for most situations these days, if it were up to me.


I have used both and I agree. Obviously, you still wouldn't want to use MSSQL for personal projects but technically it is years ahead of MySQL that's for sure. My main OS is Linux, fwiw.


If I were hosting something on azure (have a smallest windows vm running for some old personal stuff), I would consider it... SQL Express is pretty functional, and the Azure SQL option is nice enough...

I've been leaning towards nosql options for a while though... imho RethinkDB is one of the nicer options out there for most use cases... ElasticSearch and Cassandra are also great options depending on your needs.


innodb has four levels of ACID-compliant transaction isolation. what's your complaint?


Are ALTER TABLEs transactional yet?


Just checked, and the answer is "nope." Have fun debugging your migrations!


Unfortunately, no DDL statements can be transactionalized on MySQL, and that is unlikely to change in the foreseeable future.


MySql is a joke and always has been. I blame a huge majority of the RDBMS hate on the fact that many peoples only experience with a RDBMS was MySql. The issues are numerous, but two of my personal favorites are silent data truncation and allowing 'indeterminate' results with non-aggregate or non-functionally dependent columns in the select[1]. 5.7.5 finally changes the default behavior of the former.

This site lists many of the issues: http://grimoire.ca/mysql/choose-something-else

[1] http://dev.mysql.com/doc/refman/5.7/en/group-by-handling.htm...


There would be no data truncation if you enable strict mode (sql_mode = 'STRICT_ALL_TABLES'). Indeterminate results appear only if the column values in a group are different. SQL standart doesn't allow such selects at all (even if the values in the group are the same) so you have to write longer queries.

MySQL is not that bad, it was used in facebook and wikipedia.


Strict should be the default for something that stores your data. The SQL standard does not allow selects like that for a a reason. Indeterminate results are almost always bad for something that stores data. MySql is that bad [1] and was only used by people who knew nothing about databases to question all of the dumb things MySql did. I'm so happy postgresql is finally getting popular.

FB also uses php, so appealing to it being used is no argument.

[1] http://grimoire.ca/mysql/choose-something-else


As I commented in the parent: it is the default. It was enabled for new installs in MySQL 5.6, and all installs from MySQL 5.7.


Both of these behaviors you describe are no longer the default in MySQL 5.7 (strict_trans_tables + only_full_group_by).


Certainly it's the right direction, but, you have to wonder about a company that took until 2016 to realize that Linux was an important platform to support for an enterprise RDBMS.


It might have hurt them, we'll never know. But they made it until 2016 with that attitude, so it's not like they _needed_ to realize anything.


They certainly realized it many years ago, but they also sold the major competing OS. I'm sure it was a huge battle with the Windows Server team to get this done.


They've known Linux was an important enterprise platform for decades - they just didn't want to admit it openly or contribute to its success.


Decades? Linux was a bit of a blip in 1996.. FreeBSD on the other hand was clear competition at the time.


I think they ported to Linux because Linux is being used by startups instead of Windows Server and they wanted them to use their SQL Server database instead of MySQL or PostgreSQL so they can sell tech support for SQL Server.

Keep in mind that Microsoft sells tech support to companies with a special hotline they can call and get answers and support for enterprise level software. Porting SQL Server to Linux means more copies of SQL Server being used out there and more tech support phone calls that companies pay for.

With Office 2000 there was the MSDE on the CD-ROM that had a developer version of SQL Server that could run on Windows 2000 Pro to test out databases without using Windows Server. It was limited in number of connections and other things.


Can't speak for others... but I'd definitely be inclined to reach for MS-SQL server before any other commercial SQL option (including EnterpriseDB).

That said, SQL is rarely the first tool I look for regarding my DB needs.


I think it was more about a certain bone/bald headed CEO being stubborn.


Ten years ago, Windows was a major component of Microsoft's revenue. They felt they needed to protect it. Today, it is not huge (and the enterprise cloud is). So the decisions at the time and now make sense. Microsoft is becoming IBM.

http://www.computerworld.com/article/3041378/microsoft-windo...


Have they released anything consumer-oriented on Linux yet?


There was an announcement a few weeks back about their Python JIT VM that they're developing, which is currently only for Windows but they say they're planning for other operating systems as well: https://blogs.msdn.microsoft.com/pythonengineering/2016/02/1...

And also a few months ago they posted to the Django developers mailing list about developing MSSQL as a first-class database for Django: https://groups.google.com/forum/#!topic/django-developers/Fb...

It seems pushing MSSQL for Linux is the next step.

Meanwhile, I hope they can get things running ported to FreeBSD, since that's what I use for the server.


VSCode which is really a nice shell for electron. Other than that, not too much comes to mind.


Electron isn't an editing component, it's the combination of Node and Chromium that sits under VS Code and Atom and a whole bunch of other apps, many of which have nothing to do with text editing.


shell implies vscode wraps electron, i'm not sure what your statement is clarifying further.


Sorry if there was a misunderstanding, I've seen a lot of people who seem to think that Electron is the "text editor" and that Atom and VS Code are just different "shells" built on top of it with Github and Microsoft branding.


Some of us remember Internet Explorer for Unix, AND it's sudden disappearance. Or FrontPage Extensions for Apache. Microsoft LOVES to ANNOUNCE things like they've solved world hunger or something, but then things die on the vine, and they get only a smattering of updates, and the docs get really stale.

I'm a 20-year Linux fan, but my main project right now is running on SQL Server in Azure. I've got a side project running to convert it to Rails using the tiny_tds driver, but I'll wait for a couple/few years and see how this REALLY works out.

The more Microsoft tries to brand themselves as "loving Linux," the more I'm getting suspicious. If they really want to wear that crown, then they need to release Office for Linux, in DPKG and RPM formats. The product matters a whole lot less these days, in this cloud-based, app-driven world, but that's the ONE thing that would actually prove it to me.


Other than the CLI tools others mentioned before no. But they have started to treat OSX/iOS as first class citizens which is awesome. Shows a huge culture shift over there in Redmond.


And Visual Studio Code


What CLI tools are you talking about? Can you please clarify and or provide a link?


They were likely referring to the cross-platform .NET Core stuff: https://github.com/dotnet/cli


Kind of - Skype. Although it was released before MS purchased the company and since then it hasn't been maintained very well.


Maintained so poorly that we get this:

https://news.ycombinator.com/item?id=11165568


Skype on Linux feels a lot more like "legacy product MS inherited and then ignored" than "hot new product under active development."


Skype on Linux seems to have different experiences for different people. For example it is rock solid for me, and always works well. I don't remember any crashes. But it also essentially never gets updated.

I have colleagues on Windows, Mac and iOS where skype is getting updated, but it mostly seems to frustrate them by having an unpleasant user experience. Just today I was sharing my screen but they couldn't actually find it in the skype user interface!

This is Microsoft's business to lose. But network effects mean you have to keep more of the audience satisfied because excluding people means they take themselves and those they interact with away to an alternative.


So basically SQL server on linux is supported until the project isn't fun to work on anymore which then it will be left to rot and eventually support dropped entirely.


I'd say it will stay as long as commercially viable, which it very much is... I'd imagine a lot of this effort was to get SQL services on azure closer to the metal than running on top of Windows.

I don't think it's going anywhere for a while... and I rarely trust MS with anything cross platform.


They released many applications for Android, ever their own launcher.


When people say "Linux" in a context like this, they usual mean "a typical GNU/Linux distribution", not "anything that happens to be running the Linux kernel"


Why not? It's the best enterprise db available




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: