Help pick a better name for NoSQL Movement at NoSQL East Conference
nosqleast.com
nosqleast.com
Most advocates of technologies like Tokyo Cabinet/Tyrant, Mongo, CouchDB, etc - don't seem to argue this, instead taking a much more responsible approach of suggesting organizations whose needs are best suited by non-RDBMSs check them out, rather than porting everything over whole-hog.
I suppose what I'm suggesting is that the "movement" frame doesn't match the mindset of most proponents of the paradigm. There's nothing political about it - it's just another (very awesome) technology to consider for certain cases.
So maybe NoSQL people need a movement after all. The relational people are at _least_ on their third manifesto. Lot of catching up to do!
I went to a presentation about CouchDB recently, and afterward asked a couple questions about distribution, how views work, transactions, comparing its design and performance to RDBMSs, etc. It was immediately clear that the speaker didn't really understand the relational model at all (and he kept calling SQL "MySQL"). He couldn't answer several of my questions, but pointed out several times that the technology behind CouchDB is "way sexy". Now, I really like Postgres and SQLite, but I'm curious about the other systems because I'm a bit of a database nerd, and I was hoping he could explain what problems they solve, beyond some handwavey assertions about scaling and reassuring people with an aversion to SQL.
I'm not saying he's representative, but he comes to mind when I hear about a noSQL movement. People whose sole understanding of RDBMSs seems to have come from e.g. _PHP & MySQL For Dummies_, but keep hearing that SQL doesn't scale and noSQL databases are "the new hotness". Talk about the advantages of those systems compared to RDBMSs! And if you can't talk about any collective advantages they have, because they don't have much common ground (which is quite possible), then trying to present them collectively is just going to be confusing.
That may be a pretty big part of the explanation. Most of the apps build on knowlegde rathered in that book, would probably benefit from being released from the constraints of SQL (and on the level of a blog or forum app SQL is more of a constraint than a benefit).
The various NoSQL-solutions are quite different in nature, the only thing that really brings them together is that they're not SQL, and instead of each of them doing their own awareness raising campaigns, they probably do well to gang up. I don't even think they should change the name, it's not until now when they've created the NoSQL-umbrella that they're really getting some well-deserved attention.
There are plenty of solutions out there, pick the best one, or whichever one you just plain like more. And that might very well be SQL. Just don't pick SQL simply because that's the only solution you even know about. I think that's a message worth spreading.
I would love to read a detailed, informed comparison of CouchDB, MongoDB, Tokyo Tyrant, Redis, etc. by somebody who knows enough about RDBMSs to realize they don't all suffer from MySQL's limitations. I'm curious what use cases they fit the best, etc., but most things I've read have only been familiar with one or two of them (understandable), or has been very heavily biased towards somebody's pet project or new favorite.
And the NoSQL is needlessly negative as well.
Neo something...
ModernDB
KV something...
Fast data...
East of SQL
Sorry. It would probably help if you laid out your constraints (need it short? need the word 'noSQL'? need an available URL? ...)
"I think maybe my creativity broke. Let's see, uh... meatloaf. Yup, it's broke alright." - Strongbad
"We have not achieved it; therefore, it cannot be achieved."
How about the "NoSQL Movement". No Scientifically Qualified Logic.
I would call it something like the Alternative Database Movement.
The reason it seems to work in politics is because it's hard for politicians to be perceived as principled and noble.
Even if the strategy is to frame yourself against what is out there you still need to have an identity.
Perhaps "#noIndexes" or "#noRightOuterJoins"
I'm using mongodb for a new app at the moment. Here are some of the reasons I chose it:
1 - schema-less. I like having postgresql as my backstop for data constraints. It has saved me many times to have a locked down schema that will refuse to corrupt when my app code gets sloppy. That said, during the dev process, its nice at times to avoid thinking through these constraints and getting straight to persisting objects ad-hoc.
2 - fast enough. I have a few features that will creep into the area of "I might need memcached". I'm betting mongodb will be "fast enough" to give me one object repo for my entire app and I can avoid the headaches of writing cache management code.
3 - good enough. Having step 2, fast-enough, means I may have to give up some ACID. I don't need an ACID guarantee for this app. If I did, I would go back to step 2 and rethink writing all that cache management code as I'd stick with postgresql. I do need durability relative to my daily backup. If the tradeoff is 5 or 7 9s (postgres) for a system that is 3 9s (mongodb), and a restore from a dbdump always works, then 3 9s reliability is ok with me. Note: I have no meaningful data on mongodb reliability other than "others are using it for more demanding projects than mine and have good things to say".
4 - more than just simple key/value. I needed to be able to retrieve parts of objects, not just the entire value for a key.
5 - Simplify my app code. Sure, ORMs all well-refined: simple stuff is simple, complex stuff is possible. But it takes a heap of code. With ORM frameworks, I constantly monitor the SQL being output to the log to ensure the framework crafted my SQL properly. Now that I'm using mongodb, my app code's "models" are just thin wrappers around a ruby Hash and simple queries go straight to the mongo ruby drver API. More complex queries get written by me and sit as their only little methods on my model objects. Sure, there is a ruby framework and evolving DSL for mongo, but I want to get away from these added layers.
Notice that the syntax or structure of the db's query language did no crack my requirements list? In fact, mongo has what I would consider some inconsistencies in its query language (if you could even call it a language).
So here are some suggestions for a better name:
* - alt.db
* - SchemaFree
* - less_ACID
* - next-gen object stores
* - hybrid db models
or maybe the Lewinsky Club ("I'm going to say this again: we DO NOT have relations.")