Slashdot Mirror


SQL Vs. NoSQL: Which Is Better?

Nerval's Lobster writes "For the past 40-some years, relational databases have ruled the data world. Relational models first appeared in the early 1970s thanks to the research of computer science pioneers such as E.F. Codd. Early versions of SQL-like languages were also developed in the early 70s, with modern SQL appearing in the late 1970s, and becoming popular by the mid-1980s. For the past couple of years, the Internets have been filled with heated arguments regarding SQL vs NoSQL. But is the fight even legitimate? NoSQL databases have grown up a bit (and some, such as Google's BigTable, are now mature) and prove themselves worthy. And yet the fight continues. Tech writer (and programmer) Jeff Cogswell examines both sides from a programming perspective."

306 comments

  1. Flamebait in Headline by Fwipp · · Score: 5, Insightful

    SQL and NoSQL are different, with different use cases.

    1. Re:Flamebait in Headline by medv4380 · · Score: 5, Funny

      Actually the headline is a typical news headline stated as a questions. So the answer is always no.

    2. Re:Flamebait in Headline by Jeremiah+Cornelius · · Score: 4, Insightful

      "Hammer or Shovel! Only one of these will leave the room as the single, ULTIMATE TOOL!"

      I believe, in such cases, that the answer is always "The Ohio Players".

      --
      "Flyin' in just a sweet place,
      Never been known to fail..."
    3. Re:Flamebait in Headline by s.petry · · Score: 3, Insightful

      Exactly! As with all technology each has a purpose. I remember the old days when all we had was binary databases, the reason for the SQL was that the binary blobs could not do everything needed. While I find it interesting that we have seen a lot of growth in the older technology, it is not something new. SQL won't be going away, just like NoSQL never really went away (it just saw negative to no growth for a very long time).

      Remove the bias and fan boy status and what do you have? You have 2 technologies to choose from which can get the job done regardless of your use case.

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    4. Re:Flamebait in Headline by gl4ss · · Score: 4, Insightful

      The heated battle is mostly heated because Google keeps throwing oil into fire. Oracle and Microsoft gladly showed that relational big corporate databases are much faster and better than NoSQL. But Google keeps promoting their own shit because it's their own shit. And it's shit.

      that statement makes no sense. just answering the headline with "BABABABA" makes more sense.

      maybe if the submitter of the article had included an actual scenario..

      --
      world was created 5 seconds before this post as it is.
    5. Re:Flamebait in Headline by Anonymous Coward · · Score: 5, Funny

      SQL and NoSQL are different, with different use cases.

      No. Wrong. Clearly, $CHOICE is superior in all cases. If you think you've found a situation in which !($CHOICE) is better, you're obviously using $CHOICE wrong and should RTFM before you EVER say anything against it again, n00b.

    6. Re:Flamebait in Headline by cryptographrix · · Score: 1

      Agree - this is total flamebait.

    7. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      So you are saying that NoSQL is better? :-)

    8. Re:Flamebait in Headline by Eponymous+Hero · · Score: 4, Insightful
      agreed. even the summary is nothing but provocation.

      NoSQL databases have grown up a bit (and some, such as Google's BigTable, are now mature) and prove themselves worthy. And yet the fight continues

      too bad the ones perpetuating the fight haven't grown up.

      Tech writer (and programmer) Jeff Cogswell examines both sides from a programming perspective.

      no thanks. how about we just talk rationally about scenarios in which you would prefer to use one or the other? how about speaking intelligently about the benefits of both, and how they should be properly used, instead of giving any attention to the bickering that is only going on by people who don't know how to use either one properly?

      check out this gem FTA:

      2. Relational data doesn’t map well to typical programming structures that often consist of complex data types or hierarchical data. Data such as XML is especially difficult because of its hierarchical nature. Complex objects that contain objects and lists inside of them do not always map directly to a single row in a single table.

      you mean the developer actually has to do his job? the developer actually has to tell his ORM what he's thinking, and organize his objects in a way that makes the data well understood? shudder to think. "i thought it was all drag and drop in visual studio, i never became a programmer to WRITE CODE!!! omg!!"

      but wait, here's #3 in their list:

      3. Relational data doesn’t map well. Combine that with the need to handle the syntax of SQL, and writing client code for accessing SQL databases becomes difficult.

      look, it's just #2 written a different way. why should i care what incompetent programmers and dbas think about nosql? i eat their breakfast for lunch everyday.

      --
      insensitive clod overlords obligatory xkcd car analogy russian reversals whoosh pedant fanbois ftfy in 3...2...1..PROFIT
    9. Re:Flamebait in Headline by GuldKalle · · Score: 3, Interesting

      The name noSQL itself is flamebait.
      But yes, a much more informative article would br: SQL or NoSQL - when to use what.

      --
      What?
    10. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      Perhaps if more articles were promoted that explained what use cases are mapped to which solution, then we might see far fewer of these articles that advocate one solution for all use cases.

      Out of curiosity, is there a canonical document somewhere that does explain the mapping?

    11. Re:Flamebait in Headline by Anonymous Coward · · Score: 5, Insightful

      Last I checked, Google is not selling "their own shit" as a product.

      I am speaking here as a professional SQL developer with nearly a decade of experience and a very solid knowledge of relational theory. For many of the things we use relational DBs for, they are the best solution. But there are a lot of other applications for which a RDBMS is overkill, and a tool like BigTable is ideal. There are others where a single XML file would be better. There are others where a simple text file would be better.

      If people would stop arguing that you have to use a jack-hammer to solve a problem best suited to a ballpeen, we wouldn't have these arguments.

    12. Re:Flamebait in Headline by SQLGuru · · Score: 4, Insightful

      And thus, the answer (as in most cases with technology) is "it depends".

      There is no one tool to rule them all. The various languages and technologies were created to solve a specific problem that a different tool or technology didn't quite address well. SQL is great. NoSQL is great. Both have their place. The key is using the right tool for the problem and to quit thinking one is better than the other.

    13. Re:Flamebait in Headline by Fnordulicious · · Score: 1
    14. Re:Flamebait in Headline by postbigbang · · Score: 1

      Exactly.

      But there's no fun in not writing a Huffington Post-like headline to whore pageviews. Must be a mild Monday.

      --
      ---- Teach Peace. It's Cheaper Than War.
    15. Re:Flamebait in Headline by Anonymous Coward · · Score: 1

      Pish, if you have every played minecraft you would know the only tool you need is a pickaxe.

    16. Re:Flamebait in Headline by VGPowerlord · · Score: 4, Funny

      SQL and NoSQL are different, with different use cases.

      No. Wrong. Clearly, $CHOICE is superior in all cases. If you think you've found a situation in which !($CHOICE) is better, you're obviously using $CHOICE wrong and should RTFM before you EVER say anything against it again, n00b.

      Ah, but then you have to look at the implications of $UNRELATED_PROBLEM. After all, $CHOICE can't $BUZZWORD1, at least not without support for $BUZZWORD2.

      Once $CHOICE supports those, then maybe it'll be better in all cases.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    17. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      "You have 2 technologies to choose from which can get the job done regardless of your use case."

      Almost correct, SQL is one of the choices, but there are many NOSQL choices.

    18. Re:Flamebait in Headline by marcosdumay · · Score: 2

      Not relational databases are the only possible tool for companies that have a usage pattern similiar to Google's. In the real life, that set includes Google, and nobody else.

    19. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      Abba Abba would make more sense than babababa.

    20. Re:Flamebait in Headline by s.petry · · Score: 1

      Wow! Someone that knows how to use a quantification fallacy. I'm not surprised really, lately it seems to be nearly as popular as an appeal to emotion.

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    21. Re:Flamebait in Headline by Anonymous Coward · · Score: 1

      SQL vs NoSQ:

      It really depends on the application...If you have, for instance, a classifieds site... in a typical database (acid/sql) you would have many tables, with many joins typical to retrieve the data you want for a simple page view. In a no-sql environment, you would probably want 3 base collections, one for accounts, one for articles, one for payments (though payment systems are better suited to SQL than Non-Relational DBs). With SQL, when you request a page, you will query against the article table, then join the various property tables, for the type of article for tags/options/etc... you may join against the account table for contact information, if very normalized, you may then join again for email addresses, phone numbers, addresses etc. Each of these lookups will query against multiple tables' indexes (provided they're properly indexed) to retrieve related records to be collated into a single object model, to then be rendered to the output. ORMs take care of a lot of this heavy lifting, but on millions of results, there is an impact. With a Non-Relational DB, all related information is usually a full serialized object graph of everything related to that article, with specific options/properties codified making the data store "dumb".

      Now for searching... with SQL these queries will only ever run as fast as a single process on a single system can execute results. With non-relational systems this can typically be split/spread across many servers for an aggregated result. In the real world, with SQL, you will typically load several replicated (often read-only) servers as a front for your search queries, and for display lookups. With NoSQL, you will typically scale your data across several servers. This brings us to caching. With SQL, when you need very large volume support, you will generally fall back to a caching system such as memcached, you may even cache your output rendering (full, partial and/or doughnut). With NoSQL you don't generally need cached results for data, but may still do output caching. Ironically, more and more, read-only data stores are now being fronted with the object graph in no-sql for faster lookups, with the SQL db as the authority, and the application persisting to both...

      Transactional data... when dealing with highly transactional data (often Money data), SQL is usually better suited, as many Non-Relational DBs don't support atomic+consistent commits. With No-SQL, you can work around this by using a MessageQueue system as an authority for transactional updates, that ensures only one at a time goes through.

      NoSQL is better at non-transactional data where read/lookup speed is king. NoSQL is better at serialization of codified objects. NoSQL is worse at transactional systems. SQL is better at transactional systems, and has a simpler query system to use (compared to Map/Reduce). SQL has performance penalties for lookups, and often requires additional systems to scale well...

      In closing, each *can* do a given job, but a complete solution requires different implementations. In my own humble opinion, for a public facing website, having your front-end backed by a Non-Relational DB is usually a better use case. YMMV.

    22. Re:Flamebait in Headline by hairyfeet · · Score: 1

      Well if everyone would like a similar topic that is more thought provoking (at least to me, might be to others as well) I'll be happy to give everybody one: Is it better to make things easier, or to make things more difficult? Because that is what i think a LOT of these programmer arguments boil down to.

      Allow me to explain. From my little chair here in the shop as an outsider who frankly hasn't been a day to day coder since the days of VB6 it all seems to boil down to being in one of two camps. in the first camp is those that think IDEs and tools should be designed to make the basics as simple as possible, so that the programmer can concentrate on the actual interesting stuff instead of the hum drum. that would be your Visual Studio and other "big tool" users, and on the other side there is the group that seems to think that tools should be made as simple as possible, with little to no help or handholding, because they believe it will teach them to be 'real programmers' or GTFO so that real programmers can do the work. These are the ones using nothing but a CLI and a txt editor to get things done.

      Now as an outsider i would think the answer would be obvious, to simply use whichever you preferred, but these two camps really do seem to hate each other. the big tool guys seem to think the txters are a bunch of elitists, trying to use obscurity and obtuseness to hold onto power, while the txters look down on the big tool types as nothing more than glorified script kiddies. You see any article that talks about languages and it always ends up with a bunch of posts from one of these two groups, especially if the language is used in VS because the txters seem to have a seething hatred for VS.

      So there you go, making things easy or harder in programming, discuss amongst yourselves.

      --
      ACs don't waste your time replying, your posts are never seen by me.
    23. Re:Flamebait in Headline by Dragonslicer · · Score: 5, Funny

      Complex objects that contain objects and lists inside of them do not always map directly to a single row in a single table.

      This is so true. If only relational databases had a way to connect a row in one table to a row in another table. It would be even more awesome if it could connect a row in one table to more than one row in another table. Just imagine if you could, I dunno, like, join the data together or something.

    24. Re:Flamebait in Headline by fahrbot-bot · · Score: 1

      If people would stop arguing that you have to use a jack-hammer to solve a problem best suited to a ball-peen [hammer] ...

      Exactly. Determine the best tool for *that* job and get on with it. Yes, "best" may be subjective, but that's where experience, education and analysis help. So...

      • SQL vs. NoSQL - it depends.
      • Pen vs. Sword - it depends.
      • Gun vs. knife - it depends (as the Mythbusters recently showed, apparently on distance and skill).
      • Windows vs. Linux - it depends (sigh, and I hate Windows).
      • Wendy's Fries vs. McDonalds - it depends.
      • Big breasts vs. small - small.
      • Star Trek vs. Star Wars - Trek.
      • Perl vs. Python - Perl.
      • Emacs vs. Vi - Emacs.

      [ Sorry, couldn't help myself on those last few :-) ]

      --
      It must have been something you assimilated. . . .
    25. Re:Flamebait in Headline by KhabaLox · · Score: 1

      Last I checked, Google is not selling "their own shit" as a product.

      Correct. They are selling our own shit.

      --
      Ceci n'est pas un sig.
    26. Re:Flamebait in Headline by i_ate_god · · Score: 2

      And thus, the answer (as in most cases with technology) is "it depends".

      There is no one tool to rule them all. The various languages and technologies were created to solve a specific problem that a different tool or technology didn't quite address well. SQL is great. NoSQL is great. Both have their place. The key is using the right tool for the problem and to quit thinking one is better than the other.

      Every time I see this debate, this is what I always see. "it depends"

      it depends on WHAT?! NoSQL people keep touting features, SQL people keep touting history, neither say "well, RDBMS is best suited for [insert descriptions here], while MongoDB is best suited for [insert descriptions here] and Lucene/Solr is best suited for [insert descriptions here]".

      --
      I'm god, but it's a bit of a drag really...
    27. Re:Flamebait in Headline by i_ate_god · · Score: 1

      you mean Python and Vi don't you?

      I really don't miss perl, even if it was as alcohol friendly of a language as it gets.

      --
      I'm god, but it's a bit of a drag really...
    28. Re:Flamebait in Headline by hackula · · Score: 1

      Star Trek vs. Star Wars - DS9

    29. Re:Flamebait in Headline by Sarten-X · · Score: 5, Insightful

      That's because the factors for the "it depends" answer depends on other aspects, like the exact characteristics of your application. Here's some rules of thumb:

      NoSQL is good for statistics, where a few missing records won't matter. It's good for absorbing an enormous number of write operations at high speed. It's good for parallel computation across distributed data sets. It's good for when you have a lot of data to store, and little insight into how it will be queried in the future (management loves this one).

      RDBMS is good for absolute consistency. It's good for serving an enormous number of parallel reads at high speeds. It's good for legacy applications, and applications that have to interface with legacy applications. It's good for small-scale projects that just need to work now. It's good for compatibility.

      Of course there are exceptions to every statement I just made, but the nuances are subtle. Just bear in mind that NoSQL is generally more about single-record storage, where a RDBMS is by nature based around sets. If your algorithms are more easily applied to one model over the other, it might be a good indicator of what kind of storage to look at.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    30. Re:Flamebait in Headline by PhrstBrn · · Score: 3, Informative

      Every time I see this debate, this is what I always see. "it depends"

      it depends on WHAT?! NoSQL people keep touting features, SQL people keep touting history, neither say "well, RDBMS is best suited for [insert descriptions here], while MongoDB is best suited for [insert descriptions here] and Lucene/Solr is best suited for [insert descriptions here]".

      RDBMS is better for dealing with transactions. NoSQL is really bad at dealing with transactions, as they don't guarantee immediate consistency (and if they do, it comes with a huge performance cost, slower than that of an RDBMS). NoSQL is better for general data warehousing. You can do data warehousing with a RDBMS, it's just extremely inflexible at that task.

    31. Re:Flamebait in Headline by hackula · · Score: 1

      The txters are elitists and the VSers are morons. I spend half my time in VS and half my time in VS, therefore I am both. It's great being the best.

    32. Re:Flamebait in Headline by hackula · · Score: 1

      Thank you. Jesus F'ing Christ, every time someone criticizes relational databases, they seem to spew out ignorance on the subject.

    33. Re:Flamebait in Headline by afidel · · Score: 3, Informative

      It very much depends on the kind of data warehouse. If it's a financial data warehouse I think using NoSQL is insane (we report to the SEC out of our data warehouse, transactional integrity is important!). If your data warehouse is just trying to answer the question "what do users of my social media site find interesting" then sure, go at it with a NoSQL solution. Ultimately with NoSQL you're trading data integrity for performance/scalability, which is fine as long as you understand what the tradeoff is.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    34. Re:Flamebait in Headline by K.+S.+Kyosuke · · Score: 1

      Last I checked, Google is not selling "their own shit" as a product.?

      Even more importantly, BigTable is much less a DBMS and much more a tool for building application-specific storage. The latter will always be faster but less flexible once deployed. The comparison of these two is entirely pointless. DBMS's in the modern sense were invented specifically because people didn't want to care about physical layout and storage and wanted a universal tool suitable for a wide range of applications instead, with the option of deploying new unanticipated applications over the same data with reasonable ease and with a low risk of hitting a snag in form of overspecialized on-disk data formats (which the normalized relational model avoids). If Google ever wanted to sell BigTable's code, the customers wouldn't be banks and corporations, but CERN and other similar institutions with specialized HPC code. Perhaps the Wall Street guys could have some use for it, seeing as they like APL, K and similar weird stuff so much.

      --
      Ezekiel 23:20
    35. Re:Flamebait in Headline by maxwell+demon · · Score: 1

      SQL and NoSQL are different, with different use cases.

      No. Wrong. Clearly, $CHOICE is superior in all cases. If you think you've found a situation in which !($CHOICE) is better, you're obviously using $CHOICE wrong and should RTFM before you EVER say anything against it again, n00b.

      Ah, but then you have to look at the implications of $UNRELATED_PROBLEM. After all, $CHOICE can't $BUZZWORD1, at least not without support for $BUZZWORD2.

      Once $CHOICE supports those, then maybe it'll be better in all cases.

      $BUZZWORD is totally overrated! It's $OTHER_BUZZWORD which counts! And only $CHOICE really supports $OTHER_BUZZWORD. Yes, !($CHOICE) formally also supports $OTHER_BUZZWORD, but that's no true support. Only $CHOICE has true support for $OTHER_BUZZWORD. And that clearly proves that $CHOICE is better.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    36. Re:Flamebait in Headline by idontusenumbers · · Score: 1

      2. Relational data doesn’t map well to typical programming structures that often consist of complex data types or hierarchical data. Data such as XML is especially difficult because of its hierarchical nature. Complex objects that contain objects and lists inside of them do not always map directly to a single row in a single table.

      you mean the developer actually has to do his job? the developer actually has to tell his ORM what he's thinking, and organize his objects in a way that makes the data well understood?

      If one will be extensively manually editing ORM configuration, one might consider not using ORM and learning a new "language" for configuring the ORM. Stick with a traditional complicated 'data layer' instead of replacing it with another or adding a second complicated data layer.

      I believe the author is trying to say "SQL begets complicated data translation between applications and the database whereas NoSQL does not". Most applications do not access data in the typical NoSQL structure of just key value pairs. As such using NoSQL will generally require a similar translation as the author is illegitimately implying is only necessarily for SQL.

    37. Re:Flamebait in Headline by Anonymous Coward · · Score: 1

      i love the "google uses nosql" meme. Google has an army of extremely smart engineers/researcher supporting their systems. You (for 99.99999% of "you") don't... *YOU* should use a proven solution - which is almost certainly a relational SQL database.

    38. Re:Flamebait in Headline by PhrstBrn · · Score: 1

      It very much depends on the kind of data warehouse. If it's a financial data warehouse I think using NoSQL is insane (we report to the SEC out of our data warehouse, transactional integrity is important!).

      That's what I said, a RDBMS is better when you are dealing with transactions. Obviously this includes the storage of said transactions (databases aren't some sort of black hole!)

    39. Re:Flamebait in Headline by Eponymous+Hero · · Score: 1

      and here i thought the author was trying to stoke the fires of this particular religious database war. an overwhelming majority of responses here indicate most of us are tired of this stupid war, and are more interested in knowing how and when to use a particular tool -- rather than falsely imply that it's one or the other.

      sql or nosql? don't bother me.

      sql or nosql for X situation? describe X to me and we'll talk it over. there is no redeeming value in arguing one or the other for their own sakes. if we had a unique use case to discuss that made the decision really blurry, that would be interesting and helpful. religious wars are just fucking stupid all around.

      --
      insensitive clod overlords obligatory xkcd car analogy russian reversals whoosh pedant fanbois ftfy in 3...2...1..PROFIT
    40. Re:Flamebait in Headline by Anonymous Coward · · Score: 1

      your confusion is that you assume that a gui is easier to get things done in than a cli would be. For simple obvious things, that is mostly true. For the stuff that actually takes real work, the gui is just in the way most of the time. If you are working on the big issues, the cli is much faster and efficient than a mouse.

    41. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      SQL and NoSQL are different, with different use cases.

      No. Wrong. Clearly, $CHOICE is superior in all cases. If you think you've found a situation in which !($CHOICE) is better, you're obviously using $CHOICE wrong and should RTFM before you EVER say anything against it again, n00b.

      Ah, but then you have to look at the implications of $UNRELATED_PROBLEM. After all, $CHOICE can't $BUZZWORD1, at least not without support for $BUZZWORD2.

      Once $CHOICE supports those, then maybe it'll be better in all cases.

      NONSENSICAL STATEMENT INVOLVING PLANKTON

      http://bash.org/?23396

    42. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      Thank you AC and VGPowerlord, when I read posts like yours my heart warms and I know there is still hope on /.!

    43. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      I prefer the Not Only SQL interpretation (got it at MS TechEd '12)

    44. Re:Flamebait in Headline by theshowmecanuck · · Score: 1

      That's also the answer to 'what does it taste like having oral sex with an 80 year old?': Depends.

      --
      -- I ignore anonymous replies to my comments and postings.
    45. Re:Flamebait in Headline by LordLucless · · Score: 3, Insightful

      In that case, I think the answer to "what is the greatest tool?" would be "the person asking the question".

      --
      Just because you're paranoid doesn't mean there isn't an invisible demon about to eat your face
    46. Re:Flamebait in Headline by wvmarle · · Score: 1

      Exactly. Why are we even discussing this?

    47. Re:Flamebait in Headline by curunir · · Score: 2

      The name noSQL itself is flamebait.

      It's also incredibly misleading. If they'd named it correctly, it would be NoACID. That's the real issue at hand...making a different CAP compromise. The programming interface is really not that big of an issue. Yes, it's different, but as programmers we should be able to adapt to both fairly easily. What really is important is how to achieve high scalability. People have rightly zeroed in on the fact that if your application can tolerate eventual consistency, that problem can get a lot easier than the ACID-compliant data stores. The fact that those data stores all use SQL is more of a coincidence or a byproduct of the history of how databases developed rather than a fact of life...you can have a non-ACID SQL database and you can have an ACID non-SQL database.

      The whole article is wrong-headed as it only examines the programming interface which is, for the most part, unimportant. A valuable discussion of the topic would have examined what an ACID-compliant database would need to do to achieve the kinds of scale that a non-ACID database can and would have looked into the kinds of application logic that would be necessary to cope with the eventual consistency situation in non-ACID databases. Instead we got a primer on how to use both types of databases without any why, when or gotchas.

      --
      "Don't blame me, I voted for Kodos!"
    48. Re:Flamebait in Headline by thePowerOfGrayskull · · Score: 1

      Personally I find the question of oranges v. trashcan to be far more prestigious.

    49. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      Agreed, the issue becomes heated due to the antagonsing name, "NoSQL". They should have just called it, OmgSQLSUXSoBadMaenz!!!1one

    50. Re:Flamebait in Headline by smellotron · · Score: 1

      Star Trek vs. Star Wars - Trek.

      I really have to say "it depends" on this one as well. Star Wars fills the same emotional need for me as LotR, whereas Star Trek fills a niche somewhere in between The Replacement Killers and Patch Adams.

      Emacs vs. Vi - Emacs.

      Ugh. You people type so many keystrokes, and yet I never see things get done any faster. Vim for POTUS!

    51. Re:Flamebait in Headline by smellotron · · Score: 1

      $BUZZWORD is totally overrated! It's $OTHER_BUZZWORD which counts! And only $CHOICE really supports $OTHER_BUZZWORD. Yes, !($CHOICE) formally also supports $OTHER_BUZZWORD, but that's no true support. Only $CHOICE has true support for $OTHER_BUZZWORD. And that clearly proves that $CHOICE is better.

      You should be using prepared statements and then explicitly passing in buzzwords. Do you have any idea how many argument injection vulnerabilities you have here?

    52. Re:Flamebait in Headline by jaymemaurice · · Score: 1

      Or vagina.

      (sorry just read that Slashdot article about that Microsoft dance)

      --
      120 characters ought to be enough for anyone
    53. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      i eat their breakfast for lunch everyday.

      Uh, yuck.

    54. Re:Flamebait in Headline by williamhb · · Score: 2

      Last I checked, Google is not selling "their own shit" as a product.

      They were trying to work on a product like that, but they just couldn't get it polished.

    55. Re:Flamebait in Headline by dintech · · Score: 1

      maybe if the submitter of the article had included an actual scenario..

      I think we can infer from the question that the submitter doesn't understand very much.

    56. Re:Flamebait in Headline by Glock27 · · Score: 1

      After all, $CHOICE can't $BUZZWORD1, at least not without support for $BUZZWORD2.

      Once $CHOICE supports those, then maybe it'll be better in all cases.

      Brilliant! I'm quite sure the next version of Oracle will include "Oracle® $uperNoSQL extensions", making it the obvious choice for ANY database application whatever. (At least if you're willing to sell your house to pay for the license.)

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    57. Re:Flamebait in Headline by julesh · · Score: 1

      But $(CHOICE) doesn't use a textual query language, so you can't have an injection vulnerability. ;)

    58. Re:Flamebait in Headline by julesh · · Score: 1

      This is very true. The problem I had in my latest project, however, is a little trickier: objects containing lists of objects of polymorphic type. You can't have a foreign key that can reference rows in multiple tables.

    59. Re:Flamebait in Headline by Bengie · · Score: 1

      My points expired a few minutes before reading your post. /sigh I don't think people realize the choke-point ACID creates. It's like a global lock.

    60. Re:Flamebait in Headline by rs79 · · Score: 1

      Go chase down your Google Chrome history file. Indicies, journals and files with sql-ish names. What are they doing here?

      --
      Need Mercedes parts ?
    61. Re:Flamebait in Headline by Quirkz · · Score: 1

      I've got no mod points, so I just wanted to say thank you. I've seen half a dozen articles about the rivalry between these sets without getting as much useful information as in your short summary. Much appreciated.

    62. Re:Flamebait in Headline by Anonymous Coward · · Score: 0

      how about we just talk rationally about scenarios in which you would prefer to use one or the other? how about speaking intelligently

      How about learning what the shift key is for, you stupid nigger bastard.

    63. Re:Flamebait in Headline by wolja · · Score: 1

      Last I checked, Google is not selling "their own shit" as a product.

      I am speaking here as a professional SQL developer with nearly a decade of experience and a very solid knowledge of relational theory. For many of the things we use relational DBs for, they are the best solution. But there are a lot of other applications for which a RDBMS is overkill, and a tool like BigTable is ideal. There are others where a single XML file would be better. There are others where a simple text file would be better.

      If people would stop arguing that you have to use a jack-hammer to solve a problem best suited to a ballpeen, we wouldn't have these arguments.

      As ever the problem is that Managers want a single solution for all issues. The real world has never worked like that.

      So because the Managers are swayed by marketing buzz they decide everything will be NoSql desoite their techos telling them this will cause more issues. All they see is the up front savings.

      Until Managers are stopped from making decisions like this stories like this that totally miss the point will continue.

      --
      Wolja Future Tombstone: Shit happened then I died
    64. Re:Flamebait in Headline by Dushnock · · Score: 1

      Huh ? I always thought the answer is (was) 42 !!?

      --
      "Soylent Green is people." (1973)
    65. Re:Flamebait in Headline by Dushnock · · Score: 1

      it depends on WHAT?! NoSQL people keep touting features, SQL people keep touting history, neither say "well, RDBMS is best suited for [insert descriptions here], while MongoDB is best suited for [insert descriptions here] and Lucene/Solr is best suited for [insert descriptions here]".

      That's why you have to study.
      Don't expect people to give you all the answers. Go forth and conquer, aks slashdot ;)
      Alternatively, go to school (highschool, university, whatever) and study.

      Read books.

      "It depends" is true for any tool. And computers are tools, and software is tool (are tools?)
      You, aka The User [tm] have to learn how to (best) use your tools and which tools are best for which task. (Perhaps here I might come close enough to accepting the limitation in the EULA that says a program may not be fit for just any use :] hmmm )

      This is true for hammers, screwdrivers, books, cars... of course, it is also true for computers and such.

      --
      "Soylent Green is people." (1973)
  2. One doesn't have to be "better" by MetalliQaZ · · Score: 1, Insightful

    Well, at least not better overall. Each solution may be more suited to solving a particular problem. You can also use both, or neither!

    --
    "Here Lies Philip J. Fry, named for his uncle, to carry on his spirit"
    1. Re:One doesn't have to be "better" by micheas · · Score: 1

      You mean like using lucene and mysql for a website? I haven't done that since ... oh wait I did that for the last four websites I've done.

      Lucene's MLT query is really useful. I woudn't want use Lucene for storing authentication hashes though.

      The question is not which is better, the question is when should you use each of them.

  3. "No" by Anonymous Coward · · Score: 5, Informative

    "No".

    1. Re:"No" by TeknoHog · · Score: 3, Funny

      *sigh* Oh, for fuck's sake, some hipster asshole found that someone coined some convenient, soundbite-sized phrase, so now all the we're-definitely-not-sheep! are going to think they're smart and clever by linking to it every other fucking article, aren't they?

      No.

      --
      Escher was the first MC and Giger invented the HR department.
  4. Pretty good article, cheezy headline by Anonymous Coward · · Score: 0

    No points for guessing the author's answer to the question posed by the title.

  5. Well by Anonymous Coward · · Score: 0

    I use whatever RMS uses, so yeah.

    1. Re:Well by Pieroxy · · Score: 1

      Did you forget to link to the link?

      No.

  6. Stupid question by adturner · · Score: 5, Insightful

    Might as well just ask: Which is better a BMW M3 or Ford F350 4x4 with 6.7 diesel?

    Both are great, have their place and will get you from point A to B, but neither are a practical replacement for the other.

    My current programming project is a mixture of Cassandra and Oracle (although, to be honest, I'd rather be using PostgreSQL or even MySQL).

    1. Re:Stupid question by Anonymous Coward · · Score: 2, Interesting

      Might as well just ask: Which is better a BMW M3 or Ford F350 4x4 with 6.7 diesel?

      Both are great, have their place and will get you from point A to B, but neither are a practical replacement for the other.

      My current programming project is a mixture of Cassandra and Oracle (although, to be honest, I'd rather be using PostgreSQL or even MySQL).

      ^ This.

      I am the architect of a NoSQL solution based on Hadoop (and some of its other related projects). The value Hadoop adds to our organization is undeniable ... but so are the traditional RDBMS where we store distilled information from our Hadoop cluster.

    2. Re:Stupid question by Anonymous Coward · · Score: 0

      MySQL doesn't even honor the "null values are not distinct" in the standard. An SQL that allows 'group by' in a select with more than one column and no aggregate functions is not an SQL to be taken seriously.

    3. Re:Stupid question by Villageidiot9390 · · Score: 2

      One question that I've always had: Why do people still use Oracle or other big name, expensive RDBMS when there are open-source offerings as complete as PostgreSQL? Is it a matter of organizational momentum?

    4. Re:Stupid question by Anonymous Coward · · Score: 0

      Oracle offers complete turnkey solutions, including the support contracts the PHBs adore so.

    5. Re:Stupid question by lambent · · Score: 4, Informative

      Ability to tune for performance on know hardware; better permissions structures; ability to get support from the company; data security, replication, backup; clustering; not wanting to reinvent the wheel using man-hours when you can more easily pay for a known working solution that is well documented ...

      etc. There are a lot of reasons.

    6. Re:Stupid question by ebunga · · Score: 1, Interesting

      Commercial offerings give you someone to sue when things go bad.

    7. Re:Stupid question by adturner · · Score: 1

      In my case, kicking and screaming. Our IT dept uses Oracle extensively for various things and for various reasons that basically forced my team to also use Oracle although we'd all prefer PG or yes even MySQL. Now that my team is moving to JRuby (which is awesome btw), Oracle driver suckage is less of a problem, but we all find Oracle a PITA to use query wise and it's not nearly as well supported in the OSS community for things like ActiveRecord (although recent versions of the oracle_enhanced-adapter seem to have solved many of our problems), etc.

      That said, there have been some things that Oracle does really well and actually makes easy compared to PG/MySQL, but it's been a constant learning exercise for us. That said, little things like having to use WHERE ROWNUM = X, rather then LIMIT which basically always requires a subselect to get correct results is just annoying and makes our code less portable.

      Not to say other RDBMS don't have their own set of problems, but at least we have a few decades worth of combined experience of PG/MySQL so we know how to avoid/work around them. But hey AC, thanks for the troll!

    8. Re:Stupid question by rtaylor · · Score: 2

      Have you ever tried suing Oracle?

      It might give you a target but you've not going to extract anything from them except perhaps 3 months credit on the licensing costs.

      --
      Rod Taylor
    9. Re:Stupid question by Ryanrule · · Score: 1

      Ford mustang of course

    10. Re:Stupid question by jbolden · · Score: 1

      They aren't complete if you want advanced features. Just to give you a list of major stuff that's missing:

      http://www.oracle.com/technetwork/articles/grid/index-099021.html

    11. Re:Stupid question by The+Dancing+Panda · · Score: 4, Insightful

      Not necessarily. MSSQL and Oracle come out as legitimately faster in many use cases. MSSQL is generally easier to set up and use in a small to midsized application than most other offerings, and the code written to use the database can be easily migrated from SQL Express all the way to MSSQL enterprise. MySQL is great, but has been shown to not perform as well on giant data sets. Oracle usually wins in those cases, but it is a BITCH to configure. MSSQL also supports a lot of different data types natively.

      The Open Source solutions are great for a small project, but from many DBAs I've spoken to, don't scale well.

      I should note that I use MySQL on all my home projects. It works wonders. But I wouldn't choose it if I was looking to do something that requires blazing fast query speeds. MS and Oracle have some good products here, despite Oracle not being able to design a user interface to save their lives. MS is good because they bought it, but the Management Studio is quite nice to work in (MS is very good at making developer tools).

    12. Re:Stupid question by Carewolf · · Score: 1

      Besides QtJsonDb will beat them all! In a completely different game..

    13. Re:Stupid question by VGPowerlord · · Score: 1

      That said, little things like having to use WHERE ROWNUM = X, rather then LIMIT which basically always requires a subselect to get correct results is just annoying and makes our code less portable.

      One of the sad parts of SQL is that row limiting (to my knowledge) isn't part of the standard. So, unless a database explicitly adds support for another database's syntax it doesn't happen.

      For example, from the MySQL docs:

      For compatibility with PostgreSQL, MySQL also supports the LIMIT row_count OFFSET offset syntax.

      Until MySQL 4, MySQL's LIMIT command was LIMIT x,y which was the equivalent of Postgres's LIMIT y OFFSET x.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    14. Re:Stupid question by mla_anderson · · Score: 1

      PostgreSQL also has providers of support contracts. I'm a little familiar with EnterpriseDB

      --
      Sig is on vacation
    15. Re:Stupid question by Anonymous Coward · · Score: 0

      Never had any issues with PostgreSQL scaling, myself. Yes, have had some issues with MySQL scaling, as have most other developers at one point or another. The only reason I have found to go to Oracle is if the company already has a license, or they are using an off-the-shelf solution that requires Oracle. The same goes for MSSQL in my experience, except if the company has in-house .NET developers, since MSSQL meshes quite nicely with that framework.

      But in most other situations, MySQL and PostgreSQL work beautifully depending on the situation.
       

    16. Re:Stupid question by marcosdumay · · Score: 2

      Ability to tune for performance on know hardware

      That means you don't know the hardware you buy for other companies, only from Oracle?

      better permissions structures

      Yes and no. In some ways the permission structure of Postgres is more versatile than Oracle's. In other ways it's not. The differences between the big DBMS are getting less and less relevant each day.

      ability to get support from the company

      As oposed to the ability to get support from hundreds of companies, all with the same level of access to Postgres as Oracle's people have to Oracle, and with as competent people. Oh, and as a bonus, you get to deal with Oracle. They are a great company at parties.

      data security, replication, backup

      Are you joking? Are you really implying Oracle does something here that Postgres doesn't?

      clustering

      Oracle is way behind on clustering.

      not wanting to reinvent the wheel using man-hours when you can more easily pay for a known working solution that is well documented ...

      Now you are joking! Well documented?! If you don't want to reinvent the weel, you should use a DBMS that actualy do things for you, instead of one that is stuck at last century's features.

    17. Re:Stupid question by s.petry · · Score: 1

      IT people like it better honestly, as well as management types. The logic is of course very different for why each likes said products.

      IT people like it for the support. Expensive, but when bad things happen we have a fall guy and someone to solve problems we simply can not (code changes, etc...). It tends to also have more features than any "Free" product. The "Oh Shit" button is invaluable for more reasons than this mind you. It also means we have to keep buying hardware to meet current versions, etc.. so it keeps our Economy going.

      Management likes it for "Support", but also "Status". It's bragging rights quite honestly. If the majority can not understand the difference between MAC and PC do you think they know the difference between Oracle and MySQL? Probably not, though I'm sure that some do. But they can't hang out at the Golf course talking about their multimillion dollar MySQL accounts like they can with Oracle.

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    18. Re:Stupid question by Twinbee · · Score: 1

      Are MS and Oracle faster than MySQL because they add much more code to solve the problem (e.g.: where all special cases are met), or because they use more clever and efficient code compared to MySQL?

      --
      Why OpalCalc is the best Windows calc
    19. Re:Stupid question by Grishnakh · · Score: 1

      True, but PHBs repeat the "someone to sue" mantra all the time, regardless of its veracity.

    20. Re:Stupid question by omnichad · · Score: 1

      Group by with no aggregate functions is a matter of convenience for me. In a lot of cases, depending on the schema, I really only have one return value for a field. While I could wrap each field in something like FIRST(), MySQL does this by default and makes a far easier-to-read query, since it has a lot less redundant code.

    21. Re:Stupid question by omnichad · · Score: 1

      And by redundant, I meant to say repetitive, although it is redundant as well due to the default implied aggregate function.

    22. Re:Stupid question by hackula · · Score: 1

      SQL that allows 'group by' in a select with more than one column and no aggregate functions is not an SQL to be taken seriously.

      Does MySQL really allow you to do that??? Here in T-SQL land, you will promptly receive and error message and a kick in the teeth.

    23. Re:Stupid question by hackula · · Score: 1

      Sort of. If you are on a MS .Net style stack, then you are going to go with the T-SQL solution pretty much any day of the week, since the data connectors are best with that stack. Typically your DB is chosen by some proprietary software that you just have to have and only works with X or Y.

    24. Re:Stupid question by hackula · · Score: 1

      Would that make any difference to me, the developer? Probably not.

    25. Re:Stupid question by Anonymous Coward · · Score: 0

      In my own experience oracle is actually waay slower than mysql. I guess it boils down to the same problem as the OP: IT DEPENDS.
      Write a web app churning 300 queries per page, to a small dataset (1 to 1M rows per table), with simple joins in them, and returning 0 or 1 rows each? Mysql just screams, thanks to the query cache. Oracle, even at version 11gr2, can just not compete.
      Have a complex query involving 15 tables, or tables with 100M rows? Or maybe just 1000 concurrent users? Oracle will beat mysql.

    26. Re:Stupid question by Anonymous Coward · · Score: 0

      Group by with no aggregate functions is a matter of convenience for me. In a lot of cases, depending on the schema, I really only have one return value for a field. While I could wrap each field in something like FIRST(), MySQL does this by default and makes a far easier-to-read query, since it has a lot less redundant code.

      I don't know why people who use MySQL tend to do insane things and %%LIKE%% it.

      If my RDBMS did not tell me to take a flying leap whenever I wrote something like that I fear I would become just as insane as you.

    27. Re:Stupid question by afgam28 · · Score: 1

      In fact, it's more like asking: Which is better, a sports car or something that's not a sports car?

      There are so many non-relational databases out there that lumping them all together with an umbrella term like "NoSQL" makes little sense. Each of them have different features and serve different use cases. For example DynamoDB doesn't support storing large documents like MongoDB.

      Sometimes two different NoSQL solutions are more different from each other than they are different from MySQL. Grouping them all together really doesn't make sense in a lot of circumstances.

    28. Re:Stupid question by afidel · · Score: 1

      Because PostreSQL still isn't competitive with MS SQL Server 2005 Enterprise for availability features let alone SQL 2012 or Oracle.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    29. Re:Stupid question by erp_consultant · · Score: 1

      Often the Oracle database is tightly wound with the application front end. For example, Enterprise applications such as PeopleSoft and Oracle Financials use Oracle as the back end database. Other commercial DB's such as SQL Server and DB2 are supported but in my experience rarely used. PostgreSQL is not supported at all on those applications. I had one client that decided it would be a good idea to switch from Oracle to SQL Server in the middle of an application upgrade. Apparently Microsoft was giving them a sweetheart deal so they couldn't resist it. Anyhow, it was a real nightmare. There were a whole series of incompatible commands (describe in Oracle vs. sp_help in SQLServer) that we had to change. Hundreds of reports had to be tested and rewritten in some cases. SQL had to be re-tuned...bunch of stuff. Not something I'd want to go through again anytime soon. So that's the long and short of it...either the platform is not supported or it's just too difficult to change it.

    30. Re:Stupid question by afidel · · Score: 1

      data security, replication, backup

      Are you joking? Are you really implying Oracle does something here that Postgres doesn't?


      Yes, block checksumming, the fact that if you want Connection Pooling,Load Balancing, and Query Partitioning with PostgreSQL you have to use a middleware layer instead of just the RDMS, and integration with every industry standard tool for backups is not something that PostgreSQL can claim.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    31. Re:Stupid question by Anonymous Coward · · Score: 0

      Some probably do it for the ecosystem that surrounds Oracle's RDBMS. Stuff like RAC is harder for PostgreSQL to match.

    32. Re:Stupid question by Anonymous Coward · · Score: 0

      Oracle is NOT in the business of designing user interfaces. To be honest, they shouldn't be in ANY business besides making a better DBMS - all their other offerings suck. But their RDBMS is the best your money can buy - given that you can afford the license/support/dba costs.

    33. Re:Stupid question by Big+Hairy+Ian · · Score: 1

      Corporate culture at many firms bans Open Source Software.

      --

      Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    34. Re:Stupid question by Tablizer · · Score: 1

      Oracle sometimes requires professional tuners to get the most performance out of it. That's probably it's best feature: the ability to be tuned to a particular organization's data needs. But getting expert tuners is not cheap.

    35. Re:Stupid question by Hognoxious · · Score: 1

      It also means we have to keep buying hardware to meet current versions, etc.. so it keeps our Economy going.

      Just like throwing rocks.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    36. Re:Stupid question by s.petry · · Score: 1

      Not quite the same in my opinion, but thanks for the link. In order to meet the criteria for the parable we'd have to intentionally break servers. I won't claim that upgrades are always correct or viable, mind you. This is why companies should be paying experts to see what is really needed vs. the parable you show.

      Example, we have DBAs that can tell us that something is at a limit. Lets say we hit a max row length for simplicity. Next version extends that limit, so we have to upgrade. Upgrade may also require double the memory, so we have to match the footprint of the server to the requirements of the application.

      With that said, I have seen people intentionally break PCs to get new ones which would match the parable. It's not very common, but does happen. You know the guy that wrecks his truck to cash in the insurance and buy a new truck? probably the same guy :)

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    37. Re:Stupid question by JimFive · · Score: 1

      Not true. In T-SQL I can clearly do SELECT field1, field2 FROM myTable GROUP BY field1, field2 And not receive an error.

      I'm not actually sure why that would even be considered bad.
      --
      JimFive

      --
      Please stop using the word theory when you mean hypothesis.
    38. Re:Stupid question by hackula · · Score: 1

      That is not what was being described. Both field1 and field 2 have a group by in your code. What we are talking about is SELECT field1, field2 FROM myTable GROUP BY field1

    39. Re:Stupid question by Anonymous Coward · · Score: 0

      Both. The query optimizer is a vast, complicated algorithm analyzer upon which the careers of many a computer scientist has been dashed. It's one of those problem domains in Computer Science that is solved with big brains and even bigger wallets. MySQL is getting better because it's owned by Oracle now. They get to leverage all that proprietary optimizer knowledge that doesn't exist in any textbook.

      You're talking about products with their own operating systems. The complexity of making an RDBMS fast is staggering

  7. Easy! by Anonymous Coward · · Score: 0

    Which one is web scale?

  8. Which is better? A Bus or a bicycle ? by ralatalo · · Score: 0

    Well, the bicycles uses no Gas, but the Bus can carry 50+ people in a single trip. So which is better?

    1. Re:Which is better? A Bus or a bicycle ? by greg1104 · · Score: 2

      This is very close to providing the car anology I was looking for, but it just misses the bus on that.

    2. Re:Which is better? A Bus or a bicycle ? by shutdown+-p+now · · Score: 1

      So which is better?

      An SUV, duh.

    3. Re:Which is better? A Bus or a bicycle ? by Hatta · · Score: 1

      Why not get the worst of both worlds by combining them?

      --
      Give me Classic Slashdot or give me death!
    4. Re:Which is better? A Bus or a bicycle ? by Anonymous Coward · · Score: 0

      doesn't matter. bicycle uses no gas so it wins no mater how many people the bus can carry.

  9. MySQL vs MongoDB by djbckr · · Score: 5, Funny

    I'm sure many of you reading this have seen this, but it's still funny anyway... http://www.youtube.com/watch?v=b2F-DItXtZs

  10. No! by serviscope_minor · · Score: 1

    No.

    Isn't there some rule about headlines ending with a question mark can be answered as no?

    Anyway obviously the answer is NoSQL because it's webscale and cloud.

    --
    SJW n. One who posts facts.
    1. Re:No! by greg1104 · · Score: 3, Informative

      Betteridge's Law of Headlines is the rule you're looking for.

    2. Re:No! by camperdave · · Score: 1

      No.

      Isn't there some rule about headlines ending with a question mark can be answered as no?

      Anyway obviously the answer is NoSQL because it's webscale and cloud.

      Webscale and cloud? What the blaze is webscale, and since when is cloud an adjective?

      --
      When our name is on the back of your car, we're behind you all the way!
    3. Re:No! by kidgenius · · Score: 1

      I want to write an article with the following headline to throw the law into a paradox: "Is Betteridge's Law of Headlines true?" Bam, broken ;-)

    4. Re:No! by serviscope_minor · · Score: 1

      Webscale and cloud? What the blaze is webscale, and since when is cloud an adjective?

      A very good question.

      --
      SJW n. One who posts facts.
    5. Re:No! by Hognoxious · · Score: 1

      Webscale is the opposite of joins. SQL is not webscale because it uses joins.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    6. Re:No! by camperdave · · Score: 1

      Webscale is the opposite of joins. SQL is not webscale because it uses joins.

      The opposite of joins? To not join? To unjoin? Is it some sort of database normalization process? Sorry, I need a bit more to go on.

      --
      When our name is on the back of your car, we're behind you all the way!
  11. Dumb question by dissy · · Score: 4, Insightful

    Replace "SQL" with "hammer" and replace "NoSQL" with "Screw Driver" and then ask the question again. You will see how silly it actually is.

    The right tool is best for the particular job at hand, always. If you refuse to define the job, it is not possible to guess ahead of time which tool will be better for it.

    1. Re:Dumb question by steelfood · · Score: 3, Insightful

      You don't even have to leave computer science for an analogy. Is a hash map better than an array?

      That's effectively the question. Those who cannot answer this question have no business writing code.

      --
      "If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
    2. Re:Dumb question by gbjbaanb · · Score: 2

      unfortunately, there's a lot of people who seem to want to say "use the best tool" and then try to make everything work in a single language (most commonly Java and .NET programmers).

      I see this with the introduction of ORMs - its like programmers don;t want to learn SQL (the tool of choice when using databases) and instead want to make the DB look like a collection of objects. The NoSQL proponents seems also to make the same mistake - that NoSQL is somehow better because you access the data using an API that is native to your language.

      Its a sad indictment of the modern programming community (well, those lesser programmers at least), but I think this is the main driving force behind it all. Blame the holy wars for all this, otherwise we'd be (correctly) talking about NoSQL as just another data storage technology along with relational databases and flat files that has specific use cases.

    3. Re:Dumb question by oobayly · · Score: 1

      Of course a hashmap is better, you just use a 0 (or 1 if you're using VB) based integer as the key. That way if things change you can reuse your code!

    4. Re:Dumb question by spiffmastercow · · Score: 2

      unfortunately, there's a lot of people who seem to want to say "use the best tool" and then try to make everything work in a single language (most commonly Java and .NET programmers).

      I see this with the introduction of ORMs - its like programmers don;t want to learn SQL (the tool of choice when using databases) and instead want to make the DB look like a collection of objects. The NoSQL proponents seems also to make the same mistake - that NoSQL is somehow better because you access the data using an API that is native to your language.

      Its a sad indictment of the modern programming community (well, those lesser programmers at least), but I think this is the main driving force behind it all. Blame the holy wars for all this, otherwise we'd be (correctly) talking about NoSQL as just another data storage technology along with relational databases and flat files that has specific use cases.

      I have quite the background in database development, tuning, and pretty much everything to do with DBA work minus the backups, but I love ORMs. Most ORMs these days produce quite good SQL, and they reduce development time dramatically -- especially if you model your DB from your data classes instead of vice versa. Is there a performance hit? Maybe -- you'd be surprised how often the ORM spits out better code than an experienced SQL developer. If there is a performance deficit, you can take care of that mostly with indexing, which is an automatic or nearly-automatic process on most currend RDBMS's. Unless you need the absolute tightest possible code, there's no reason to sink a bunch of resources into something that takes up all your time and ties your implementation to a specific external dependency.

    5. Re:Dumb question by narcc · · Score: 1

      And with that, the parent's point is made...

      Very sad.

    6. Re:Dumb question by hackula · · Score: 1

      The ORMs make life easier in loads of cases. I had been using Linq to SQL and EF for a couple years, when a few GIS projects came my way. Linq has no SQL Spatial report, so I had to do it the old school way. It has been about a year now and I still find it to be a complete PITA compared to a nice dragndrop ORM.

    7. Re:Dumb question by gbjbaanb · · Score: 1

      oh you have not seen what Entity Framework generates when pointed at Oracle DBs.

      If I told you I've seen 10 page (of printed, A4 sheets) solid with generated sql from EF, you probably wouldn't believe me. I was stunned at how bad it was.

      Still, my point is that an ORM tries hard to abstract the developer from SQL in favour of keeping things the same in the language, so the developer can play with the data as if its a simple collection. Even if that abstraction was 100% perfect (its not, there's loads of things that can go wrong, and that you need to know) it's still trying hard to tell developers not to worry their pretty little heads with that complicated and nasty SQL thing. If a dev cannot figure out some SQL (especially the simple queries most ORMs are used for) then they really shouldn't be let lose by themselves.

      There's nothing really hard about SQL, so why not use it. Remember, right tool for the job, and SQL is the right tool for DB querying. I don't think we want a generation of developers to come into the industry thinking that the big DB is just an array of objects.

    8. Re:Dumb question by spiffmastercow · · Score: 1

      I can't speak to EF, but NHibernate produces good SQL for Oracle. Are you using Oracle's EF provider? If so, that would likely explain the suckage. Now, keep in mind that the code may not *look* pretty, but still be quite efficient. Also, ORMs are an advanced tool, and I've yet to meet anyone who came to them without spending a few years in SQL hell. The problem with SQL isn't the SQL itself, it's the fact that you have to map that data to your application, and there's a lot of failure potential there. I don't see the problem with increasing developer productivity and reducing errors at the expense of a little performance.

    9. Re:Dumb question by Anonymous Coward · · Score: 0

      Also, ORMs are an advanced tool, and I've yet to meet anyone who came to them without spending a few years in SQL hell

      ORMs are stoneaged tools used by barbarians to scribe how clueless they are on cave walls.

      problem with SQL isn't the SQL itself, it's the fact that you have to map that data to your application, and there's a lot of failure potential there

      This is where your investment in schema design, views and stored procedures come in.

      I don't see the problem with increasing developer productivity and reducing errors at the expense of a little performance.

      The error is embedded in the very concept of an ORM.

    10. Re:Dumb question by oobayly · · Score: 1

      Yesterday I caught a fish this big.
      <0---------------<

      Actually, it was quite a poor day, I'd hoped to catch more.

    11. Re:Dumb question by Waccoon · · Score: 1

      Doesn't every language have it's own special term for "hash map", but they all use the same term for "array?"

      Don't have to leave computer science to over-think an analogy, either. :)

    12. Re:Dumb question by Anonymous Coward · · Score: 0

      Is one of the devices by any chance "sonic"?

    13. Re:Dumb question by gbjbaanb · · Score: 1

      I agree with increasing dev productivity with the mapping of the recordsets to language in a more natural way, but I disagree with the whole concept of trying to replace the entire query system with language constructs too. That said, I dislike the whole mapping of data that's already described in the DB to classes in your application - it too feels like you're trying to force the systems to work for you, rather than working with them (but I know, you'd have to do that mapping somewhere. Maybe I just don't like big layers added to systems)(mind you Ruby seems to get this right).

      You and I may have come to ORMS from SQL, but I read a lot on various blogs/qa sites/etc where people are not getting that benefit. Give it a few years (if ORMs become too popular) and you'll have a bunch of coders who don't know what happens under the 'magic' of the ORM. We are already at this stage with a lot of code - they point, they click, it works... until it doesn't, or performs dreadfully, or is impossible to maintain. The DailyWTF is full of such things. I just want the ORM layers we're adding to be more transparent to what happens underneath rather than a black box.

      Unfortunately, we are a Microsoft shop, so NHibernate is not a 'preferred solution'. This is also part of the problem :)

    14. Re:Dumb question by Anonymous Coward · · Score: 0

      Give it a few years (if ORMs become too popular) and you'll have a bunch of coders who don't know what happens under the 'magic' of the ORM.

      How many years do you think is fair? You've had a decade so far with shit to show for it.

    15. Re:Dumb question by spiffmastercow · · Score: 1

      Eh, I don't think it's a huge deal. The curious types will tend to look under the hood and discover how it really works, and the rest will do the minimum needed to get by, just like they always have.

      We don't write our schemas twice, but that's largely because we built a code generator to build the schema, packages, constraints, etc. along with the NHibernate mappings based on our data objects. We then just run a couple scripts and voila! instant database. And if devs need to work on data changes without affecting the rest of the team, they can create and test their own schema within minutes. Granted, this will be more complicated once our product is released, but for now it makes data changes extremely easy.

  12. NoSQL of course by cheaphomemadeacid · · Score: 1

    SQL is waaaaay too structured!

    1. Re:NoSQL of course by Bigby · · Score: 1

      Because data doesn't need structure...

    2. Re:NoSQL of course by Anonymous Coward · · Score: 0

      No, it's waaaaay too "query language."

  13. Comparision criteria? by gmuslera · · Score: 1

    Focusing the "which one is better" on how you query both from a few programming language is like comparing computers by the keyboards attached to them. For small enough workloads (i.e. text processing) maybe would matter how comforable is the keyboard used, but for heavy loads what weights is the engine behind, and how well is adapted to the thing it have to process.

  14. The answer to all "Which is better" questions... by Jason+Levine · · Score: 4, Insightful

    Here's the answer to pretty much every "Which is better" question:

    - Option 1 is better in cases where option 1 provides more advantages and less disadvantages than Option 2.

    - Option 2 is better in cases where option 2 provides more advantages and less disadvantages than Option 1.

    - In cases where neither Option 1 nor Option 2 provide a clear advantage/disadvantage distinction, neither is better and either may be used depending on preference.

    Rarely is the answer ever "X is better than Y in all possible cases."

    --
    My sci-fi novel, Ghost Thief, is now available from Amazon.com.
  15. Hammer versus screwdriver: Which Is Better? by thue · · Score: 0

    nt

  16. A disappointingly misleading headline. by blcss · · Score: 1, Offtopic

    Relational vs nonrelational? It depends on the application. That's so obvious it needn't be discussed.

    But I really, really hate SQL AS SUCH. It's an inefficient and overly complex interface that's full of security holes. Now there's a discussion worth having. But noooo...

    --
    We don't need yet another new programming language. Let's just pick an existing language and fix its flaws.
    1. Re:A disappointingly misleading headline. by Grishnakh · · Score: 1

      So has anyone tried coming up with an RDBMS that uses something other than SQL?

      I've been working on a little hobby project using Postgresql, and one thing that struck me was that the whole thing seems rather inefficient, because of all the data conversion going on: if I'm trying to input or extract data from the DB from a C++ program, for instance, it seems that everything basically needs to be converted to ASCII text to fit into a SQL statement. So if I have a bunch of floats, those have to be converted to ASCII strings, and sent to the DB, which then converts them back to floats to be stored internally. Or, if I want to store some binary data in some of the records (along with other formatted data, including ints, strings, and floats), that binary data needs to be converted to base64 or some other ascii representation to be inputted into the DB, which then surely converts it right back to binary.

      Then, just to use SQL from the C++ program (or any other language for that matter, whether it's PHP, C, Perl, Python, etc.), you end up using some kind of library which really doesn't do much besides let you set up predefined SQL query templates and then fill in the data, with the library doing these conversions to ascii for you.

      It seems like there should be some kind of API where a query can be defined, and then the data passed with this query to the DB without conversions for improved speed. Or am I totally missing something? Just for reference, my background in programming tends to be more in low-level embedded code; RDBMSes are new to me.

    2. Re:A disappointingly misleading headline. by ultranova · · Score: 1

      So if I have a bunch of floats, those have to be converted to ASCII strings, and sent to the DB, which then converts them back to floats to be stored internally. Or, if I want to store some binary data in some of the records (along with other formatted data, including ints, strings, and floats), that binary data needs to be converted to base64 or some other ascii representation to be inputted into the DB, which then surely converts it right back to binary.

      You can avoid the overhead of conversion using parametrized queries (PQexecParams), which also avoids SQL injection attacks. However, I suspect that for almost all use cases the cost of interprocess communication alone is going to dwarf the conversion.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  17. The question should be "when" not "which" by devforhire · · Score: 1

    The real question should when should I use a SQL solution and when should I use a NoSQL solution, or more specifically which database should I use for project X. Neither one is better than the other, as each has a specific problem it attempts to solve. As a community we should spend more time discussing what make a technology the best solution for a specific problem-space, not having fan-boy wars.

    1. Re:The question should be "when" not "which" by oobayly · · Score: 1

      Damn it, there's a time and place for logic, and this isn't it.

  18. Oblig Billy Madison by denvergeek · · Score: 1

    Shampoo is better! I go on first and clean the hair!

  19. How is it by Anonymous Coward · · Score: 0

    that slashdot editors still cannot figure out how to select link text that actually corresponds to what is being linked to?

  20. SQL for Some Projects ... by eldavojohn · · Score: 4, Funny

    Kang: SQL for all.
    *crowd boos*
    Kang: Very well, NoSQL for anyone.
    *crowd boos*
    Kang: Hmm... SQL for some projects, miniature NoSQL implementations for others.
    *crowd cheers*

    --
    My work here is dung.
    1. Re:SQL for Some Projects ... by Anonymous Coward · · Score: 0

      Don't blame me, I voted for Kodos.

    2. Re:SQL for Some Projects ... by arth1 · · Score: 2

      SQL for some projects, miniature NoSQL implementations for others.

      That's the problem - pretty much every NoSQL implementation that calls itself NoSQL are heavy java apps.

      My rules of thumb:
      - Don't put a database to do a hash table's job.
      - If the reason for the database is that maybe, in the future, someone might want queries run against the data, store the data raw now, and put it in a database then.
      - If you have everything in X, and X will do, don't change it for the reason of changing it.

    3. Re:SQL for Some Projects ... by Anonymous Coward · · Score: 0

      Exactly. AKA what the HELL do you think data warehousing is for? So you don't have to run queries against raw data!

    4. Re:SQL for Some Projects ... by Anonymous Coward · · Score: 0

      As a young boy, I dreamed of being a database, but tonight I say, our cursor must move forward, not backward, upward not forward, and always twirling, twirling, twirling towards schema freedom.

    5. Re:SQL for Some Projects ... by Pseudonym · · Score: 1

      That's the problem - pretty much every NoSQL implementation that calls itself NoSQL are heavy java apps.

      This highlights an important point, which I will put in italics for emphasis: There is no such thing as NoSQL.

      The term "NoSQL" is like "C/C++" or "intellectual property". None of these exist, except possibly as social movements. Rather, they are umbrella terms for collections of distinct and very different things.

      For NoSQL, that's both good and bad. It's good, because there's plenty of scope for creativity and innovation. It's bad, because any project is going to involve some amount of vendor lock-in.

      We need some standards, but not yet.

      Don't put a database to do a hash table's job.
      [...]
      If you have everything in X, and X will do, don't change it for the reason of changing it.

      I realise these are rules of thumb rather than law tablets, but these two pieces of advice are often contradictory. Sometimes, a database is already there, and so the choice is between that as a key-value store or adding an additional dependency. SQLite on Android is a good example.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  21. Legit question by Anonymous Coward · · Score: 0

    This is not a flame bait question, because object oriented databases are relatively new in terms of their adoption and they are gradually replacing instances where once SQL would have been the only option. I've only seen serious adoption of object oriented dbs since around 2000, while SQL has been around, well forever.

    The question should perhaps be rephrased: What types of projects lean towards an object oriented database as opposed to a traditional SQL relational db?

    For sure there are lots of legacy SQL deployments out there that would be better served in an object db.

    1. Re:Legit question by medcalf · · Score: 1

      Well, LDAP has been around since the 1990s, is object oriented, hierarchical, distributed and segmented. This stuff is not new. NoSQL is interesting, and there are cases where it's both useful and lighter weight than the alternatives, but for most purposes, LDAP would serve just as well. NoSQL does make developers' lives easier, though, because they don't necessarily have to think about their data in advance, which both RDBMS and LDAP systems require. Easier is not necessarily better, but sometimes it is, and many people opt for easier regardless.

      --
      -- Two men say they're Jesus. One of them must be wrong. - Dire Straits
    2. Re:Legit question by serviscope_minor · · Score: 4, Insightful

      NoSQL does make developers' lives easier, though, because they don't necessarily have to think about their data in advance,

      I've heard claims like these a lot, and I must say that I've never understood them. Programs maniuplate data. I just don't see how you can write a program without knowing about your data. It makes no sense.

      --
      SJW n. One who posts facts.
    3. Re:Legit question by Anonymous Coward · · Score: 0

      NoSQL does make developers' lives easier, though, because they don't necessarily have to think about their data in advance....

      I'm guessing you haven't don't a lot of "NoSQL development."

      Maybe what you were trying to say is that, with a document type record structure in some NoSQL ("BigTable") type implementations, the developer doesn't have to specify the schema up front. But to suggest that the developers job will be "easier" if he doesn't consider his input data format is false. The nature and shape of the data can heavily alter the performance characteristics, for example, not to mention the logic itself, of a Map/Reduce job. Failing to consider this in your design can swing your performance "orders of magnitude." Perhaps buy an order of magnitude more servers makes the developers lives easier in your mind, but as it was and always shall be: Good data structures are the foundation of good programs.

      But really, I applaud any technology that can be implemented by developers who "don't have to think." It's quite lucrative for me to clean up such projects, you see. So carry on.

    4. Re:Legit question by Anonymous Coward · · Score: 0

      Do like the devs do where I work--make all your arguments void pointers. Then your methods will accept nearly anything as input. Problem solved!!

    5. Re:Legit question by narcc · · Score: 1

      OODB's are a gigantic failure. They were introduced for one reason only: for vendors to cash in on the OOP hype.

      None of the promises made by proponents of OOP (vendors, that is, later to be parroted by the ignorant) turned out to be true -- it was just easier to spot the faults in OODB's.

      Had we listened to all that research done in the 1980's, we could have skipped the mess that is OOP and its equally useless cousin, OODB, altogether.

    6. Re:Legit question by medcalf · · Score: 1

      I concur that programs are far, far better when they start with data. Heck, the whole point of computing is the data. That doesn't mean that all the technologies we have are equal in that regard. With NoSQL, you do have to think about the data up front to program well, but you don't have to do so to get working code. That code won't necessarily be performant or robust, but it's faster to create.

      --
      -- Two men say they're Jesus. One of them must be wrong. - Dire Straits
  22. Re:The answer to all "Which is better" questions.. by Anonymous Coward · · Score: 0

    > the answer to pretty much every "Which is better" question

    I suggest you check the proper authority on these issues, Mr Harry Hill, who has provided many examples of the correct handling procedure.

    http://www.youtube.com/watch?v=8ajHs8tCWew

  23. Neither. by Anonymous Coward · · Score: 0

    If one were "better" than the other, the other wouldn't exist.
    Different things work better for different people/infrastructures.
    I'd expect a "news for nerds" site to know at least that much.

    1. Re:Neither. by Anonymous Coward · · Score: 0

      f one were "better" than the other, the other wouldn't exist.

      That argument is nonsense. First, SQL exists for far longer than NoSQL, so when only judging from being available, one possibility would be that NoSQL is better, but simply didn't have the time to replace SQL yet. On the other hand, it could be that SQL is better, but many people fail to recognize that and just follow the newest fad (it is a myth that people always use the best tool for the job). Or, of course, it could be that indeed both have their strengths and weaknesses.

      So which is it? Well, you'll not find out without actually looking at them. Both being available just tells you close to nothing (well, it tells you that neither sucks too badly).

  24. The answer is "yes". by Millennium · · Score: 1

    Despite the rather inflammatory name, NoSQL is a complement to SQL, not a replacement for it. They do good jobs at very different things, and should be used for the appropriate tasks.

    The problem comes when someone from either side attempts to do something with his or her chosen side that the other side really is better suited for. Currently the NoSQL folks seem to have a stronger tendency to do this, but that's a problem with the culture, not the tools.

    1. Re:The answer is "yes". by Bill_the_Engineer · · Score: 2

      Currently the NoSQL folks seem to have a stronger tendency to do this, but that's a problem with the culture, not the tools.

      I think it has more to do with inexperience than culture. The inexperienced tend to gravitate to the shiny hammer and look at all the problems as nails. The experienced have the skill set to pick the right tool for the job.

      New tools tend to attract more inexperienced developers since they haven't developed much of a preference and seem to be the most affected by hype. This ultimately leads to the new tool being used in all cases (regardless of suitability) instead of the correct or more appropriate tool.

      Notice that I'm not saying that the new tool is inferior, just being misused.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    2. Re:The answer is "yes". by Anonymous Coward · · Score: 0

      Well, that certainly explains Visual Studio.

  25. Maybe... by Anonymous Coward · · Score: 0

    Maybe Slashdot should stop posting shit with ridiculously transparently flamebaity headlines just to generate hits...

  26. Apples Vs. oranges: Which is better? by seifried · · Score: 0

    Cats vs dogs. Etc.

    1. Re:Apples Vs. oranges: Which is better? by Belial6 · · Score: 1

      That one is easy. Cows. As much as cats and dogs CAN be made into tasty meals, cows have been refined though generations of breeding into the best tasting meat.

    2. Re:Apples Vs. oranges: Which is better? by fahrbot-bot · · Score: 1

      Cats vs dogs. Etc.

      Hmm... Do you want a pet who loves you unconditionally and runs and plays with you (dog) or a pet that tolerates you, expects you to wait on it, and spends its time staring at you like you're a moron, thinking of ways it could kill you in your sleep (cat)? :-)

      --
      It must have been something you assimilated. . . .
    3. Re:Apples Vs. oranges: Which is better? by Grishnakh · · Score: 1

      Phooey, I prefer bison meat to cows, and bisons haven't been refined at all, they're basically the same wild animals they were thousands of years ago.

      Also, salmon is excellent meat too, and that's totally wild as well.

    4. Re:Apples Vs. oranges: Which is better? by Belial6 · · Score: 1

      Bison is vastly inferior to cow. It doesn't have enough fat.

    5. Re:Apples Vs. oranges: Which is better? by Grishnakh · · Score: 1

      Lack of fat is a good thing, not a bad thing.

    6. Re:Apples Vs. oranges: Which is better? by Belial6 · · Score: 1

      Nope. Fat makes the food taste better, sates the appetite so over eating is less of a problem, and spread out the calorie availability so that the body has it when it needs it. Fat is good in your meat. VERY good.

    7. Re:Apples Vs. oranges: Which is better? by Grishnakh · · Score: 1

      Then why bother with protein at all? Just go eat a bucket of lard.

    8. Re:Apples Vs. oranges: Which is better? by Belial6 · · Score: 1

      Because humans need more than one ingredient in their diet. Eating is not strictly about calories, which is why the current no-fat mentality is just as bad as eating a a bucket of lard.

    9. Re:Apples Vs. oranges: Which is better? by Grishnakh · · Score: 1

      Except that there's plenty of fat in our diets anyway; it's not like salmon and bison are fat-free, they just have less of it than beef, and there's lots of other things we eat that have fat in them. Saying we need fattier meat seems to me like saying we need more salt in our food because salt is necessary to our diet, even though we already get tons of salt in all the foods we eat and Americans generally eat way too much of it (and way too much fat too).

    10. Re:Apples Vs. oranges: Which is better? by Anonymous Coward · · Score: 0

      Eating is not strictly about calories, which is why the current no-fat mentality is just as bad as eating a a bucket of lard.

      Nah, you're off base there. If you just want to reduce calorie intake, the obvious thing to do is cut the most calorie-dense substance which is fat.

      Likewise, saturated fats and trans-fats have negative health effects so that's another reason to cut them. Maybe not eliminate them completely, but such a choice is in no way as "bad as eating a bucket of lard!"

  27. an Oracle DBAs perspective by Anonymous Coward · · Score: 5, Interesting

    For generic applications that do not have a vast amount of user volume or data set size, NoSQL or any SQL Generator is fine. It is also fine for most of the standard and generic go down a primary key query or do a simple join. However, the more complex queries on larger systems need reviewing. The biggest problem with NoSQL is developers just don't want to be bothered and expect their procedural logic to automatically run in a 20 terabyte database that gets over a million hits a minute. This is the higher end for systems I work on, but it also happens in smaller ones.

    We get by far the worst SQL submitted to us by developers who generate SQL and in general don't know anything. Large Databases rarely stay extremely well normalized. There are rarely data architects around to enforce this. Developers who are in a hurry to meet deadlines denormalize and just add columns. When you do this, over time your sql gets more complex and query generators are not very good.

    Query generators can generate alot of basic sql, but as time goes on requirements get more complex. Developers are building on what other developers did before them. A lot of this data is not normalized and have ridiculously complex logic. We generally get emails from developer going 'this query is slow' and that is it. Or we get I did a query just like this before, but this one is slow. The query generator may be making queries on the fly. So they think its the same thing, but its actually different.

    One other thing that often happens that people overlook is that these tools generate too much SQL. Instead of getting data in 1 sql statement and have a normalized set of tables, I have clicked a button and run 15 sqls serially. When you get alot of traffic, the round trips and the CPU increase adds up. Developers don't know this is happening because it is all done behind the scenes.

    I have had developers with over 10 years experience (some up to 30 years) who can't even figure out the following:

    1. why a query that returns millions of records is slow or can understand the question of 'what the hell is the user going to do with all this?'
    2. why taking fields out of the 'where' clause can affect the query. Dude, cause your no longer using an index.
    3. why running the same query millions of times in a loop would be slow (this is serial). databases are optimized to do stuff in straight sql. Ok this one is not really easy to get at first and it won't be obvious, but if you have done this for 10 years you should have seen it and if I tell you this 5 times and you keep doing it... seriously. This is not that hard.
    4. how different parameters can affect a query. If you run a query that brings back one record, then change the parameters and it has to go through 500 gbs of data your response time will slow down a bit right?
    5. 'it worked in dev'. your Dev DB had tables with 10 records. Prod has 20 terabytes of data. We have told you that prod is much bigger. So you need to atleast check to see if its using an index. This is NOT difficult and I show them how, but they don't care.
    6. your queries are 'slow' because your query generators run 26 queries(serially) when I click this one button. You can combine these to 4 or less and if you pay more attention to the data model and let us making a few simple changes we can get it to 1. However, the 4 i am giving you is fine for now. i can even show them how to audit their sessions activity and how to run a simple query to see what is going on. They click a button and they can see exactly what is happening in the DBA. Most don't care.

    My biggest beef is I tell them what is wrong, I try to explain to them why this is a problem and the vast majority just don't care. They ignore and then do the same thing again. Apparently they don't care that I am subject to 24x7 paging on this stuff and I can't go home if users are complaining, while the developers can go home to their families.

    My other beef is that SQL is not that hard. Its easier than coding. I have been a developer before

    1. Re:an Oracle DBAs perspective by ahem · · Score: 2

      You shouldn't have posted this anonymously. I think it's great that you've identified the key friction present in all software development efforts: tossing the product over the wall and assuming the downstream person will fix it. Whether it's a product owner tossing incomplete requirements to a developer, a developer tossing code without unit tests or non-performant code to a tester, a tester not validating whether the code will really run in prod, or an operations person blindly deploying whatever comes down the pipe.

      All of these non-communicative behaviors work together to create a sub-optimal user experience (and pissing off the people who benefit from the system you build is a self-defeating practice, since they're the ones that indirectly sign your paycheck).

      --
      Not A Sig
    2. Re:an Oracle DBAs perspective by vlm · · Score: 4, Insightful

      Let me put in the "answers" you probably get from noob programmers.
      1) I don't know what a WHERE clause is so I SELECT * and use if statements on each row of the gigs of results
      2) I don't know what a index is
      3) I don't know what a JOIN is so they wrote one in software
      4) ... I donno some workplaces need employee drug testing?
      5) I don't have a real DEV box. Oh I've got a box that endusers can't reach full of non-production code, but I don't have a DEV box that I can test real code on real data. You could simulate a 20 TB prod by provisioning a 2 TB dev on a virtual image of only 1/10th "power", at least for linear scale problems (and the major problems are never linear scale anyway)
      6) I don't know what a GROUP BY is

      I've also done both DBA and code and I can now look back and laugh at my earliest coding. Every noob does stuff like this.

      I have had developers with over 10 years experience (some up to 30 years)

      The world is full, not just devs, but the whole world is full, of people who have 60 "first six months" of experience over and over and over. Some folks just never learn.

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    3. Re:an Oracle DBAs perspective by garett_spencley · · Score: 2

      "My other beef is that SQL is not that hard. Its easier than coding."

      Right. As you said:

      "SQL is just a programming language."

      It's not SQL that can trip a developer up, it's understanding how the RDBMS stores and fetches data, builds indexes and optimizes queries. It's a little like understanding how the compiler will optimize your code, but then it goes even further.

      For example, it would be easy for a developer to be tempted to store a UUID as a primary key in an InnoDB database for a user session table, since to do otherwise would be adding a redundant ID field, not knowing that InnoDB stores it's rows with the primary key index and thus orders all inserts by primary key.

      It's also not always clear how to make full use of indexes ... especially when you need to optimize ORDER BY's (which as you would know can't always be done, and thus need to rely on narrowing the result set as much as possible before the sort), and it's not always obvious how adding a second column in your WHERE or by using aggregates on your indexed columns can make using the index impossible. Those aren't really SQL issues, they're DB issues. Heck, the entire concept of an index has nothing at all to do with SQL (unless you're doing something directly with the index on the schema, but then developers rarely touch the schema when there's a DBA involved) .

      You're absolutely right, though, that a competent developer would take the time to learn as much of this as possible. DBAs are in an unfortunate situation because it's tempting for the developer to adopt an attitude of "That's why we have a DBA." I definitely sympathize with you.

    4. Re:an Oracle DBAs perspective by Anonymous Coward · · Score: 0

      The issues you described are all basic SQL issues than any plain old developer working on a DB driven app should know. If these issues are a persistent problem I would try to get management to allocate some money for database training for developers, or at least give them some time to read through this: http://use-the-index-luke.com/. I would also recommend taking the 6 issues you noted and turning them into interview questions to make sure the problem doesn't get worse.

    5. Re:an Oracle DBAs perspective by rev0lt · · Score: 1

      a developer to be tempted to store a UUID as a primary key in an InnoDB database

      If you are using a UUID as a primary key on MySQL, is probably because you really need it (unique keys in cluster, ref to external databases, etc). And while it is slower than using a bigint, it's not that slower (you read from disk in 512 or 4096 byte blocks, and that is usually way more expensive than performing a 16-byte compare - so a sequential scan of a bigint and an UUID are probably similar).

      It's also not always clear how to make full use of indexes ...

      That's why there is an EXPLAIN clause in most RDBMs. You can see exactly how the query will be interpreted by the database. Of course, MySQL has its "nuances" regarding indexes, but that says more about the shortcomings of it than anything else.

      You're absolutely right, though, that a competent developer would take the time to learn as much of this as possible.

      The problem is, many DBAs aren't really developers. It's not that difficult to find a career DBA that don't understand how the underlying system works (let alone troubleshoot a problem with tools like strace or truss or even dtrace), or the consequences of paralelism and application lifecycle (let's do this on a almost non-documented, non-versioned stored procedure, to be run simultaneously by hundeds of users, and that will break at each version upgrade). I'm not trying to generalize it (good professionals and bad professionals exist in every field), but it reflects my experience. Is it just me?

    6. Re:an Oracle DBAs perspective by Anonymous Coward · · Score: 0

      Ah yes - it starts out as a new idea by the customer who has very little money.
      The entire project is coded on a shoe string. Runs on a tiny machine. Well the shot in the dark
      works and the page hits roll in. The DB grows and Grows and GROWS. Suddenly you
      are pushing the limits of affordable machine/infastructure. Meanwhile the developer(s)
      have been stuffing in more & more poorly designed data structure. (they still have very little money)
      No time for rewrites. now what - The contract DB specialist has a hissy fit and demands
      a total rewrite; quits after a screaming match with boss. Web site, not so slowly, grinds to
      a halt. Boss has an anurism. Company folds.
      Would they have survived the startup if they had designed thing better from the start. Hard to say.

    7. Re:an Oracle DBAs perspective by XXeR · · Score: 1

      5. 'it worked in dev'. your Dev DB had tables with 10 records. Prod has 20 terabytes of data. We have told you that prod is much bigger. So you need to atleast check to see if its using an index. This is NOT difficult and I show them how, but they don't care.

      Isn't this faulty design? It's not a developers fault that the dev environment wasn't built properly...it should be as close to prod as possible. How is performance testing even remotely possible when the discrepancy between dev and prod is so massive?

    8. Re:an Oracle DBAs perspective by Anonymous Coward · · Score: 0

      soo true :-) only one thing: SQL is harder than code, not easier! Writing correct sql is ok: you just need to tell the db what you want, not how to get it, but writing FAST / SCALABLE one is hard: you need to think about indexes, normalization, size of data sets etc etc...

    9. Re:an Oracle DBAs perspective by Anonymous Coward · · Score: 0

      >> The biggest problem with NoSQL is developers just don't want to be bothered and expect their procedural logic to automatically run in a 20 terabyte database that gets over a million hits a minute.

      The code runs *in* the database? In my NoSQL experience you query for the rows you need and then do your work in code.

    10. Re:an Oracle DBAs perspective by bob8766 · · Score: 2

      As a DBA my solution to this is first and foremost, to make sure the developer and tester are on call. If I get a call in the middle of the night because of their code, they are going to get one as well. The developer is going to check in and build the fix I create, and the tester is going to test it. Losing sleep for a few nights waiting for the build to complete and tests to finish tends to cure these kinds of issues. They also tend to be a little more dilligent about letting their DBA review their code before they check in.

    11. Re:an Oracle DBAs perspective by fatp · · Score: 1

      It's not that difficult to find a career DBA that don't understand how the underlying system works (let alone troubleshoot a problem with tools like strace or truss or even dtrace)...

      Actually, I logged a bug with Oracle that the latest version of their database can't be troubleshot with strace or truss. So even Oracle assume no one use such tools to troubleshoot.

    12. Re:an Oracle DBAs perspective by rev0lt · · Score: 1

      Actually, I logged a bug with Oracle that the latest version of their database can't be troubleshot with strace or truss.

      For each applicational bug that can't be easily traced/diagnosed at operating system level, you have dozens of performance issues/hiccups/misconfigurations that can. If you google "oracle strace", you'll find out that many people do use those tools for troubleshooting. If that wasn't the case, Oracle wouldn't be investing on them releasing a DTrace version for their Unbreakable Linux.

  28. Obvious - NoSQL is webscale by unixhero · · Score: 1
    1. Re:Obvious - NoSQL is webscale by Anonymous Coward · · Score: 0

      Web scale eh? I reckon I can put this on my buzzword bingo card. >_>

    2. Re:Obvious - NoSQL is webscale by swilly · · Score: 1

      Yes, but is /dev/null is webscale? If it is, I'm so using it.

  29. In other forums... by pehrs · · Score: 0


    I had a look in the other forums I frequent, to look around for similar questions. And look what I found:

    In the construction forum:
    Screwdriver vs Hammer: Which is better?

    In the art forum:
    Pencil vs Pen: Which is better?

    In the transportation forum:
    Walk vs Drive: Which is better?

    In the pets forum:
    Cat vs Dog: Which is better?

    In the energy forum:
    Wind vs Hydro: Which is better?

    And guess what? They all came to the same conclusion. "It depends".

    Can we now stop posting "SQL vs NoSQL: Which is better?" stories like this one, as they are utterly pointless?

    For the article to be useful the author needs to chose and describe use cases that actually matters to the reader. "Better" is not a use case, and I really hope people don't pick the backend for their application based on how easy it is to implement a few tiny examples in C# or Node.js which is the only thing resembling a use case in that mess of an article.
    </rant mode>

  30. Re:One point for NoSql Data bases by Anonymous Coward · · Score: 0

    I've been using NoSql data bases for a long time now. The one I use now is called ext4. It's great, and even came built into the OS.

  31. Re:One point for NoSql Data bases by Anonymous Coward · · Score: 0

    But NoSql bases are also in most case very easy to understand for any programmer, not only experienced DBA, and very easy to adapt to situations where you basically want a persistent store.

    If you can understand how to program you can understand how to layout an sql database in a reasonable way for just about anything. This argument that "any" programmer can understand NoSQL but not SQL is flawed, because there is no reason they can't other then being too lazy or unwilling to learn how the datastores that support their applications actually work. In which case they probably aren't a very knowledgeable or good programmer.

  32. Re:One point for NoSql Data bases by zifn4b · · Score: 2

    Typically Sql developpers tend to throw everything into the data base, then create marvelously large queries, and finally pout when you complain about performance, that "if they had had the time they would have some stored procedures, and the server is too slow anyway...."

    This should be marked as flamebait. This is only true of some developers i.e. those who are ignorant about RDBMS. They should make it their business to understand RDBMS especially in large scale applications where performance is critical. This particular aspect alone forces any developer or DBA to have think "hard" about the structure of their data such as transactional vs. analytical needs. If used appropriately, an RDBMS can be quite intuitive and performance/space efficient. It all comes down to understanding the tool you're using. If you don't know how to use a screw driver or a hammer, you probably shouldn't be using it!

    --
    We'll make great pets
  33. SQL ruled for 40 years? ROTFLMAO. by Nutria · · Score: 1

    Hardware wasn't powerful enough for world domination until the late 1980s. For the 10 years prior to that, network databases and plain old VSAM/ISAM were dominant though slipping.

    --
    "I don't know, therefore Aliens" Wafflebox1
  34. SQL Vs. NoSQL: Which Is Better? by Anonymous Coward · · Score: 0

    Actually it always surprises me that this kind of question comes up. As I understand it from the theoretical side, the point is that if the relational model is correctly implemented, which definitely does require a very detailled analysis of the structure of the data and the way it will be used, then it can be mathematically proven that a properly formulated query will retrieve the full set of tuples in the relation which meet the selection criteria. In applications where this level of certainty is required, then it can be the most important factor.

    Is the provability of NoSQL mathematically guaranteed ?

  35. Wrong focus, otherwise good. by vlm · · Score: 1

    The article is pretty good at doing what it wanted to do. The problem is it's trying to do the wrong thing.

    Its too basic. Its example is of "hello world" caliber. The problem with basing decision on "hello world" scale problems is real world problems don't scale equally in all languages. For example, you can't beat the simplicity and rapid development of "bash" when you want to do a "hello world", and java looks absolutely awful as a "hello world"... However most devs would agree, that in a gigantic zillion user system you're probably better off after X zillion lines of code with java than bash. What makes it worse, is one of the main arguments of nosql is its OK to make the devs suffer with an inherently featureless crude tool because its 100 times as fast... which only matters in absolutely huge implementations.

    That said, ignoring the incorrect aim, its actually a pretty darn good article that hits all the major points and is reasonably well written.

    One point he did miss is that database hardware performance is exploding as is clustering support. We ran multinational companies using "slow" SQL decades ago, and every year sql databases are more capable, but at least my userbase and dataset size is not increasing as quickly. Its the tired old anti-optimization argument from plain old coding, as applied to DBs. So SQL really does limit me to only maybe 100000 times the size I'm currently operating at, and at a conservative DB hardware capability growth rate of 10% per year and a realistic measured long term user growth rate of 0% I'll hit the performance barrier right about ... never. Oh OK then. Well since my inherently relational problem space seems to easily fit the current and future capabilities of relational DBs, I think I'll stick with relational DBs and not waste effort, time, and money wedging that relational problem-space into a non-relational tool. Thats the most important reason not to do nosql.

    --
    "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
  36. Wrong person doing analysis by aristotle-dude · · Score: 3, Insightful

    "Tech writer (and programmer) Jeff Cogswell examines both sides from a programming perspective."

    Irrelevant. The data exists to serve the needs of the business and programmers/developers work to serve those needs. The company should chose the best tool for the job which is a usually a relational database as it serve the needs of the "business" the best in most cases. If you are looking to see which is easier for you then you are a shitty programmer and you need to upgrade your skills to understand how to work with relational databases. You should not be dictating what storage methodology is used for the data.

    To be a competent developer, you need to have some understanding of how databases work because you cannot rely on the DBA to babysit all of the projects. You should understand what indexes are, the difference between and inner and outer join and when you can use each time and you should test your code against a large data set to find any bottlenecks on the database side.

    --
    Jesus was a compassionate social conservative who called individuals to sin no more.
    1. Re:Wrong person doing analysis by sbjornda · · Score: 2

      The data exists to serve the needs of the business and programmers/developers work to serve those needs.

      +1. Every developer should be made to write 100 times on the whiteboard: "The data belongs to the enterprise, not to the application."

      Data architecture is a discipline in itself, not something a developer does off the side of his/her desk.

      --
      .nosig

    2. Re:Wrong person doing analysis by Bob9113 · · Score: 1

      If you are looking to see which is easier for you then you are a shitty programmer and you need to upgrade your skills

      I'm guessing most of the replies are roasting you for one reason or another, but I've got to say: It's not exactly the kind of advice I'd want to say in public, or even particularly true in general, but boy, when it's right is sure is right -- and I've both had coworkers like that and even been that guy enough times that it made me laugh so hard that my eyes started watering. Thanks for the giggle. :)

    3. Re:Wrong person doing analysis by RabidReindeer · · Score: 1

      "Tech writer (and programmer) Jeff Cogswell examines both sides from a programming perspective."

      Irrelevant. The data exists to serve the needs of the business and programmers/developers work to serve those needs. The company should chose the best tool for the job which is a usually a relational database as it serve the needs of the "business" the best in most cases. If you are looking to see which is easier for you then you are a shitty programmer and you need to upgrade your skills to understand how to work with relational databases. You should not be dictating what storage methodology is used for the data.

      To be a competent developer, you need to have some understanding of how databases work because you cannot rely on the DBA to babysit all of the projects. You should understand what indexes are, the difference between and inner and outer join and when you can use each time and you should test your code against a large data set to find any bottlenecks on the database side.

      Don't confuse the database with the data. Although normalized data is the ideal, practical needs require alternative solutions, and that may even include placing copies of some data in nosql data stores. Although one thing I learned from IBM's bad examples is that if you must keep multiple copies of data, there had better bygolly be one definitive one and it had better be kept as up-to-date as possible.

      As far was "what's easiest for the programmer" goes, sneer all you want, but it's the corporation that demands faster-cheaper, and if that means that the programmer raps out something with bigtable instead of a meticulously-tuned SQL, argue with the corporation, not the programmer.

  37. oracle DBAs response 2 by Anonymous Coward · · Score: 0

    This is from the article.

          1. Joins in relational databases can slow the system down to a crawl, especially when millions of users are doing lookups against tables with millions of rows of data. Google and Amazon found this to be the case, and thus developed their own non-relational systems.
    e
    -- this is about half write. What tends to happen over time is that there isn't alot of control over the data model, so the mapping between tables is weak. Few projects have data architects/modellers on the team and the few that do, don't give them any real authority, or they are not any good. What happens over time is that people are in a hurry to get things done and just add columns and don't think about how the data flows together. This leads to complex joins that do not perform well. I would like to see how NoSQL does over the next 10 years on systems that stick around and are enhanced and grow. I would be very curious.
    This issue is not about the SQL, its the DB design. This is from experience and alot of it as both a DBA and a database architect.

    From many years of experience, it is not the join in and of itself that is the problem, its the lack of control and organization of the table design over time as logic changes and gets more complex. People just want to add columns and throw stuff out there. I'd really like to see how NoSQL handles this on very large systems that are enhanced over 5-10 year periods.

            Relational data doesn’t map well to typical programming structures that often consist of complex data types or hierarchical data. Data such as XML is especially difficult because of its hierarchical nature. Complex objects that contain objects and lists inside of them do not always map directly to a single row in a single table.

    -- This is about half right. The only real different in hierarchical modelling from a table layout is all the 1 to 1 designs with redundant data. Normalization is designed to eliminate all the 1 to 1 relationships. It is really not that hard to write queries that handle this for you. When you have inheritance, think about what you are doing, you are making an object with functions and data based on another object and allowed to add more fields and functions. How hard is it to write a query to grab this? You have to actually look at the tables to do this.

            Relational data doesn’t map well. Combine that with the need to handle the syntax of SQL, and writing client code for accessing SQL databases becomes difficult.

    -- SQL syntax? its not that hard. Its easier than learning a new programming language and you guys do that all the time. The biggest difficult comes from developers who frequently switch databases. Since the syntax changes. I agree, that would be a real pain. Not sure how that is any different than switching from NoSQL to some other type of non-sql database though.

  38. What a confused article by jbolden · · Score: 1

    The article seems to confuse three entirely different approaches alternative to SQL.

    1) Modern NoSQL, the product he lists. These are basically an old fashioned Network Databases for UNIX servers. The goal being to get performance much higher than what is possible with Relational at the expense of making the database far less flexible.

    2) Associative Databases. The goal being to drive up flexibility substantially often at the expense of performance, by orders of magnitude.

    3) Object-Relational. The goal being to drive up the performance of the developers by embedding the intermediate layers directly in the database. This loses both flexibility and often performance in exchange for moderate reductions of development cost and development complexity.

    Relational is a compromise between a bunch of conflicting goals. If you can't afford to compromise you can't use relational. But this article which takes all the advantages of a variety of NoSQL approaches and intermixes them as if you can get them all together rather than they are pulling in opposite directions.

  39. Programmers should not be allowed to write SQL. by pigiron · · Score: 1

    All database access should be done through stored procedures written by people competent in the relational model.

    1. Re:Programmers should NOT be allowed to write SQL. by pigiron · · Score: 2

      I disagree, especially for inserts and updates. There should be no raw SQL embedded in programs. Most programmers are most decidedly not competent in the relational model (the very existence of numerous NoSQL fanbois is a testament to this fact.) Indeed, even many DBA's aren't either as the job is rife with far too many sys admin types rather than people that are concerned that they do a properly normalized logical model as a mandatory first step before physical implementation.

    2. Re:Programmers should NOT be allowed to write SQL. by DragonWriter · · Score: 2

      There should be no raw SQL embedded in programs.

      That's kind of different than programmers not writing SQL. Since SQL is strings, and there shouldn't be hardcoded strings embedded in programs, it stands to reason that there shouldn't be raw SQL embedded in programs.

      That doesn't mean that programmers shouldn't write SQL, or that non-programmers should be writing stored procedures so that programmers can avoid writing SQL.

      Most programmers are most decidedly not competent in the relational model (the very existence of numerous NoSQL fanbois is a testament to this fact.)

      While I agree that most programmers aren't competent in the relational model, the solution isn't to accept that and ban programmers from writing SQL, its to demand that programmers -- at least those working on the model side (less reason for concern from programmers doing, say, pure UI work) -- be competent with the relational model, which is fundamental to understanding data. Further, while I agree with your conclusion, it doesn't follow from the evidence you cite: proficiency with the relational model doesn't mean that you have an obsessive need to have either a RDBMS or a DBMS that speaks SQL (which aren't the same thing, as you can be either without the other) used for all data storage needs. Understanding the relational model is fundamental to effectively modelling data, whether its going to be stored in a black box where someone else has implemented the relational model for you or not (probably moreso when "not".)

      Indeed, even many DBA's aren't either as the job is rife with far too many sys admin types

      That's why they are called data base administrators. Data modelling and database development are more related to programming than to database administration.

    3. Re:Programmers should NOT be allowed to write SQL. by marcosdumay · · Score: 1

      Most programmers are most decidedly not competent in the relational model

      See, that's you problem. Most programmers around you aren't qualified to write enterprize* software. That may be a fault of management, or just a simptom of low priority of IT at your company.

      If it is just due to low priority (and that priority is justified), you are right, the DBAs should help the developers do their job.

      * I cringe every time I hear that word, but it is really what goes here.

    4. Re:Programmers should not be allowed to write SQL. by maxwell+demon · · Score: 1

      And those people would not be programmers? I don't think it's a good idea to let non-programmers write procedures, stored or not. Especially if those procedures operate on critical data.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    5. Re:Programmers should not be allowed to write SQL. by Tablizer · · Score: 1

      It depends on the situation. Stored Procedures have a lot of overhead to change: you have to "visit" more places to add a new column, for example. Plus, they don't do well with things like Query By Example where the criteria is dynamically generated.

    6. Re:Programmers should not be allowed to write SQL. by pigiron · · Score: 1

      You would still have to "visit" code embedded god knows where in scattered application code too. QBE belongs to static reporting databases with a view interface. It's totally insane to allow QBE on live production data.

    7. Re:Programmers should not be allowed to write SQL. by Tablizer · · Score: 1

      With SP's, you have to visit 3 places:

      1. App code
      2. Database structure
      3. SP editor

      Embedded code avoids visiting #3.

      QBE is still practical in some production DB's if you know the max query scope up front. For example, the user must either enter a specific product category or a specific store location, but can't leave both unspecified (plus other optional filters).
       

    8. Re:Programmers should not be allowed to write SQL. by pigiron · · Score: 1

      Naw. Any decent DBMS flags any SPs that *might* have to be changed. Merely adding a column may not even affect any App code if the app doesn't use it. Most applications are a mares nest of unmaintainable spaghetti mishmash of overly complex templates of silly controller methods. Especially if agile methodologies have been used. Better to restrict reads/writes to a database access layer where they can be easily maintained. Most application developers are held in well deserved contempt by the rest of the enterprise for a reason. Sometimes the correct answer is actually no.

    9. Re:Programmers should NOT be allowed to write SQL. by pigiron · · Score: 1

      Most programmers are most decidedly not competent in the relational model

      See, that's you problem. Most programmers around you aren't qualified to write enterprize* software. That may be a fault of management, or just a simptom of low priority of IT at your company.

      I've worked exclusively at Fortune 500 companies for over thirty years and regrettably this was true at *every* single one of them.

    10. Re:Programmers should not be allowed to write SQL. by Tablizer · · Score: 1

      I respect your opinion, but disagree with it as a general approach.

  40. ignoring history, are we? by sribe · · Score: 5, Informative

    For the past 40-some years, relational databases have ruled the data world.

    Bullshit.

    In 1972 hierarchical databases ruled the world (with a few network-model attempts here and there) and continued to do so well into the 1980s. In fact, the theory behind relational databases had only been articulated and published in June 1970. In further fact Oracle wasn't founded until 1977, and didn't ship anything until 1979, and they were the first to successfully promote that new-fangled "relational" stuff in a commercial product--prior to that IBM kept it locked up in the lab, except for some very obscure "mostly demo-ware" things, so it wouldn't threaten their then-current cash cow: IMS. IBM's entry into the relational database world, in the early 1980s or so, was a direct response to the growing sales of Oracle.

    Also in the 1980s we got: Sybase, Informix, Ingres, MS SQL Server. Then in the 1990s we started getting open-source RDBMSs, along with actually robust versions for Windows-based servers. Then in the 2000s holy crap we even got good database servers on Macs!

    Anyways, relational databases have really only "ruled the world" for the past 20 some years ;-)

    1. Re:ignoring history, are we? by fatphil · · Score: 1

      If you look at all the data that's out there, most of it is managed using the database family known as "file systems". (And "queried" using a program called "explorer", at least last time I used a member of the prevalent OS family.)

      --
      Also FatPhil on SoylentNews, id 863
    2. Re:ignoring history, are we? by dkf · · Score: 1

      If you look at all the data that's out there, most of it is managed using the database family known as "file systems".

      Invalid point. Lots of databases host inside filesystems, so you would be forced to claim some data for both sides. Which is just nonsense.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    3. Re:ignoring history, are we? by fatphil · · Score: 1

      If you think it's nonsense then that's purely due to insufficient understanding on your part. If you look at the history of filesystem evolution, the similarity to databases is such that the two have at times been indistinguishable.

      --
      Also FatPhil on SoylentNews, id 863
    4. Re:ignoring history, are we? by jedwidz · · Score: 1

      Claiming a file system is a database is a bit of a stretch.

      File systems tend not to support transactions consisting of more than operation. They also tend not to support ad-hoc queries and indexing - which is often available as an add-on service, e.g. 'locate' or Windows Search, but not part of the file system itself.

      Compare to an LDAP directory, which is somewhat similar to a filesystem but with support for the above. (To be precise, transactions are part of the protocol but optionally implemented, and index creation is not part of the protocol but is a typical feature.)

      I'd say an LDAP directory is a database, and a file system is a file system.

    5. Re:ignoring history, are we? by fatphil · · Score: 1

      In the history of databases, transactions are a relatively modern thing. Codd's most influential work predates ACID by well over a decade.

      --
      Also FatPhil on SoylentNews, id 863
  41. Re:One point for NoSql Data bases by vlm · · Score: 1

    Typically Sql developpers tend to throw everything into the data base, then create marvelously large queries

    Noobs model their reports and inevitably screw it up when they can't add new reports without changing their data model. When they use 50 JOINs they complain JOIN is slow because they've apparently never heard of indexes.

    Intermediate folks model the underlying data, and can support both the current planned queries and any new future queries. When they use 50 JOINs its fast as heck because they know what a JOIN is, but they burn insane quantities of disk space (I remember one deployed piece of network monitoring gear that somehow burned about a meg of disk for every 100 bytes of connection data, but good lord every query was lightning fast)

    Pros model both, separating the real-world-model data store from the report store. When they see 50 JOINs they yell at the noob programmers because they specifically created view tables and custom query tables solely so the noob programmers don't have to write 50 JOIN queries.

    --
    "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
  42. Best tool for the job by ianare · · Score: 2

    As other have said, there isn't one that's "better" than the other in a general sense. However, there are situations in which one is better suited to a task at hand.

    This is of course something that applies to many different aspects of application design and architecture.

    As an example, I'm developing a high volume, high transaction website application and use both PostgreSQL and MongoDB.

    We use SQL where strict relations, type checking, and data integrity are required. The SQL database has the extremely important function of making sure the data given to it by the application is coherent. I realize that MongoDB has functions for checking data integrity, but it is tricker to get right in my opinion and experience (it does allow greater flexibility however). Also, the application has the need for atomic operations and transactions, which MongoDB does not provide.

    MongoDB on the other hand, is used where it delivers better performance than PostgreSQL. For example all our logging is sent there, giving near-disk performance while allowing quick and easy searching and archival. Our session is also handled by MongoDB. Finally we make great use of gridFS for all our uploaded content and document storage. We're also looking into MongoDB for data analysis and reporting, fed data from SQL.

    So there's no reason to pick one over the other, a mix and match approach will yield better results. Where tasks require greater speed and have loose integrity requirements, go for NoSQL. When the data absolutely needs to be coherent and is by its nature relational, go for SQL.

    Also, PostgreSQL will soon support embedding JSON objects directly, so some sort of hybridization is foreseeable in the future. As of now we simply put the Mongo ID in SQL when we need to reference.

    1. Re:Best tool for the job by equex · · Score: 1

      We often used high end system to query the data, then work on it in SQLite or similar, and commit back.

      --
      Can I light a sig ?
  43. There really is no contest... by smcdow · · Score: 1

    emacs

    --
    In the course of every project, it will become necessary to shoot the scientists and begin production.
    1. Re:There really is no contest... by Anonymous Coward · · Score: 0

      # rm /usr/bin/emacs ; ln /bin/ed /usr/bin/emacs

  44. fork vs spoon: Which Is Better? by Anonymous Coward · · Score: 0

    They are complimentary.

    1. Re:fork vs spoon: Which Is Better? by maxwell+demon · · Score: 1

      They are complimentary.

      Really? My forks and spoons aren't very complimentary. Maybe I should send them to a training in good manners?

      SCNR :-)

      --
      The Tao of math: The numbers you can count are not the real numbers.
  45. IMO, the issue isn't SQL vs NoSQL by C_Kode · · Score: 1

    The issue is people trying to shoe-horn what should be SQL into NoSQL. NoSQL has it's uses, but so many people don't understand why SQL fits better than NoSQL in most situations. There is a reason SQL has been around for a VERY long time and most technologies are still implemented in SQL and not NoSQL.

    Whether it's people just wanting to use the cool new technology and finding out later that what they could do in SQL is just not feasibly possible in NoSQL. Then you and your project are in a serious pickle.

    SQL has strengths that make it hard to move away from. If you are going to move away from SQL, then you probably already know NoSQL's pluses, but do you know NoSQL's limitations? Not only that, but do you know where your project will end up? If not, you better think long and hard about moving to NoSQL because down the road, that feature or functionality you need may be damn hard to implement using NoSQL.

    There are been a lot of projects that started with NoSQL and are now SQL based.

  46. no need to even disagree by Biggseye · · Score: 1

    Having been in information systems for 35 years, I feel that whole argument is salacious. Having user many different databases, many different languages, I have found that in the end, it is best to use that database/language that fits the application best. Of course you have to take in the skill set of the available resources. But the ultimate goal is to produce a product that is usable and fills a need. You can argue forever what is the best to use, and get nothing done. Been there, done that, have the scars to prove it.

  47. In this SQL happy industry... by 0p7imu5_P2im3 · · Score: 0

    I see no benefit to SQLs as they are typically just regurgitation and rehash of the previous platform. Yes, there is some minor benefit to being able to forgo character exposition, but often they are simple cookie cutter copies of other SQLs... Wait... we're not talking about movies, are we?

    --
    Resistance is futile. Your technological distinctiveness will be added to our own. You will become one with the morgue
    1. Re:In this SQL happy industry... by Anonymous Coward · · Score: 0

      Congratulations, you've just exposed yourself as someone who doesn't know the difference between SEQUEL and SQL. (It's not just the pronunciation.)

  48. Programmers should be allowed to write SQL. by DragonWriter · · Score: 1

    All database access should be done through stored procedures written by people competent in the relational model.

    Well, no. All non-administrative access to a database should be through views configured by someone competent in the relational model, but those views should be accessed through SQL also written by people competent in the relational model. Competence with the relational model is a fundamental skill that all professional programmers should have.

  49. DBA Threat by codepunk · · Score: 1

    Look the DBA's are all going to cry that the sky is falling as they have skin in this game.

    At the end of the day though there are some work loads that NoSQL is just a better tool for the job. There are others for instance when you need something acid compliant and relational like a traditional db.

    Anyone that claims you should always use just one or the other is a complete idiot.

    --


    Got Code?
    1. Re:DBA Threat by Anonymous Coward · · Score: 0

      Look the DBA's are all going to cry that the sky is falling as they have skin in this game.

      DBA here, not at all crying, au contraire I'm sitting here by the river smirking. All this "best tool for the job" is just another way to say "store first, think later". Of course you can add tons of useful (or useless) properties to your object bags without thinking too much. It's also very convenient to drop isolation by simply sticking one's object bag to a single compute unit until the work is done. However, one day you'll have too do something with all that stored data. That day, I will still be there waiting and smirking :) Relational technology is all about convenience and consistency in managing information, NoSQL is all about fast storage and retrieval of singletons.

  50. Bogus false conflict by mlwmohawk · · Score: 1

    The No_SQL people are out of their minds. SQL means "structured query language." It is nothing more than a linguistic methodology for accessing data. As we all know, the various databases, MySQL, PostgreSQL, Oracle, MSSQL, couchdb, Cassandra et al are storage platforms with access systems. You need to debate the needs of the storage platform for your application because, make no mistake, just about all the "No SQL" databases pretty much have a top-level SQL language interface available for them.

    "Relational" data is an access strategy, not a requirement.

  51. But is it web scale? by Infin1niteX · · Score: 1

    Can't but help but think of this whenever I read about this argument. http://www.youtube.com/watch?v=b2F-DItXtZs

  52. Huh by Safety+Cap · · Score: 4, Interesting

    Speaking as a professional SQL Developer with OVER TWENTY YEARS of experience, an RDBMS is not the answer to every problem. Sometimes NoSQL makes sense.

    For example, if I'm dumping some random user data that will never be formatted/standardized/normalized—that can be different domains for every user—NoSQL might be the right choice.

    Maybe I want to store a user's favorite object (puppy, car, toy, steak 'doneness') and I don't want to have a child-table-from-hell lookup table. NoSQL is a great option.

    On the other hand, if I want to do some sort of row lookback, then it is far easier in a relational DB. For example, if I want to find the salary average and of all of people in the same department as the most recent new hire or the average working 'lifespan' (how long before the person quits, gets fired or dies) of every department vs. their salary range*, then it is pretty easy.

    Now get off my lawn.

    * Yes, real-world examples.

    --
    Yeah, right.
    1. Re:Huh by Anonymous Coward · · Score: 0

      Thank you for showing your age, Safety Cap. Apparently, with this age came senility and/or the onset of Alzheimer's, as the AC made those exact points for which you are enthusiastically chewing him/her out in an effort to show your superiority and, it can be assumed, relevance despite your advanced age. Well done!

      The relevant part of the AC's post was:

      For many of the things we use relational DBs for, they are the best solution. But there are a lot of other applications for which a RDBMS is overkill, and a tool like BigTable is ideal. There are others where a single XML file would be better. There are others where a simple text file would be better.

      Of course, I don't know what your age says about your SQL developer skills, but we can see what other areas of your mind it is currently affecting. Might I also add that, at the age at which you're growing senile to the point of not being able to comprehend the post to which you're replying, it may not be the best of ideas to ramp up your blood pressure in the process of composing a response like that?

    2. Re:Huh by Anonymous Coward · · Score: 0

      OVER TWENTY YEARS of experience

      noob.

    3. Re:Huh by Anonymous Coward · · Score: 0

      You got it:

      NoSQL -- Time sensitive data (typically a data structure but no informational structure)

      SQL -- Non-time sensitive data (stuff you want to keep for a LONG time)

  53. You know ... by bhunachchicken · · Score: 2

    I've been coding professionally for 11 years, have been hobby coding for about 20.

    Recently, I've been exposed to Agile, Scrum, XP, TTD, User Stories, Sprints, Pair Programming, and now NoSQL. All these things, I have to say, are contributing massively to my strong considerations to hang up my mouse and keyboard.

    My first experience of Agile was working for an investment bank where they decided that, no matter if the code was buggy or was only partly complete, we would push it out to the clients. No problem, our next sprint would fix the bugs. Another project I worked on saw me having to attend hours and hours of meetings, filling out small cards to stick to white boards, listening to people who have no relevance to my project talking about what they were doing, and constantly giving estimates to project managers so that they could make further adjustments to later sprints. When I finally sat down to code that day, it was about 3 lines. I wasn't allowed to work on anything else, because that hadn't been assigned to this sprint. Fun.

    I recently had a telephone interview with a man who spoke to me for 40 minutes straight about agile and did not ask me one single technical question. Nothing on Java, Spring, Hibernate, XML, SQL, or anything else listed on my CV. He even wanted to know whether I used physical note paper or software for details the tasks and user stories. When he asked me two days later if I would like to come in for an interview, I declined. I want to code, not work for a bureaucracy.

    I remember when coding was fun and we didn't have to adopt all these so-called methods. I have no idea what NoSQL is, all I remember is someone at my last contract deciding we were going to use it and then teaching everyone how to query using JSON or Javascript or whatever. It took us a few weeks to get our heads around the idea, and I have to wonder what the benefit of writing Java-JSON-Mongo DB interfaces were over SQL. He did not do this because the project needed it, but because he had heard about the system and wanted to shoe horn it into the project. Seriously, that was the only reason.

    I'm not even sure what Agile is, to be honest. I think it's just some fancy term used by managers to make it sound as if they're being efficient and know what's happening.

    One has to wonder exactly what was wrong with the previous approaches. We all still had working software 6 years ago, from what I remember ...

  54. Re:The answer to all "Which is better" questions.. by Samantha+Wright · · Score: 1

    Wow. I'm really impressed with the maturity in all of these comments. Now if only other holy wars could be resolved the same way.

    --
    Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
  55. Well by Safety+Cap · · Score: 1

    Did you forget to link to the link?

    --
    Yeah, right.
  56. Is there a link to the article? by kumanopuusan · · Score: 1

    I hope this doesn't come off the wrong way, but where's the god-damned link?

    I'm tagging this as missinglink.

    --
    Use of the words "good", "bad" or "evil" is almost invariably the result of oversimplification.
    1. Re:Is there a link to the article? by kumanopuusan · · Score: 1

      Disregard that. I see that there are articles on /. now.

      --
      Use of the words "good", "bad" or "evil" is almost invariably the result of oversimplification.
  57. Wrong Question by slapout · · Score: 1

    You should be asking:
    SQL Vs. NoSQL: Which Is Better For What?

    --
    Coder's Stone: The programming language quick ref for iPad
  58. Getting tired of all this nosql slashvertisment by Anonymous Coward · · Score: 0

    just let those nosql folks reinvent xml and let them be.

  59. Which is better? by Anonymous Coward · · Score: 0

    Dolphins or bathos?

  60. Re:One point for NoSql Data bases by Anonymous Coward · · Score: 0

    Brilliant troll. Mad props to you, sir.

  61. poor article editing by bolthole · · Score: 1

    It took me a while to figure out that the NEW article, really is buried in a sentence that refers to past arguments.

    This is really poor editing.
    The hyper link should be connected to the (Jeff C says..) phrase instead, or something like that.

  62. Another disappointing BI article by pkinetics · · Score: 1

    Hate to disparage /., but have ANY of the topics out of the BI section been insightful?

    Maybe my expectation is that it will get me thinking technically or even business decision making. They haven't. They just make me wish I hadn't spent the 5 minutes (I'm a slow reader...) reading the article and researching if the author is some sort of hack.

  63. Or which is better: a tablet or a notebook? by Truedat · · Score: 1

    People aren't so much on the fence about that one though.

  64. SQL is great to write by Anonymous Coward · · Score: 0

    I learned SQL ages ago, and never used it very much. After a year or two of complete non-usage, I had to do something with it again, and realized I can still write perfect SQL.

    Not many human-computer-interfaces are great like that. After all, I'm the weakest link in the computation now (and the scarcest resource as well), so I love the kind of thing SQL is.

  65. Yawn by macbeth66 · · Score: 1

    Wake me up when its real news...

  66. SQL versus NoSQL by Anonymous Coward · · Score: 0

    The conclusion "It just depends" is true, but not very useful. There is some initial confusion here where we act like Google does "data processing". Google does "information processing". Would you want your bank to use the Google style of information retrieval to calculate your checking account?
    Plus, we need a bit of strategic thinking here. All large corporations should have and use a Data Architecture which includes two major components - Add, Change, Delete data stores and Reporting/Querying data stores (from which Information is garnered). There is a fundamental rule - There can be no end-user querying against the Add, Change, Delete data stores. Twenty five years ago, Bill Inmon observed that with this architecture you have "underhead". But in addition to the simplicity inherent in this fundamental data architecture we should take into consideration that we can make as many copies of the Reporting/Querying data stores as we want. This all by itself handles the issue of many many users of a single data store. But in addition to mearly copying the Reporting/Querying data stores we reduce the size of each segment by some tactical criterion - geography, customer type, goods purchased, etc. Proper data architecture solves the problem being addressed by NoSQL in typical corporations - Amazon, Bank of Americal, Smith Barney, State Farm, etc. NoSQL is a better tool for information corportions like Google.

  67. 40 years? by whitroth · · Score: 1

    I beg your pardon, but that's bs by someone who wasn't there.

    There was *zero* discussion of SQL in the late seventies into the mid-eighties, when I was studying. Everyone used heirarchcial databases. Not a college, not a nation board, not a Fortune 500 company, used SQL. The first time I ever *heard* or worked with SQL was '91.

    But then, there are such fads in comp sci, and the latestgreatestnewestcoolest tool is the Answer To Life, the Universe, etc. Why, I remember the Jan '94 IEEE Spectrum, that *literally* presented OO as The Silver Bullet to the software backlog....

                      mark "has hammer, and screwdrivers with flat, Phillips, torx, etc heads...."

    1. Re:40 years? by El_Oscuro · · Score: 1

      What do you get if you multply 6 by 9? 42! 6 by 9 = 42? Oh, wait, it is a complete cock up.

      Pretty much like every computer fad - 6 x 9 = 42. Case tools, FOCUS, ESB, OO, Web Services for everything, cloud computing, etc. SQL is one of the few fashinable ones that worked well enough to stick (even though the orginal claims about it being like english enough so that end users could actualy write queries was like most of computer history, completly bunk).

      --
      "Be grateful for what you have. You may never know when you may lose it."
  68. For what is which better? by hendrikboom · · Score: 1

    What are the characteristics of problems that make one better than the other? I see many posts arguing that it all depends on the problem (which almost anyone with a modicum of knowledge and an open mind can conclude), but very few indicating how the characteristics of the problem affect the outcome.

    For that matter, what *is* a noSQL data base. Clearly, from the debate here, it's not a relational data base. But this doesn't tell me what it *is*, what facilities it *does* provide.

    Please, please enlighten us on these matters, rather than just spewing parametric (but, I admit, amusing) boilerplate.

    (I was about to ask, "Can anyone please ...", for which the answer would trivially and uninformatively be "yes".)

    1. Re:For what is which better? by Anonymous Coward · · Score: 0

      NoSQL is webscale.
      I'm glad I could open your eyes.

    2. Re:For what is which better? by maxwell+demon · · Score: 1

      What is webscale? Is Wikipedia webscale? Does Wikipedia use NoSQL?
      What does Slashdot use? Is Slashdot webscale?

      --
      The Tao of math: The numbers you can count are not the real numbers.
  69. That's what I get for trying to use humour by Safety+Cap · · Score: 2

    I was tweaking the AC's reliance on Argumentum ad Verecundiam, which is (often) a fallacy.

    I looked up alternatives to Alzheimer's, and Pick's Disease looks like an introvert-troll/basement-dweller's dream. Check out the list of behavioural and emotional changes.

    --
    Yeah, right.
    1. Re:That's what I get for trying to use humour by Anonymous Coward · · Score: 0

      Argumentum ad Verecundiam

      Don't assume there's only one way to present an argument.

  70. Re:There really is no contest... How sad by Anonymous Coward · · Score: 0

    As a retired software developer I am sadened by the demise of the
    emacs/vi ah err fights. They supplied humour for many years. I still
    have trouble with emacs modes in things like Netbeans because my
    finger tips still remember all of those sexy little short cuts I used every day.
    sigh!

  71. Pepsi vs Coke by WaffleMonster · · Score: 1

    If I had to choose between SQL, NoSQL or not having that choice and instead selecting a schema design that did not suck guess which option I would pick every time?

    You can always tell the clueless "data experts" they are constantly neaping about database size, queries per second, join performance...etc.

    While the less clueless in realitive terms only care about minimizing contention.

    1. Re:Pepsi vs Coke by Anonymous Coward · · Score: 0

      Why you think Pepsi vs. Coke is a good analogy? This is more Coke vs. no Coke...

  72. Personal by Murdoch5 · · Score: 1

    I say this entire thing comes down the preference of the developer. You can compare benchmarks and compare syntax and ease of use and go on and on and on but in the end all that really matters is how the developer feels. Personally I don't care, you can sit me down at any database and I'll learn it.

  73. Data Architecture?? by MisterToad · · Score: 1

    The conclusion "It just depends" is true, but not very useful. There is some initial confusion here where we act like Google does "data processing". Google does "information processing". Would you want your bank to use the Google style of information retrieval to calculate your checking account? Plus, we need a bit of strategic thinking here. All large corporations should have and use a Data Architecture which includes two major components - Add, Change, Delete data stores and Reporting/Querying data stores (from which Information is garnered). There is a fundamental rule - There can be no end-user querying against the Add, Change, Delete data stores. Twenty five years ago, Bill Inmon observed that with this architecture you have "underhead". But in addition to the simplicity inherent in this fundamental data architecture we should take into consideration that we can make as many copies of the Reporting/Querying data stores as we want. This all by itself handles the issue of many many users of a single data store. But in addition to mearly copying the Reporting/Querying data stores we reduce the size of each segment by some tactical criterion - geography, customer type, goods purchased, etc. Proper data architecture solves the problem being addressed by NoSQL in typical corporations - Amazon, Bank of Americal, Smith Barney, State Farm, etc. NoSQL is a better tool for information corportions like Google.

    --
    Dick
  74. Re:The answer to all "Which is better" questions.. by Anonymous Coward · · Score: 0

    Exactly. The best response to "which is better?" is always "at what?". You cannot answer the first question without answering the second.

  75. noSQL vs. SQL = CAP Theorem by pingbak · · Score: 1

    My customers ask this question all of the time -- who's better? The answer isn't which is better, but which CAP properties do you want. You want consistency -- go with SQL and get the data model right to optimize performance. You have situations where availability and partitionability are important -- let's develop a matrix of noSQL solutions based on what data you're going to ingest. XML, you say? mongodb is probably the best fit? Trawling over metadata? Key-value stores are better. Etc. Etc.

    The one place where there is a substantial difference is geospatial indexing -- noSQL databases appear to do this a lot better than the SQL databases. YMMV, though.

  76. Re:One point for NoSql Data bases by maxwell+demon · · Score: 1

    I've been using NoSql data bases for a long time now. The one I use now is called ext4. It's great, and even came built into the OS.

    Yeah, it even has stored procedures (they are called executables). And you can write those in any programming language you like!

    --
    The Tao of math: The numbers you can count are not the real numbers.
  77. There can only be one by hackula · · Score: 1

    As any TRUE old timer will tell you, SQL makes things slow and complicated and NoSQL sounds like the name of a boy band. Ditch them both and go back to tab delimited text files! Nothing beats a flat file!

    1. Re:There can only be one by Anonymous Coward · · Score: 0

      As any TRUE old timer will tell you, SQL makes things slow and complicated and NoSQL sounds like the name of a boy band. Ditch them both and go back to tab delimited text files! Nothing beats a flat file!

      Finally a voice of reason. I can do a binary search of a 200TB tab delimited flat file so fast the TSC on this godforsaken virtual machine runs backwards.

  78. Re:The answer to all "Which is better" questions.. by Anonymous Coward · · Score: 0

    Wow. I'm really impressed with the maturity in all of these comments. Now if only other holy wars could be resolved the same way.

    Ya, the Vi vs. Emacs wars are still going on in some places. When will those geeks ever learn?

  79. Mod parent article +1 Flamebait by WillAffleckUW · · Score: 1

    SQL is used for relational databases.

    NoSQL is used for DSS views of data, for which an RDBMS may not be the best choice.

    If the world you look at is flat, or you look at it in layers (eg a GIS) than a different tool might be a wiser choice.

    Life is not a binary Either Or choice. It is a multiple choice statement and you can check zero, one, or many boxes.

    --
    -- Tigger warning: This post may contain tiggers! --
  80. ignoring spreadsheets are we? by sribe · · Score: 1

    subject says it all ;-)

    Mostly. Yeah, there's lots of data that's not in any real form of database.

    1. Re:ignoring spreadsheets are we? by fatphil · · Score: 1

      If they're on a filesystem, then they are in a database.
      The data within spreadsheets is also held in a trivial database format, with <sheet, row, column> as primary key. One could map the contents onto a single table in a RDBMS, and recreate the original from that database, so the two are isomorphic. It would be unpleasant, but one could even write a SQL stored procedure to evaluate a cell's value if you were sufficiently perverse. Not that that matters, evaluation is at a separate level from storage.

      --
      Also FatPhil on SoylentNews, id 863
  81. SQL is the problem by Anonymous Coward · · Score: 0

    If only we had a way to work with the relational model without using the horrible data access sublanguage called SQL...

  82. SQL does not scale by countach · · Score: 1

    SQL does NOT scale for many kinds of problems. To take an extreme example, let's say you had a network design for the United States telephone system, with all its connections and hubs and exchanges etc and how they all connect together. Then you want to store it all in a database. These kinds of problems will crush an SQL database. Sure, a really good SQL database can handle remarkable numbers of transactions per second, where those transactions are relatively simple: some manageable number of records involved per transaction. But the more complex the problems become, the more the theory bogs down. With more and more complex web sites and problems being modelled, the less and less can SQL databases cope.

    1. Re:SQL does not scale by Anonymous Coward · · Score: 1

      SQL does NOT scale for many kinds of problems. To take an extreme example, let's say you had a network design for the United States telephone system, with all its connections and hubs and exchanges etc and how they all connect together. Then you want to store it all in a database. These kinds of problems will crush an SQL database.

      Glacial rate of change, easily partitioned geographically. What problem?

      With more and more complex web sites and problems being modelled, the less and less can SQL databases cope.

      With more and more people loosing their minds to hungry zombies the less and less humanity can cope.

    2. Re:SQL does not scale by Anonymous Coward · · Score: 0

      So the whole Windows Live and Hotmail infrastructure have been running on top of thin air until now? People may want to read a bit about data dependent routing techniques before spitting out that the only way to go is completely replacing the database engine...

  83. bad analogy by Anonymous Coward · · Score: 0

    Might as well just ask: Which is better a BMW M3 or Ford F350 4x4 with 6.7 diesel?

    Both are great, have their place and will get you from point A to B, but neither are a practical replacement for the other.

    Both are way too overpriced and impractical for my modest needs. So by way of analogy, you're implying that there's a better light-weight alternative to both!

  84. There's only one way to find out. by Anonymous Coward · · Score: 0

    There's only one way to find out.

    FIGHT!

  85. Easy Recipe by coofercat · · Score: 1

    If you don't have an opinion, start with an SQL database. If you've got what you think is a specific use case, you've done your research, and have prototyped up a demo, then consider a NoSQL solution.

    Right now, NoSQL isn't safe enough for noobs to use, but a run-of-the-mill MySQL or whatever is easy to get to "good enough". Until you run out of puff from that, keep out of NoSQL.

  86. This is obvious by benhattman · · Score: 1

    IF you really truly need a DB, then SQL is usually a better choice for no other reason than there are several vendors offering several levels of capability all more or less compatible with the SQL language. Obviously there are times when your domain requires NoSQL, so know your domain and choose the right tool. But if you don't know yet, it's probably wiser to start with SQL.

    Of course, as others have pointed out, often when people think they need a DB, what they really need is a hash table and maybe a text file.

  87. Language Versus Storage by Tablizer · · Score: 1

    But there are a lot of other applications for which a RDBMS is overkill, and a tool like BigTable is ideal. There are others where a single XML file would be better. There are others where a simple text file would be better.

    You are conflating the physical storage mechanism with the query language. Ideally one could use the same query language (such as SQL) regardless of whether the data was in an RDBMS, XML, or CSV "flat" file(s).

    I'm all for exploring different query languages, and have even drafted up one of my own ("Smeql"), but the end-goal should be separating query language choices and physical storage layout choices.

    Then we could debate query languages separately from storage techniques and perhaps even mix and match.

    But in reality, our current choices are indeed limited. Google doesn't seem to be on the right track to give us flexible choices.

  88. Pre-SQL relational langauges by Tablizer · · Score: 1

    Early versions of SQL-like languages were also developed in the early 70s, with modern SQL appearing in the late 1970s, and becoming popular by the mid-1980s.

    The earlier relational languages were more math-like than SQL, and thus more flexible. For example, you could have a named-reference to a repeating structure rather than have to actually repeat that structure, and the optimizing engine would (potentially) know how to factor the actual under-the-hood query to avoid multiple trips to disk.

    Thus, multiple syntactic references didn't necessarily have to be multiple disk references. (It's somewhat similar to "views", but easier to use in a given expression and better used by the optimizer.)

    SQL was created sort of in the COBOL vain where the code was semi-readable to managers. It was easier to sell to PHB's that way. Lost was the elegance of the math-like approach.

    They tried to please the suits, not the geeks. Part of the claimed appeal of the COBOL-like syntax was that non-programmers could write queries because "it's English-like". While true, it did limit the expressiveness for advanced query writing, and thus SQL can become long, run-on sentences, and repetitious for the more complex queries.

  89. whichever one costs the most and is hardest by Anonymous Coward · · Score: 0

    because that will maximally dissuade management from launching all their brilliant projects, and experience tells us that the net result of the majority of such projects is to make things worse.

  90. From the article: by Anonymous Coward · · Score: 0

    The reason PostgreSQL scales is that Slashdot posters seem to like it. I've never seen science on this level done live before my eyes before!

  91. MySQL is very good for NoSQL by Dr.Ruud · · Score: 1

    Use tables that only have a ++id, and a blob.