You are just defining the limits of "something else" and then saying it doesn't do that. If your data looks completely differently to how the database outputs it, I don't think you can say it is just a trivial difference. Both the structure of a query and its output use different concepts to sql.
in sql, it is SELECT * from products, manufacturers, parts, JOIN ...... ON .........
The linq query syntax makes it seem like you are just plucking a Product out of a database that has manfufacturer and a list of parts as part of its object. It is an object, not a row and table based structure.
Then the output itself is also an object, in a completely different structure to what the database gave to you.
People can use an ORM and not really know how SQL works if they never bother to learn. It is presenting them with an object-based database.
In a NoSQL database like Mongo, you either have to literally store the Product with its parts and manufacturer, or you take them separately from the database and put them back together in code. This requires no abstraction. It is exactly what is happening.
>lazy developers and too much Kool-aid consumption.
When your argument is based on personal attacks of the people using that thing, it sounds more like you have an emotional investment in the alternative rather than a rational argument.
>I think NoSql, especially things like Mongo, got popular because it is super easy to program with javascript.
I chose Mongo for a project recently. I have many years experience with SQL databases, and I think SQL will become more of a niche in the future.
Here are the reasons:
Everybody uses an ORM with a SQL database. You can pretend they don't and everyone is writing raw sql, but they aren't. This is basically a big, complicated, and slow piece of software that tries to make a SQL database into something else. A NoSQL database is like a native version of that. It starts off with you being able to define collections and schemas in code and so on.
SQL is a shit way to query a database. I used to write massive queries that took an hour or so to write just so that the non-programming people could put them into analytics software that didn't support any other methods of input. While I was writing these queries, I was just thinking to myself "I can write this in code in a few minutes instead of an hour or more". The fact is that programming languages are much better at querying databases than SQL.
Joins are slow and complicated, and ORMs are slow and complicated, so you can never actually use any of these things in a high-traffic environment. As you say, not many people will reach these levels of traffic, but it is still a factor.
Most of the comments about "I moved from mongo to postgres" lately are first-time programmers who didn't know any of the basic concepts of databases. They then discovered patterns that the SQL database forced on them and declared that mongo sucks when in reality, they just didn't know what they were doing.
>One of the problems of many stacks is that the frameworks wrap general purpose languages over SQL, which, is not really a good idea, SQL is a vastly more capable language for dealing with relational data and layers built over the top often dumb down the database.
This is not true at all. Programming languages are vastly superior at querying a database. Just go write a complex query and compare it to the one in linq or whatever you use.
>Microsoft at one stage had Linq to SQL which was quite good..... but they killed it :)
They have entity framework, which uses linq and is the same thing. It is very slow though.
Every time Apple releases a new product, these comments are the same. "blah blah, apple sucks, I am totally thinking about switching to the Microsoft <insert latest failed product here> and let me tell you all about it". This year it is the "WSL totally makes development easy on windows now" garbage.
The fact is that the competitors are garbage. Dell makes crappy, low quality computers, windows has the design of a sleezy casino, and programming on windows is still a massive compromise. The same with Android. Samsung s9+, note 8, etc are not even remotely competitive with the iPhone. Android and Windows serve different markets and every attempt to break in the high-end market since the history of time have failed.
Personally, I think that macbook's are kind of old fashioned. When I went into the Apple store a few months ago, the iPad Pro seemed like a much better mobile computer. The fact is that you don't spend all day on a laptop. If you do, then you need to go see a physiotherapist and start your treatment now. Whether the keyboard is perfect or not really isn't that important. Nothing about a laptop is anywhere near perfect. The processor is lower powered, the screen is smaller, the ergonomics are terrible, etc.
It makes much more sense for a lot of these tech companies to start issuing iMacs and macbooks or iMacs and ipad pros. That is what Apple themselves seem to do, and the majority of the people I know who work from home do. You can't even buy a screen as good as the one in the iMac 5k for the same price separately. Text looks much better on a retina screen, you get much more power, more storage, etc.
People say "well you have to sync between work and home". These people must be an extreme minority because how many people work at home one day, work at work the next and keep rotating like that so that syncing becomes an actual problem? Further, you can just ssh into your own machine.
Anyway, that is what I think. Everyone seems to be moving to iMacs instead of laptop + external screen. You get more power, no need to charge as much, a retina screen, and it is all at a very very competitive price.
Using linq, a query will look like:
db.Products.Include(p => p.manufacturers).Include(p => p.parts).where(p => p.name == 'bike').ToList();
in sql, it is SELECT * from products, manufacturers, parts, JOIN ...... ON .........
The linq query syntax makes it seem like you are just plucking a Product out of a database that has manfufacturer and a list of parts as part of its object. It is an object, not a row and table based structure.
Then the output itself is also an object, in a completely different structure to what the database gave to you.
People can use an ORM and not really know how SQL works if they never bother to learn. It is presenting them with an object-based database.
In a NoSQL database like Mongo, you either have to literally store the Product with its parts and manufacturer, or you take them separately from the database and put them back together in code. This requires no abstraction. It is exactly what is happening.