I want to clarify that I have never used a NoSQL database. But we were considering it for a short while at our company before coming to the conclusion that it’s the wrong choice for our application area.
I updated Sandra’s dialog in the first panel of Under A Killer Balloon: Episode 1, Page 8 since the original description of the puzzle was probably not precise enough. It’s been a long time since I had physics in school…
- Richard: Sandra, please come over here for a moment.
- Sandra: What’s up?
- Richard: I want to tell you something very important that you must never forget!
- Sandra: Yes?
- Richard: If data consistency is business critical, a NoSQL database will be the wrong choice!
- Sandra: I’ll never ever forget that, don’t worry.
- Richard: I wish my father had told me that, but I had to learn the hard way.
|
…What?
Damn straight, Richard! Tell it like it is!
Also, always connect power cables to the equipment first, and then to the power source. And always isolate the supply when performing maintenance.
Someone might be a wee bit upset about some software he’s stuck supporting. 🙂
Well said! NoSQL sure is fast, but it’s too damn dangerous for data consistency!!
Soooo… Actually I don’t know anything about NoSQL.
Is it a database system without an SQL (Structured Query Language)? How is it supposed to work then?!
thanks for the FUD Rich
@ Roachester:
Looks like it’s a database problem..in a very very very very very very simply way to explain that…..it looks like he had some very important information stored…and…now it’s gone?!?!
Well….about richard..It could be worse man….3 years ago when……..my friend…not me ಠ_ಠ …..started to work, he tried something called “drop”….it..wasn’t a very funny thing to do….
And when Sandra repeats that to her own children, it’ll be outdated and obsolete. XD
Yes. YES! Dear Lord, YES!
30+ years in IT/CompSci/SoftwareEng, 15 as DBA/DBD, and I still must suffer the fools!
*froth*
*cough*
*expire*
Okay. I’m good. The comic just hits a nerve. It is also very, VERY true.
–ZilWerks
I feel his pain…
For the uninitiated, NoSQL is a simpler database system that uses no databases systems. Weird, right?
I mean, the usual SQL system have a set of programs and services running on a machine, taking care of all the data on the bases. NoSQL is a system which allows you to have a database without needing to install one of those systems. It runs well on things that doesn’t really need to manage much data but it’s simply not reliable on bigger systems.
For example. Imagine that the webmaster of Sandra and Woo created the site using a server programming language so they don’t have to create a bunch of HTML files. Let’s suppose they don’t have comments systems or anything, just a little data telling where the comic files are and the order they should appear. A NoSQL would suffice.
But let’s suppose they want their site to do stuff like keeping comments, timed publications, access to more than one user, access with a web interface instead of thinkering with the files directly… a SQL database system would be better, since there are lots of little datas that the system would need to keep track.
This site is probably done using WordPress, which is a PHP program running on a MySQL database. Super easy to install and quite reliable.
“Also Sandra, never forget that PC is better than Mac in the long run. It has better RAM, it’s easier to navigate, the hardware- *keeps rambling*”
“Whatever dad… ” *totally doesn’t understand what he’s talking about*
Next day…
Richard: You’ve forgotten what I told you yesterday, haven’t you? That’s okay, it’ll probably be obsolete by the time it would affect you.
Sandra: Oh, the thing about a NoSQL database being the wrong choice if data consistency is business critical? Yeah, probably.
Richard: *proud dad*
@ illeatyourself:
By the way, I honestly don’t know the differences between a PC and a Mac other than the obvious, so don’t go flaming about anything I said as if I actually meant it. XD
Believe me even in SQL database it is hard to keep data consistent… I know it firsthand. Even though it is manageable if people in your company are not screw ups (wishful thinking IMO)
@ Floflo: The way SQL is designed, it pretty much forces you to keep things in a table (for those of you unfamiliar with databases, think Microsoft Excel) and to access them using hash maps (think: surfing the internet by having to type each URL in the address bar; no hyperlinks)
NoSQL databases don’t have this restriction, and so provide access methods that actually make sense with the data (e.g.: “previous” and “next”) which might be faster.
Of course, SQL is the standard for a good reason: it’s tested, dependable, and takes up little space on your hard drive
@ Alenonimo: my appologies, I didn’t see your comment
No one notice Richard’s clothings? he looks like Star Trek TOS Starfleet captain in the first and second panel.
I really like when @Frank changed his avatar. :))
@Frank: Actually, what you said is right and what Alenonimo said is wrong. Not only he got most of what he said about NoSQL databases wrong, he doesn’t even address Richard’s problem.
“Programs and services” has nothing to do with it; the important fact is that relational databases force you to maintain the same data structure for everything in the same table, while a NoSQL database allows you to have more or less freeform data structures.
Trivia: The database engine named NoSQL is not considered a NoSQL database. It’s just a relational database that doesn’t use SQL. The fun part is that it came out earlier, and the whole NoSQL movement is named after it. Weird, huh?
@ Alenonimo:
I don’t know, Zope looks pretty complex to me. If there’s one NoSQL system that scales, as Zope seems to do, there must be others.
I suspect the main issue is that an SQL database makes it easier to police what gets written into the database.
Deko wrote:
yep…
http://xkcd.com/327/
Uh…. I’m sure if I were more versed n computers, I’d get the joke. Now I feel dumb.
this is so true….
I learn the hard way too…
Actually that make a lot of sense, Richard you just gave me an idea for my work
@ Frank:
NoSQL description: [twitch, twitch]
Seems this is more Richard having had a hard day at work than actually trying to have “the talk” with Sandra in the Phil Funnie way (Doug’s dad would always choose the wrong metaphors, and the attempt would quickly derail).
With Richard, I wonder if he tries to be the open minded parent to Sandra, while giving a much sterner talk to Cloud…
Heh. Just so happens I had a lecture recently from a guy from Google about their NoSQL database. SQL uses a certain mathematical model of a database called the relational model. It tries to minimise the amount of redundant data in a database by inferring as much data as it can from other fields in the database. It also tries to maintain consistency by locking down parts of the database while updating, and ensuring all relationships are computed before allowing any more changes.
For a database such as Googles (with several billion web pages, on average 10MB of data each), this is horrendously slow.
Thus, the NoSQL databases discard data consistency, updating when it can, and essentially giving a “best guess” on a query. This means that data might well be out of data when you ask for it, but it will catch up eventually. Because changes don’t mean a ridiculous number of updates, though, the database can handle them quickly, and allow your results to arrive faster than if they’d just posted you a hard drive.
SQL is the s#&t! I can’t wait for SQL part 2!
Sandra: I’ll never ever forget that, don’t worry.
Richard: I wish my father had told me that, but I had to learn the hard way.
Woo: You should go and warn Facebook!
Holy crow! I wasn’t ready for that third panel.
I haven’t finished my first cup of coffee yet!
Research tells me it’s pronounced “no sequel.” Drat, I thought it was “no school.”
i just LOVE Sandra’s face in the last panel. It was hilarious… Had to hold in my laughter during class though.
I’ve been a SQL DBA/DBD for about 20 years, love the system and the ability to lock-in data integrity. And it is very fast. While companies like Google don’t need it for some aspects of their production and can use NoSQL, I guarantee they use full Structured Query Language databases with relational integrity internally to support business functions like payroll and ERP because those processes require absolute data integrity.
Having said that, NoSQL is one of the biggest installed platforms in the world: pretty much every smart phone has it installed. It allows the organized storage of data and is fast, and doesn’t need the guarantee of data integrity. Your phone doesn’t support joining a dozen tables to bring up payroll history, nor does it need to.
The right tool for the right job. Right now I’m expanding my horizons by brushing up on PostgreSQL, Python3, and Scientific Linux.
I am somewhat reminded of a previous strip, involving Larisa.
I have to wonder if this has any relationship with what happened over at Blind Ferret?
(Note: I love postgreSQL. For small SQL databases, SQLite rocks as well!)
There are also consistent NoSQL databases, and more yet with eventual consistency (including Cassandra). They come in so many shapes and sizes it’ll make your head spin. And it’s also a matter of how you use them.
We’re considering them in our company at the moment.
Cassandra’s eventual consistency is easily misunderstood, all it means is that if you write a record to a cluster of servers, there will be a slight delay (usually faster than you can blink) before all of the servers know about it. The worst that can happen is you read an old version of the data on the other side of the cluster. It does NOT mean the read will be garbled or from the wrong record.
Cassandra allows you to manually set the consistency level of your cluster but it is a tradeoff for consistency and performance. There is also a query language mirroring SQL for sending commands to Cassandra though that isn’t the native way to do it.
That said, it is the wrong tool for the job in a banking system where these details matter. The other issue is that Cassandra is a relatively new system that hasn’t been a thoroughly tested as SQL so it’s harder to work with. Sometimes the speed is worth it, just ask Twitter.
Cassandra also has the nifty option of being able to write more fields into your table on the fly instead of writing only the fields that were specified when the entire table was created in the beginning.
Classic Steve wrote:
It shouldn’t: it was originally “Not Only SQL”, not “No SQL”. People misinterpreting it as “No SQL” is the cause of problems like the one Richard appears to have suffered. The misinterpretation has also created a whole new nonsense cult of refusing to use SQL even when it is obviously the appropriate tool.
Sir?
On the comment posting rules, it says not to post “slanderous accusations directed at other users, the creators, companies or other institutions”. Since the comments are written, it wouldn’t be slander. It would be “libel.”
Slander is spoken.
Libel is literary.
Septirath wrote:
That may be true for the verbs or nouns, but slanderous is the adjective, meaning that the statements are described as “harmful and often untrue; tending to discredit or malign”. “Libel” doesn’t have an appropriate adjective.
There are plenty of NoSQL paths into InnoDB tables that can work really well for reading. There’s the memcache plugin for MySQL and the Percona server has HandlerSocket built in which reads directly from the database tables. It’s tricky to get used to, but can really up the performance before needing to go to a cluster system.
Reading these is like an event, I don’t forget it, and can’t wait untill the next one. I wish I had found it before. It’s so freaking adorable!
Sandra doesn’t know it now, but if she’s going to make a name for herself in mathematics, his father is pushing her in a good direction.
@ Floflo:
Try MongoDB.
I dunno, MarkLogic has ACID compliance and has been around long enough to iron out a lot of those kinds of issues. http://developer.marklogic.com/blog/marklogic-and-nosql-from-2011-repost
Sounds about right.
@ Wayne Zombie:
I’m pretty sure I could install an SQL driver on my phone if I wanted too. Assuming that there isn’t one in the default android stack, which seems a quite likely to me.
It all depends on the purpose.
When dealing with large sets of similar data, e RDB w/ SQL is the best.
Documental stores, on the other hand, rule with NoSQL databases.
I’ve seen *very* large applications on top of MongoDB. Especially an image board with a million of pictures, 100k users, several million comments, plus a forum with as many posts, and a huge spaghetti net of thousands of tags applied to every image.
Man, that thing is *fast*.
@ WJS:
Android apps indeed save data in SQLite databases.
@ Deko:
dear god this is my father. This is just a lil too real
I’ll add: USB is not an industrial protocol, and should not be used where communication is critical to machine function.
@ Malchus:
It will never be outdated because it is based on fundamental mathematics.