All marketing terms are bullshit, but what is the point?
The point is to use a single word that people can rally behind to be disruptive. In my world, NoSQL is a movement about using the right tool (especially open source) for the job. It is a movement about building these tools to the point where they can be consumed and put into production quickly.
There is no value in being precise (in marketing) since then we are just cats that need to be managed. By being imprecise and use a bullshit marketing term, we gain collective market power.
Yep, giving names to high-level abstract concepts is one of the most important skills humans have.
I mean, you wouldn't want to say "database management systems that differ from classic relational database management systems in some way, which may not require fixed table schemas, and usually avoid join operations and typically scale horizontally" in every third sentence would you?
I don't know that it's really much to do with using the right tool for the job.
Risk, reliability, performance expectations, etc. I don't know if I've ever met a project of any significant complexity that would have been more of a success in any area, deployed any quicker, or developed any easier by not using a traditional RDBMS.
There are those projects out there, I just don't have any personal experience with them. But what's more, I seriously doubt 99% of people using NoSQL solutions do either.
Databases cross a funny line. There's language, syntax, a lot going on under the covers, and complex technical decisions and trade-offs at every turn to maintain durability and performance on modern hardware.
Sure, I can set work_mem in Postgres to 1GB and sort this query in-memory like a king, but then I'm (worst-case-scenario) reducing my 20-connection server by 20GB it might have used for cache instead speeding every other query up.
I can imagine issues are as simple as having the right LRU in front of my data, or I can guarantee durability and achieve really amazing performance if I'm willing to invest myself into learning why particular design decisions, made over years by some genuinely brilliant people, were made.
Truth is, just to use one of these systems, you mostly don't have to care to meet your own requirements. And I think people take that for granted. When performance requirements are no longer being met, it's easy to blame the tool (the RDBMS), but I think a much safer assumption is to blame the developer and hit the books. The PostgreSQL 9.0 Administration Cookbook and PostgreSQL 9.0 High Performance books are surprisingly good reads. It doesn't take all that much personal effort really. Less certainly than switching tool-chains.
This is one of those comments you write, goes off-track, and then decide to just delete. Well I'm going to post it damn-it. :-)
I'm thinking on how to rewrite that. My aim was to say that when we communicate to non-engineers, it should be imprecise and more sales pitchy.
When we need to sell our ideas. It doesn't help us to build an awesome taxonomy when we need to sell the right tool. More often enough, when we try to get precise with non-engineers, it owns us. It creates the need for a manager to organize the cats.
If we were precise, then we would have 10+ movements. a "column store" movement. A document movement. A map reduce movement.
Who the dick is selling anything? I thought we were building things. Call it DongDB, I don't give a damn, I just need to push some shit that's not going to break.
It does not matter what we call the products or the product category or the "movement". Products are built on technology, and the vast majority of the technology in the NoSQL space is pre-existing and appropriately named. A column store is a column store, not a CassandraStore(tm). A bloom filter is a bloom filter, a vector clock is a vector clock, consistent hashing is consistent hashing, ad nauseum. Those who are actually interested in understanding the tools spend their time reading technical and academic documentation that describes the foundation, building blocks, patterns, and concepts that are in play.
What matters for products is not what they are called, but whether they will work or not for your problem set. The best way to help this "movement" is to write code, run code, and provide examples, use cases, and data about real world environments that will help people choose the appropriate tools and approach to manage their data. Compared to actually using and building things, chatting it up about terminology isn't going to make a god damn bit of difference. Which is to say, get things done or shut up.
It doesn't help to build something if you can't sell it.
The NoSQL movement could be called a marketing and sales effort to sell people those ideas that you listed. Just because you know what vector clocks and consistent hashing mean doesn't mean that all the managers and all the technical directors in the world do.
Speaking as an engineer, there is great value in being imprecise.
Think of it as a shallow search. When we start a conversation, I first want you to be overview-y and high-level. Then I will (or you will) steer the conversation into the direction where more detail is required.
Wouldn't want a conversation polluted with unnecessary detail. It would drag on forever and bore even the most engineering of minds ... but damn it would be precise!
I'm an engineer and I agree with Swizec and mathgaldiator. As an engineer I see great value in abstracting layers until any specification or detail is needed. If NoSQL as a term helps me convey a meaning of "newish edgy non relational datastore" then the term serves it's purpose, the same way people used Web 2.0 to describe pretty gradients, huge plasticky buttons, and shinny bubble navbars.
It may seem like a fad to most people but it still is the easiest, shortest way to describe a group of aesthetics, use cases, or features in only one word. Think of it this way: We do it all the time with races, skin colors, and religions. White, Black, Muslims, Christians, Latinos, Asians... RDMS, and NoSQL...
The point is to use a single word that people can rally behind to be disruptive. In my world, NoSQL is a movement about using the right tool (especially open source) for the job. It is a movement about building these tools to the point where they can be consumed and put into production quickly.
There is no value in being precise (in marketing) since then we are just cats that need to be managed. By being imprecise and use a bullshit marketing term, we gain collective market power.