Slashdot Mirror


Ask Slashdot: Which NoSQL Database For New Project?

DorianGre writes: "I'm working on a new independent project. It involves iPhones and Android phones talking to PHP (Symfony) or Ruby/Rails. Each incoming call will be a data element POST, and I would like to simply write that into the database for later use. I'll need to be able to pull by date or by a number of key fields, as well as do trend reporting over time on the totals of a few fields. I would like to start with a NoSQL solution for scaling, and ideally it would be dead simple if possible. I've been looking at MongoDB, Couchbase, Cassandra/Hadoop and others. What do you recommend? What problems have you run into with the ones you've tried?"

272 comments

  1. Do you need a database? by tubs · · Score: 2, Insightful

    Do you need a database to do what you're trying to do? Why not just write the information to a text file (csv or tab seperated?), and use other programs to query the data?

    --

    try to make ends meet, you're a slave to money, then you die

    1. Re:Do you need a database? by Anonymous Coward · · Score: 5, Funny

      Excel Spreadsheet, maybe?

    2. Re:Do you need a database? by Anonymous Coward · · Score: 0

      Absolutely, write to a file and you can Splunk the file.

    3. Re:Do you need a database? by Anonymous Coward · · Score: 1, Insightful

      Definitely use a CSV or tab-separated file. A NoSQL database is wayyyy overkill. Even a SQL database is overkill for what you're trying to do.

    4. Re:Do you need a database? by Anonymous Coward · · Score: 0

      That would be sqlite, and isn't what he wants.
      It might seem easier to just use a text file, although I'm not quite sure why it would seem that way, but it isn't.

    5. Re:Do you need a database? by Anonymous Coward · · Score: 0

      ^ This is probably what I would do if the data was not required for immediate usage, just log the data with timestamp to a text file. It would be the quickest thing to do. You could also put it in a log rotation for archiving.

    6. Re:Do you need a database? by mwvdlee · · Score: 5, Insightful

      Basically the question is; what's the expected volume of records and fields per records?

      A solution for 100 records a week with 4 fields each would be different from 1000 records per second with 30 fields each.
      1000 records/sec with 4 fields would be yet another solution.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    7. Re:Do you need a database? by Richard_at_work · · Score: 3, Interesting

      Theres probably an element of multithreaded access that needs to be taken into consideration here - writing to a single text file may get you into issues if the receiving webserver is multithreaded, meaning the threads will either have to queue for write locks, or write to a different file.

      Database engines don't have this issue, so while it may be overkill, there may be reasons to have one irregardless.

    8. Re:Do you need a database? by FyRE666 · · Score: 5, Insightful

      Please don't do this (use a flat file) to store data for a web app that's likely to be accessed by more than one device at a time. Unless you implement your own file locking mechanism, you'll eventually end up with corrupt entries. Even if you do implement your own locking scheme, it's probably not going to be as efficient as using a DB. It's a 5 minute job to set up a new MySQL DB and associated query to push data in, then you can filter and report on it much more easily. It's something DBs are very good at!

      Unless you have a specific need to scale horizontally, it's generally better to stick with a SQL DB for web apps. I've used MySQL, PostgreSQL and Oracle for this. MySQL is by far the easiest to work with, hence its popularity. I don't actually know of any advantage to using PostgreSQL; it doesn't perform any better, and is (or at least used to be) much less user friendly.

    9. Re:Do you need a database? by DarkOx · · Score: 4, Informative

      I disagree, he is concerned about scaling. The last thing in the world he should do is use a bunch of flat files, unless he really just needs to store the data, but he already said he needs to do reports and totals on it.

      Also he is working in Ruby. The smart thing for him to do IMHO is write his program against ruby/DBI. It isn't the pretty database api, but it supports plenty of different backend options and it does not sound like his program needs especially complex database operations or queries. He can start working with something like SQLite as the database "server", and move up to something else, perhaps Postgress (which can be every bit as fast as the NOSQL solutions unless you are getting highly highly custom) without needing to alter his program.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    10. Re:Do you need a database? by Raumkraut · · Score: 1

      For storing and querying arbitrarily-structured data, which is what the submitter seems to be wanting, a traditional relational SQL database is not necessarily the best way to do it.

      And if anything, MongoDB is easier to start using than any relational database, IME. No need to create databases, schemas, or tables (collections) beforehand - you just install MongoDB, start writing data, and it gets stored.

    11. Re:Do you need a database? by Richard_at_work · · Score: 5, Insightful

      I think many people get stuck in thinking "one single database, thats it, my initial decision condemns me forever", when in-fact theres no shame in having many databases.

      Stick the raw data into one database, choose the database that suits that.

      Transform the data from the raw database into something you can use day to day, thats well structured etc, choose the database for that.

      Transform the data from the day to day schemas into something that more suitable for archiving and long term reporting, again choose the database for that.

      You don't have to have one single database type, every particular one has its strengths, so use them!

    12. Re:Do you need a database? by Lennie · · Score: 1

      There are a whole lot of things PostgreSQL was less user friendly, but they take their time and keep improving it in a consistent way. It has many, many features.

      Personally I really like PostgreSQL. It scales really well.

      And if there is anything missing, there might be things some people want.

      But I think you'll find it will be added in the next 3 releases. 9.4 is now in development:
      - upsert/merge in 9.4
      - basis of logical replication in 9.4 (has been available in out of tree tools for many years), upcoming versions will built on that.

      I'm not sure what people still need if those are done other than multi-master. And this is where logical replication can really help. We don't know if the developers will implement it of course. These things take effort and time.

      --
      New things are always on the horizon
    13. Re:Do you need a database? by nctritech · · Score: 2

      Create a table, get a POST, Insert contents of POST into table...I don't really see how this isn't the best way to do it.

    14. Re:Do you need a database? by Anonymous Coward · · Score: 0

      Pathos is what databases are for. Or do you think that manually locking the cvs file is a scalable solution?

    15. Re:Do you need a database? by jythie · · Score: 2

      *gasp* a sensible solution using readily available mature tools? *faints*

    16. Re:Do you need a database? by jythie · · Score: 1

      No need to develop your own locking system, just use whatever logging functionality the server has.

    17. Re:Do you need a database? by Anonymous Coward · · Score: 2, Informative

      >For storing and querying arbitrarily-structured data, which is what the submitter seems to be wanting
      I dunno. I read TFS and it looks more like he wants rows of tabular data. Were this a STX site, I'd vote to close as too broad since he hasn't actually said anything useful about what he's storing.

      So default answer to "Which NoSQL database should I use?" is always "Don't use NoSQL."

    18. Re:Do you need a database? by DorianGre · · Score: 3, Informative

      We are looking at 99% incoming data, 10-12 fields, 1000-2000 per session per week, X as many users as we can get.

    19. Re:Do you need a database? by boristdog · · Score: 4, Insightful

      As someone who is currently trying to convert a 20 year-old, multi-million-entry flat files DB into a real DB for a major corporation without bringing the corporation to its knees I heartily concur with NOT using flat files if there is ANY chance of this growing beyond a few hundred entries.

      By now hundreds of applications are using the old flat file DB, I have so much re-coding to do that I will probably retire before it is all complete.

    20. Re:Do you need a database? by squiggleslash · · Score: 5, Insightful

      Then perhaps he should use a real database, rather than embrace a fad started by people who don't like databases?

      --
      You are not alone. This is not normal. None of this is normal.
    21. Re:Do you need a database? by DorianGre · · Score: 1

      I quit a gig within the last year where the company was on DB2 (8) and the data was scattered. Their daily processes were pushing 22 hours to complete, and their chosen solution was just to delete historical data, so that they couldn't even tell their customers what happened the previous month. Of course, the same team had been building their PL/I code since the 1980s, so there was no way to get them unstuck without some executive decisiveness, and that wasn't happening. They wanted a data warehouse for business intelligence in their oracle system. I signed a contract for golden gate with implementation and then walked. Really, the place was a mess. WebFocus for reporting, an excel reporting team because they couldn't get data from WebFocus, a java team where the last 2 architects had quit within a year, a stealth jasper reports team that had been working on the same goal for years with no deliverable, etc. Really, the only thing in the entire place that worked at all was the DB2, and on that alone they were making money hand over fist. It was an amazing scene.

    22. Re:Do you need a database? by DorianGre · · Score: 1

      Scaling is the #1 issue we are concerned about. The reports are not complex, but they do need to happen. We are also not stuck on ruby (it is a pig, processor wise), but the application is such that it is easy to scale the front end horizontally.

    23. Re:Do you need a database? by Art3x · · Score: 1

      "Think of SQLite not as a replacement for Oracle but as a replacement for fopen()" --- About

    24. Re:Do you need a database? by oh_my_080980980 · · Score: 1

      NoSQL is a flat file, so it's the same thing. He's not going to be organizing the data in any meaningful way with NoSQL, it's just a dumping ground.

    25. Re:Do you need a database? by oh_my_080980980 · · Score: 1

      Amen brother.

    26. Re:Do you need a database? by oh_my_080980980 · · Score: 1

      Which is why he might as well use a flat file. If he has structure, then an RDMS is what he should use. If he's not going to bother to organize the information, then a flat file would be perfect because all you are after is junk anyways.

    27. Re:Do you need a database? by NatasRevol · · Score: 2

      So, 10-20 thousand data points, per customer, per week?

      Or, at 100 customers, 50-100 million data points per year?

      Get a real database. And some real horsepower.

      --
      There are two types of people in the world: Those who crave closure
    28. Re:Do you need a database? by tubs · · Score: 2

      When I read the post the first thought that came to me was "log files" - you mention date & time, a "number" of fields and "few" fields for reporting. It still sounds like a log file from everything that is said. Indeed, just change from POST to GET and you can use the web server logs :-)

      But, why not build into the design that you may change the "backend" database without having to worry about what is at the backend?

      --

      try to make ends meet, you're a slave to money, then you die

    29. Re:Do you need a database? by K.+S.+Kyosuke · · Score: 1

      I've used MySQL, PostgreSQL and Oracle for this. MySQL is by far the easiest to work with, hence its popularity.

      What about Firebird? Actual transactions - even transactional lazy schema updates -, single-file databases, reasonable tools, almost invisible maintenance, everything virtually idiot-proof. Even LibreOffice wants to switch to embedded Firebird for its native database engine. I can't imagine MySQL being anything other than PITA compared to Firebird.

      --
      Ezekiel 23:20
    30. Re:Do you need a database? by Anonymous Coward · · Score: 2, Informative

      "Irregardless" is not a word, you nigger."

      Merriam-Webster:
      irregardless

      irregardless
      adverb \ir-i-gärd-ls\
      Definition of IRREGARDLESS

      Usage Discussion of IRREGARDLESS
      Irregardless originated in dialectal American speech in the early 20th century. Its fairly widespread use in speech called it to the attention of usage commentators as early as 1927. The most frequently repeated remark about it is that “there is no such word.” There is such a word, however. It is still used primarily in speech, although it can be found from time to time in edited prose. Its reputation has not risen over the years, and it is still a long way from general acceptance. Use regardless instead.

    31. Re:Do you need a database? by funwithBSD · · Score: 1

      Way overkill for the project, way underkill for the CV builder.

      --
      Never answer an anonymous letter. - Yogi Berra
    32. Re:Do you need a database? by funwithBSD · · Score: 4, Funny

      You ain't supposed to use it.

      --
      Never answer an anonymous letter. - Yogi Berra
    33. Re:Do you need a database? by DorianGre · · Score: 1

      Low cost solution for underserved and emerging markets. What happens when we hit 20,000 customers? (22.4 billions data points per year)

    34. Re:Do you need a database? by Anonymous Coward · · Score: 0

      NoSQL is a flat file, so it's the same thing. He's not going to be organizing the data in any meaningful way with NoSQL, it's just a dumping ground.

      ??

      Have you ever tried using NoSQL systems? Which ones? Anyone who's spent more than 30 seconds looking at them realizes that (other than a handful of exceptions) they mostly provide useful ways of organising data. They'd be totally useless to anyone if they didn't.

    35. Re:Do you need a database? by Anonymous Coward · · Score: 0

      How quickly after data arrives do you need to be able to query it? Have you considered SQL with batched updates? Storing data distributed across multiple SQL servers and using map/reduce to query it for horizontal scaling?

    36. Re:Do you need a database? by aoteoroa · · Score: 1

      We are looking at 99% incoming data, 10-12 fields, 1000-2000 per session per week, X as many users as we can get.

      Our company's accounting system uses Mongo on the backend. With about 30 users, and a database that is 7 GB Mongo performs well and sounds like it would fit your application.

      Having said that I agree with other posters who have suggested that if you want to plan for future growth you would be wise to consider a real database from the start. We are planning a migration to PostgreSQL this year.

    37. Re:Do you need a database? by brainboyz · · Score: 1

      Gah, the day I don't have mod points.

    38. Re:Do you need a database? by Archangel+Michael · · Score: 1

      My first Grammar Nazi post

      irregardless

      IS not a word. Stop using it. Thank you.

      --
      Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    39. Re:Do you need a database? by Grishnakh · · Score: 1

      MySQL's normal db engine isn't ACID, so if you care about data integrity, PostgreSQL is a better choice. MySQL's innodb engine is ACID, but doesn't perform as well as Postgres. At least that's my understanding of the situation. I honestly don't see the point at all of using a DB that isn't ACID.

    40. Re:Do you need a database? by flipperdo · · Score: 2

      The problem with choosing the best database (or technology in general) for each corner of each application is that before long you've got yourself a maintenance/support nightmare. Better to stick with what you know, provided it's sufficient for the job at hand. Only when there's a compelling reason should you bring in something new. For example, there aren't many use cases for which PostgreSQL isn't sufficient...

    41. Re:Do you need a database? by jopsen · · Score: 1

      We are looking at 99% incoming data, 10-12 fields, 1000-2000 per session per week, X as many users as we can get.

      Hmm... I would consider azure table storage, if data-points are big or complicated query features is needed, maybe mongodb.

      When you say 99% incoming, I suspect you don't need to query much. Hence, querying by scanning entire partitions of the database might be acceptable.
      In this case storing the data as one file per customer per week might a good solution. If data collection is your primary goal with cost and scalability as primary concerns..

      But unless, you're looking at multi terabyte loads anytime soon, you'll probably do fine with any solution you pick :)
      So consider going with what is easiest to develop with and optimize for scalability later...

    42. Re:Do you need a database? by FyRE666 · · Score: 1

      To be honest, the OPs use case doesn't require ACID compliance. There's no need for a transaction when performing a single insert. It's also debatable to claim PostgreSQL offers better performance, at least without a qualifier. True it's (currently) faster in some areas,and (currently) equal or slower in others. As I say, I've used PG, MySQL and Oracle, although I haven't used PG for a few years now I'll admit. But it was pretty damning that I actually preferred using the Oracle command line client to PG's version! It's piqued my interest in trying it out again though :)

      Most distros either come with a LAMP stack installed now, or an easy way to install one in a couple of minutes, all working out of the box. For the sake of convenience it makes sense. I'm not sure if there's an equivalent turnkey LAPP stack? I'll have to look it up!

    43. Re:Do you need a database? by Zmobie · · Score: 1

      Yea I definitely wouldn't use NoSQL or any kind of flat file data storage for that amount of data. If you're rather averse to having a large complicated DB, SQLite is probably a good starting point especially because if you find you do need to scale up to a more robust platform it converts very easily. If you expect it to scale up quickly (hitting in the 6 figure range or higher for data points) look at your standard mySQL and other related flavors imho. MongoDB I have heard very good things about (don't have any first hand experience unfortunately, I work with mostly MS SQL, Oracle SQL and mySQL since I do enterprise level work).

    44. Re:Do you need a database? by Anonymous Coward · · Score: 0

      supposed to

      Do you mean "sposta"?

    45. Re:Do you need a database? by Zmobie · · Score: 1

      The data access architecture will get overly complicated using any kind of flat storage like that with a web app. Asynchronous access to flat storage becomes very complicated and only has an advantage over even a weakly structured DB if your scale is >1000 data points really.

      I wrote an application that used flat storage back in college and when even as few as 2 or 3 different access points had to be accommodated for data writing I had to modify a lot of logic just to keep data from becoming corrupt. There was a bit of a performance advantage to doing it, which is why I never went with an actual SQL database, but it was only because of the very small data volume.

      SQLite or MongoDB sound like good options for this kind of need, especially because they can be transitioned into much more robust platforms fairly easily. Hell doing some XML structure embedded within the columns could probably help with a lot of the expandibility needed in the structure, but there are just too many headaches in using flat file storage imho.

    46. Re:Do you need a database? by angel'o'sphere · · Score: 1

      Operation systems are able to serialize acces to files just fine.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    47. Re:Do you need a database? by angel'o'sphere · · Score: 1

      Since when is a NoSQL database not a real database?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    48. Re:Do you need a database? by Anonymous Coward · · Score: 0

      So you mean avoid relational databases and stick with a multivalue one?

    49. Re:Do you need a database? by nullchar · · Score: 1

      Once you have done trend reporting, can you just store that aggregate info instead of all the data from the beginning?

      RRDB style (round robin data base) where you store daily stats, weekly, monthly, yearly, etc.

    50. Re:Do you need a database? by Archangel+Michael · · Score: 1

      Dictionary.com says it best ...

      Usage note
      Irregardless is considered nonstandard because of the two negative elements ir- and -less. It was probably formed on the analogy of such words as irrespective, irrelevant, and irreparable. Those who use it, including on occasion educated speakers, may do so from a desire to add emphasis.

      and

      irregardless an erroneous word that, etymologically, means the exact opposite of what it is used to express, attested in non-standard writing from at least 1870s

      --
      Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    51. Re:Do you need a database? by Anonymous Coward · · Score: 0

      We use MySQL and store millions of rows of data per day. Note that we are also on SSD hard drives. Some of our INNODB tables are over 50G in size. Even if you choose a NoSQL solution, if your data is not normalized/de-normalized or indexed properly, it doesn't matter what you use as you will still hit a bottleneck at some point.

    52. Re:Do you need a database? by Anonymous Coward · · Score: 0

      1) There aren't enough requirements stated to know whether any particular implementation is proper (nosql, csv, or sql)
      2) NoSQL is _way_ overhyped.
      3) My prediction is that NoSQL will blow over in a few years. I base this on OODB's which were all the rage in the 90's and no, they aren't the same as OODB's, but they share similar benefits and problems.

    53. Re:Do you need a database? by funwithBSD · · Score: 1

      That would be an "accent" not a use of a word that is recognized as a "word" but not considered common or proper english.

      --
      Never answer an anonymous letter. - Yogi Berra
    54. Re:Do you need a database? by cheesybagel · · Score: 1

      I thought it was a simple key-value data store.

    55. Re:Do you need a database? by cheesybagel · · Score: 1

      IMO NoSQL will continue being used but will become less hip and may go under the radar. The fact is for a lot of applications you do not need a relational database model as it is needlessly complicated. OODBs were the opposite as they were more complex than regular SQL back when they were proposed.

    56. Re:Do you need a database? by Hewligan · · Score: 1

      I thought it was a simple key-value data store.

      Not really. The term NoSQL is used to describe a whole bunch of very different models for storing data, each of which has its own pros and cons.

      --

      "If God created us in his own image, we have more than reciprocated"

    57. Re:Do you need a database? by Anonymous Coward · · Score: 0

      Language as we know it today has come from slang and things you would say "IS not a word".
      If it gets enough use it will become a word. The fact that you understood what he meant already shows that it is on the right path.

    58. Re:Do you need a database? by Anonymous Coward · · Score: 0

      Once again: the English language is defined by the people who use it not a dictionary.

    59. Re:Do you need a database? by denmarkw00t · · Score: 1

      Need I remind you: common table expressions? It's rare that the need for one arises, but boy have I been sore a few times from MySQL lacking them.

    60. Re:Do you need a database? by denmarkw00t · · Score: 1

      I do prefer Postgres, but damn was Oracle fun (mostly) to work with, mainly because listening to the DBAs explain things felt like I was being imparted with some ancient wisdom.

    61. Re:Do you need a database? by DarkOx · · Score: 1

      In that case i say all the more reason to stick with Ruby but use an abstract database API like DBI. You can keep throwing additional front end processors at the problem, good horizontal scaling on the front end, so Ruby's CPU heavy nature won't be an issue, raw compute is still getting cheaper faster than I/O. So I think it makes total sense to keep using tools like Ruby and Python that enable efficient development even at a hit to execution.

      DBI will let you change database later with as little rework as possible, if you keep your database use to just storage, and keep you usage to basic table and constraint feature sets widely supported across all database engines. The RDBMS will take care of plumbing around locking and ACID considerations across multiple front ends for you. As well as allow you to run your reporting jobs or data warehouse ETLs without having to either take your main system offline or tightly integrate them with the front end.

      Back on the scaling front using the more traditional database engines will give you the last 40 years of developed talent pool, and case studies on what works where scaling is concerned. The tools exist to build these things out for almost any use case. The tools exist on the NOSQL side to but they are more tools for building tools, its still immature and very much DIY.

      Ultimately what you have to decide here is where are you going to get the most value for your time. NOSQL *might* offer you some better back end performance down the line, so if you think the data volume is going to get real big real fast give it look. It will certainly mean you will spend more energy working on the plumbing, and force you into dealing with many more unknowns. A RDBMS will provide almost all the plumbing to you; meaning you focus on the front end.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    62. Re:Do you need a database? by Anonymous Coward · · Score: 0

      Give Riak a chance, it provides easy scalability and is quite flexible. The "eventually consistent" model is quite suitable for most situations, and you can guarantee strong consistency etc. with the new features coming out in 2.0 which should be released any time now ("tech preview" is already out).

    63. Re:Do you need a database? by rioki · · Score: 1

      So default answer to "Which NoSQL database should I use?" is always "Don't use NoSQL."

      This! When people come to me and ask what NoSQL database they need, I let them describe the data and the requirements they have. Almost all cases the data is highly structured and need strong query capabilities. In almost all cases it turns out that the problem is not a that SQL DBs will not do the job, but rather a poor understanding of DBs in general and a koowl new hawtness vibe. I am not saying that MongoDB, CouchDB or Redis are not interesting tools, but with all their advantages, they have strong drawbacks.

      Basically, if you look at the available options and do not know which to pick, you did not do your homework. You should research your requirements you have and the different options, including the classical SQL databases. In my experience, a clear option will normally jump at you once you have sufficiently invested time and effort.

    64. Re:Do you need a database? by whitroth · · Score: 1

      Flat files? What was the world's *largest* database, at least as of 6 or 8 years ago, is Daytona, with trillions of records. It's Bellcore, it's flat files, they write quesies in C... and it's the record of every phonecall ever made, back to "Come here, Mr. Watson, I need you".

                        mark

    65. Re:Do you need a database? by thirdender · · Score: 1

      I recently posed the following question in #mysql:

      Wordpress stores posts (pages) in one table, and individual fields of data in another table. As more fields are added, the field table grows geometrically.

      Drupal stores entities (often, but not always, pages) in one table, and each field in separate tables. JOINs are used to query the data.

      So which is more optimal? One large table with all field data, or separate tables and JOINs? The response was that both CMSs use MySQL "wrong". How I understood that was, MySQL is built for large tables of data. Each table should have a defined structure where each field is given it's own column. This is in fact how some CMS systems manage their database (afaik, Expression Engine uses this structure). However, this is less flexible in terms of multi-value fields and, eventually, modifying the table structure will become slow as the amount of data in the system grows.

      Given that programmers have no foreknowledge of the fields that will be created by CMS users, there needs to be a level of flexibility that's not immediately possible with a relational database. Does NoSQL not fill that need?

  2. Use PostgreSQL by Anonymous Coward · · Score: 5, Informative

    If you need to store less than a few hundred million rows just use PostgreSQL.
    It supports JSON and transactions.

    1. Re:Use PostgreSQL by Lennie · · Score: 4, Insightful

      Yes, that is what I would wanted to point out too.

      Also in PostgreSQL 9.4 it has jsonb which is, in certain tests less than a year ago, faster than MongoDB.

      --
      New things are always on the horizon
    2. Re:Use PostgreSQL by Lennie · · Score: 2

      Also if you want a key/value store, there is also http://symas.com/mdb/ from a company of some of the OpenLDAP developers.

      Which really seems to be have the fastest read performance of them all.

      --
      New things are always on the horizon
    3. Re:Use PostgreSQL by Anonymous Coward · · Score: 1

      Object languages like PHP and relational databases have impotence mismatch.

    4. Re:Use PostgreSQL by zauberberg51 · · Score: 1

      impotence => impedence for those who are not too impudent

    5. Re:Use PostgreSQL by fsagx · · Score: 1

      idempotence is important!

    6. Re:Use PostgreSQL by NatasRevol · · Score: 1

      Unfortunately, as the submitter gave details later.

      Each customer is about 500k data points per year.

      Thousands of customers is a few hundred million rows, per year.

      --
      There are two types of people in the world: Those who crave closure
    7. Re:Use PostgreSQL by Anonymous Coward · · Score: 1

      Longtime PG user and huge fan. Especially having been bitten in the ass by mysql about 2001...

      But... be careful with what you recommend.

      It does scale... well. But not as fast and as cheaply as the NoSQL platforms.

      That it comes with transactions is great. UNTIL the moment you actually try to use them.

      You can read as fast as you want over the pgpool/cluster/slony, but zombie-jesus help you if you are trying to run 5,000 tps without transaction batching -- it has staggered every time we've tried at multiple companies.

      And it's key-value store, hstore.... ? Yeah, we had that freak the fuck out and lose all its data twice at not even a hundred million records...

      I love the parts of it that work. But the parts that don't... well... it's a database. They should be clearly identified.

    8. Re:Use PostgreSQL by rtaylor · · Score: 1

      Right. So 5 years from requiring a NoSQL DB, and hardware/software advancements in that period will likely give another 3 years of easy growth with just a basic Pg installation.

      If it was 10m text/blob records per day, that would be a different animal; but it's probably 1/10th of that.

      --
      Rod Taylor
    9. Re:Use PostgreSQL by rycamor · · Score: 1

      A few hundred million rows is no trouble to PostgreSQL, if configured right. And if you go beyond that there are some great ways to deal with the problem:

      1. Partitioning: Make a large table composed of smaller subset tables. This is a great way to deal with what is primarily historical data, since you can partition by month, quarter, or whatever time period makes sense for your application. Then, when it comes time to archive or delete old data, all you have to do is migrate that month's table to the archive location, or just drop it. MUCH less expensive than a DELETE with a WHERE clause.

      2. BigSQL: if you want the power of NoSQL but the querying ability of PostgreSQL, check out this package.

      3. If you are starting to get serious data, hopefully you are making serious money. There are scores of commercial entities that can help you get a lot more performance out of PostgreSQL. Some of them have add-ons for performance, or have just gotten a lot of experience and good ideas on how to deisgn a solution.

      These steps may sound like a pain, but NoSQL brings all sorts of pain with it, also. Limited querying ability, many extra measures required for data integrity, stability issues... bizarre limitations in some areas... Think these things through carefully, and don't fall for anyone's hype.

    10. Re:Use PostgreSQL by angel'o'sphere · · Score: 1

      And why should he migrate his data in 5 or 8 years when his problem is so simple that he can code it right away in a day or two for a NoSQL database?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    11. Re:Use PostgreSQL by Anonymous Coward · · Score: 0

      ++postgresql - it's just a solid machine.

    12. Re:Use PostgreSQL by nullchar · · Score: 1

      Was your 5000 tps using normal insert/update/delete statements or using the COPY statement? (I guess it's a form of batching: meaning, you issue large copy statements instead of many insert statements, if your application can data that way.)

      Also, was your hstore experience with 9.3+ or what version(s) had problems?

    13. Re:Use PostgreSQL by cavebison · · Score: 1

      impotence => impedence for those who are not too impudent

      Impedance actually. :)

  3. CouchBase by Anonymous Coward · · Score: 0

    CouchBase/CouchDB is probably the easiest and most available one out there. It's particularly well suited for app backends too, as both the backend and mobile apps can talk to the same database, in theory eliminating the need for the backend to handle data syncing.

    One caveat though, the last time i used Couch ( which was a few years back now ) I encountered problems with its map/reduce implementation. Specifically, you cant ( or at least couldn't at the time ) do chain map/reduces, which severely limits how you can query your data. With the requirements you listed, you should be fine though.

    1. Re:CouchBase by grcumb · · Score: 2

      CouchBase/CouchDB is probably the easiest and most available one out there. It's particularly well suited for app backends too, as both the backend and mobile apps can talk to the same database, in theory eliminating the need for the backend to handle data syncing.

      Those are good reasons, and it's also true that CouchDB will use a lot less resource overhead than a full-bore RDBMS under load. Depending on the use case, it might also prove decidedly easier to scale.

      But the place where NoSQL really shines is storing amorphous or heterogeneous data. Because you have no constraints about what goes into a given record, you can record more or less name/value pairs at your whim. As with Perl, though, freedom comes at the cost of potential disorder.

      But honestly, with the tiny amount of detail provided, it seems like it's really six of one and half a dozen of the other. If it's just call data being recorded, and the same call data every time, it won't make a huge difference if you use a full-blown RDBMS or a NoSQL database. Either one has its costs (individual PUTs and POSTs in CouchDB for example, can be expensive, whereas queuing and write contention might cause headaches at extreme scales in PostGres or Oracle).

      Both an RDBMS and a NoSQL database will deal with replication fairly well, though my personal inclination is to prefer the simplicity of replication in CouchDB right up until the noise level gets out of hand.

      --
      Crumb's Corollary: Never bring a knife to a bun fight.
  4. Sounds like you need a database by Anonymous Coward · · Score: 5, Insightful

    You might want to consider a SQL database.

    1. Re:Sounds like you need a database by wiredlogic · · Score: 1

      But he needs something that's webscale. Probably will need sharding too.

      --
      I am becoming gerund, destroyer of verbs.
    2. Re:Sounds like you need a database by labradore · · Score: 1

      Box, DropBox, Etsy, Twitter and Facebook and Amazon all rely on MySQL at "webscale".
      Perhaps this will also work for our friend.

    3. Re:Sounds like you need a database by angel'o'sphere · · Score: 1

      ROFL, facebook uses cassandra, twitter a self crafted NoSQL database ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Sounds like you need a database by cmr-denver · · Score: 1

      For those of you who don't get the joke: https://www.youtube.com/playli...

    5. Re:Sounds like you need a database by Anonymous Coward · · Score: 0

      http://www.youtube.com/watch?v=b2F-DItXtZs

  5. Please specify a better scenario by prefec2 · · Score: 2

    Based on your information no one can give you solid advice. It highly depends on the load you expect and on the data model you will use. for a simple twitter, you can use a log file, or any NoSQL technology. If you only have a few transactions and not billions of entries, you could use PostgreSQL or even MySQL. However, PostgreSQL scales better. If you want to make complex interpretations on graph like data you may consider Neo4J as a graph DB.

    1. Re:Please specify a better scenario by OzPeter · · Score: 4, Insightful

      Based on your information no one can give you solid advice.

      IMHO the question is deliberately designed to be vague. iPhones and Android devices, PHP and Ruby On Rails .. that is such a shotgun blast of specifications that are totally unrelated to the DB use on the back end that the entire question smells of click bait to me.

      --
      I am Slashdot. Are you Slashdot as well?
    2. Re:Please specify a better scenario by khchung · · Score: 5, Insightful

      Based on your information no one can give you solid advice.

      IMHO the question is deliberately designed to be vague. iPhones and Android devices, PHP and Ruby On Rails .. that is such a shotgun blast of specifications that are totally unrelated to the DB use on the back end that the entire question smells of click bait to me.

      Either that, or the OP simply have no idea how databases work at all.

      If OP has any idea how database (any database, not just relational) works, he would be talking about data and transaction volumes, access patterns, transactional requirements, data integrity constraints, retention and housekeeping requirements, etc.

      Instead, as you said, he talked about devices platforms, communication protocols, language and runtime environment which are all irrelevant to choosing database. (ok, the last may be a bit relevant depending on which database used)

      --
      Oliver.
    3. Re:Please specify a better scenario by jythie · · Score: 1

      And here I am out of mod points.

      At first reading something seemed off about the question, and I think you summed it up nicely.

      To me it comes across a bit as the OP asking 'I need some vaguely authoritative sounding reasons for a sexy solution, look at my keywords and tell me what is "in" with that community'

    4. Re:Please specify a better scenario by DorianGre · · Score: 1

      Not bait, simply dipping my tow into the NoSQL waters. I have been a developer for almost 20 years now and can spin this up with a SQL database in under an hour. The big thing here is that it be highly scalable (thus the iphone/andriod - you never know how big these will get, or how fast) and we are able to get some kind of structured time based reports out on the back end.

    5. Re:Please specify a better scenario by OzPeter · · Score: 1

      I have been a developer for almost 20 years now and can spin this up with a SQL database in under an hour.

      If you have have been a developer for 20 years then you should know that people will be skeptical of any question that lets them play and win Buzzword Bingo from a single sentence.

      --
      I am Slashdot. Are you Slashdot as well?
    6. Re:Please specify a better scenario by DorianGre · · Score: 1

      Sorry about that. I just wanted you to have an understanding of what our complete stack looks like and what our connectivity issues would be. I am sure that some NoSQL has better support for PHP, and others have better support for Java. Also, just indicating that this is to support mobile apps, and the inherent unknown scaling issues that come from that.

    7. Re:Please specify a better scenario by oh_my_080980980 · · Score: 1

      Why don't I believe you. If you can spin this up with a SQL database in under an hour, then you have your answer. The fact that you repeat "scalability" and "reporting" leads me to believe you do not understand what databases, in particular SQL databases, can do.

    8. Re:Please specify a better scenario by DorianGre · · Score: 1

      POC is already running. It is heavily write intensive just in testing and, having been on the receiving end of a firehose of data before, we really just wanted to investigate the options. The easy scaling is to just split customers across multiple copies of the database and link them for aggregate queries, but it seems like such a cludge. In the past I have logged everything to flat files and then imported those into the DB every 5 minutes or so, which helps with web layer scaling, but creates a lot of unintended issues managing the flat files. Thus, we are looking at the other options out there.

    9. Re:Please specify a better scenario by Anonymous Coward · · Score: 0

      This is the difference between a software developer and a DBA. I agree with the OP though, most developers of a new app don't know about transaction volumes, access patterns, etc. They want to develop something now and figure that out later when they have actual users.

    10. Re:Please specify a better scenario by nullchar · · Score: 1

      Instead of "sharding" (split customers across multiple copies of the database) you should try a NoSQL solution to handle the flood of writes as the first layer. Then an recurring process can query the data in your NoSQL object store (by timestamp) and aggregate it into an SQL database for reporting. You could archive those processed entries, or wait until they get old, to another object store for your "data warehouse" -- basically just an archive in case you need to do different aggregate reporting in the future (depending on storage size of course).

      I must ask, do you really need to store each full piece of information written by these clients at such a high volume?

      Depending on your use of the data, you could even just store the results in memory for X hours/minutes, and then aggregate-process that and write the results to your SQL DB. A single DB with many application servers would be fine in this condition, with writes every X hours/minutes. (You are probably already flat-file logging the incoming requests; that is an archive if you *really* need to go back.) If you cannot afford memory loss if an app server dies, solutions like EhCache (java) will persist the memory to disk, in case of hardware/software failure.

  6. NoSQL? by aaaaaaargh! · · Score: 5, Insightful

    I would like to start with a NoSQL solution for scaling

    And there it is, the proverbial premature optimization ...

    1. Re:NoSQL? by louaish88 · · Score: 1

      But, but, but NoSQL is Webscale!

    2. Re:NoSQL? by mwvdlee · · Score: 2

      Being able to scale from 1 billion records a day to 10 billion a day does not a premature optimization make.

      The simple fact is that there's not enough information to give any reasonable advise.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    3. Re:NoSQL? by gnoshi · · Score: 4, Funny

      Shards! It has shards!

    4. Re:NoSQL? by Sarten-X · · Score: 5, Insightful

      As an expert (relative to most of Slashdot) in NoSQL databases, with a significant amount of experience in Hadoop and HBase systems, I agree wholeheartedly.

      NoSQL solutions can be ridiculously fast and scale beautifully over billions of rows. Under a billion rows, though, and they're just different from normal databases in various arguably-broken ways. By the time you need a NoSQL database, you'll be successful enough to have a well-organized team to manage the transition to a different backend. For a new project, use a RDBMS, and enjoy the ample documentation and resources available.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    5. Re:NoSQL? by tigersha · · Score: 1

      Thank you. Someone who talks sense around here.

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    6. Re:NoSQL? by VortexCortex · · Score: 3, Funny

      Shards! It has shards!

      Heal The Dark Crystal, Gelfling!

      Only then can the two be made one!

    7. Re:NoSQL? by Anonymous Coward · · Score: 2, Insightful

      As an expert (relative to most of Slashdot) in NoSQL databases, with a significant amount of experience in Hadoop and HBase systems, I agree wholeheartedly.

      NoSQL solutions can be ridiculously fast and scale beautifully over billions of rows. Under a billion rows, though, and they're just different from normal databases in various arguably-broken ways. By the time you need a NoSQL database, you'll be successful enough to have a well-organized team to manage the transition to a different backend. For a new project, use a RDBMS, and enjoy the ample documentation and resources available.

      Agreed. I used a NoSQL database on a project I'm working on at the moment, and stick by that decision even though I don't even have millions of row, but my situation is somewhat different to the OP's: my data model is very difficult to map to SQL (I have hundreds of different entity types, each of which has different field storage requirements, and need to be able to associate between entities of different types according to a variety of rules, meaning that some entity types may have hundreds of different types of entity associated with them; SQL quite simply sucks for this kind of data, but thankfully applications where you end up with this kind of data are few and far between). OP's data sounds like an ideal candidate for storage in a relational database; he has one basic entity type, no need to make any kind of connection between entities, and apparently no complicating factors at all.

    8. Re:NoSQL? by Wootery · · Score: 1
    9. Re:NoSQL? by DorianGre · · Score: 1

      We don't know how big to scale. A few thousand users, a few million?? Apps in the wild are like this sometimes. New to NoSQL and really just wanted a good place to start with a platform that would let us scale. I don't want the Oracle on million dollar hardware problem again.

    10. Re:NoSQL? by DorianGre · · Score: 1

      Thanks. This is how we were going, but as we have a blank canvas at the moment, this was a why not sort of decision to look at NoSQL solutions.

    11. Re:NoSQL? by Anonymous Coward · · Score: 0

      Well, if you are looking for why-not solutions, implement everything in http://nimrod-lang.org FTW!

    12. Re:NoSQL? by NatasRevol · · Score: 1

      Reports on big dbs are always the choke point.

      Lots of people, DBAs included, seem to miss this.

      --
      There are two types of people in the world: Those who crave closure
    13. Re:NoSQL? by Sarten-X · · Score: 4, Interesting

      "Why not" is because the cost/benefit analysis is not in NoSQL's favor. NoSQL's downsides are a steeper learning curve (to do it right), fewer support tools, and a more specialized skill set. Its primary benefits don't apply to you. You don't need ridiculously fast writes, you don't need schema flexibility, and you don't need to run complex queries on previously-unknown keys. Rather, you have input rates limited by an external connection, only a few entity types, and you know your query keys ahead of time.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    14. Re:NoSQL? by rjstanford · · Score: 1

      Are you reporting across customers? If not, then sharding totally takes care of your problem. If so, then a combination of sharding and some meaningful aggregation may.

      It really sounds like you've already decided on a solution and are looking for affirmation rather than advice. I've regularly inserted millions of rows into a simple 3-node MySQL cluster (unsharded) every day for years... if you don't like SQL, that's fine, but what you're asking for sure sounds like a problem that a halfway competently set up SQL system can handle without breaking a sweat, and almost all of the problems have been encountered, documented, and solved already.

      --
      You're special forces then? That's great! I just love your olympics!
    15. Re:NoSQL? by DorianGre · · Score: 1

      All correct statements. Thanks.

    16. Re:NoSQL? by Anonymous Coward · · Score: 0

      You have wings?

    17. Re:NoSQL? by avandesande · · Score: 1

      You will also have a hard time hiring developers to work on it, if you ever get to that point.

      --
      love is just extroverted narcissism
    18. Re:NoSQL? by Sarten-X · · Score: 1

      In my experience, it's not much harder than finding developers with any other specialized skill set.

      Hadoop and HBase are exposed as libraries with well-documented APIs. If you're trying to hire developers who can't read an API doc, you have bigger problems than database choice. If you want to hire someone who already knows what they're doing, then your prospects are similar to finding a dev who already knows a particular 3D engine, or kernel development, et cetera.

      If you're hiring competent documentation-reading developers anyway, and are willing to pay the expenses while they learn the idioms of this particular library, then there's no additional difficulty in the hiring process.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    19. Re:NoSQL? by avandesande · · Score: 1

      If they use a RDBMS, they don't need to hire someone with a specialized skill set, at least for that part of the application.

      --
      love is just extroverted narcissism
    20. Re:NoSQL? by aicrules · · Score: 1

      Of course not, you're a boy!

    21. Re:NoSQL? by Sarten-X · · Score: 1

      I take it you've never seen a DBA in a code review.

      The ability to write well-formed SQL queries that are efficient and correct is also a specialized skill. It may not be one you recognize, presumably because you've had it for so long, but the majority of applicants I've encountered are not suited for doing production SQL work. They might be able to write a simple query, but finding someone who understands keys, indexes, views, and all of the other efficiency-improving features is a rarity indeed.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    22. Re:NoSQL? by Anonymous Coward · · Score: 0

      The main facility offered by these new fancy NoSQL databases is low-maintenance availability. Have you ever tried to configure MySQL or PostgreSQL clustering? You have to think in advance how many instances you are going to have, choose between master-slave or multimaster and various inbetweens, choose hot or warm standby etc etc and figure out how to test it works, which depending on your choices may not be simple to do.

      On the other hand, you have e.g. Cassandra. Adding a new instance is pretty much no work at all, just one or two lines of configuration changes and that's it. Testing is simply closing down an instance (any instance, one or more) and checking to see that the client still connects and can see data.

      It is hard to beat such conveniences with traditional SQL DBs.

    23. Re:NoSQL? by rjstanford · · Score: 1

      The ability to write well-formed SQL queries that are efficient and correct is also a specialized skill. It may not be one you recognize, presumably because you've had it for so long, but the majority of applicants I've encountered are not suited for doing production SQL work. They might be able to write a simple query, but finding someone who understands keys, indexes, views, and all of the other efficiency-improving features is a rarity indeed.

      And yet SQL has been around for decades and has a massively greater installed-base than even the most popular NoSQL tools. How many people out there do you think really understand MongoDB's nuances at scale (remember, if we're not talking billions of rows then it really doesn't matter what tool is being used, including bog-standard MySQL).

      All of your arguments - and they are real, and well-reasoned - apply to the NoSQL space far more than the SQL space.

      --
      You're special forces then? That's great! I just love your olympics!
    24. Re:NoSQL? by swillden · · Score: 1

      Shards! It has shards!

      :-)

      It's worth pointing out that you can also shard SQL databases. Sharded MySQL is used pretty widely at Google, for example, especially for data that needs transactional consistency guarantees, not just eventual consistency, and/or lower long-tail latency. I've seen sharded MySQL scale to petabytes just fine.

      The downsides, of course, are that you have to pick a value to shard on, you have to implement the sharding, and if you need to do a lot of cross-shard joins in interactive time frames, you're sunk. For batch processes, there's mapreduce, or for interactive queries that can stand update latency you can pump the data into a different database structured for that purpose.

      In the short term, though, just use a regular, unsharded, SQL database. By the time you grow enough to need to shard it, or to move to a NoSQL solution, you'll be able to afford a team of engineers to build and migrate to the new solution.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    25. Re:NoSQL? by Bogtha · · Score: 1

      Being able to scale from 1 billion records a day to 10 billion a day does not a premature optimization make.

      It does when you are currently averaging zero records per day.

      --
      Bogtha Bogtha Bogtha
  7. 2 comments, both useless by Anonymous Coward · · Score: 1

    To answer the question "Which NoSQL Database For New Project?" there are 2 comments:
      - A relational database
      - A plain text file

    The user gave an argument: "I would like to start with a NoSQL solution for scaling"

    NoSQL is a good solution for horizontal scaling, CSV and SQL DB are not.

    I would recommend MongoDB if the transactional aspect is not important for your purpose: easy to learn, easy to use.

    1. Re:2 comments, both useless by Anonymous Coward · · Score: 2, Informative

      NoSQL is a good solution for horizontal scaling, CSV and SQL DB are not.

      I'd like to dispute this. Based on the OP's description of his application, two things come to mind:


      •    
      • His application is mostly-write-only. He probably does not need instant query ability, but may need to be able to handle a very large number of inserts per second (assuming he's justified in his assertion that he needs scalability). For this kind of application, logging your incoming data to a plain text file (or sequentially-appended binary data file, or any other write-only plain file approach) can be a significant performance improvement. This files can then periodically (e.g. every hour, every minute, whatever time frame suits) be pulled of local storage, merged, and inserted into a central database as a batch from which read queries are performed. Single batched updates are much more efficient than large numbers of small updates.
      •    

      • His queries are easily parallelized. He needs to perform only two operations: selecting data based on simple criteria, simple numerical summarization. Both of these are trivially scaled horizontally by using systems with local SQL databases and a simple service running on the machines as nodes in a map/reduce architecture.

      Blanket statements like yours above can't really be made without reference to the intended application, as some applications scale much more easily than others, and OP's sounds like it's one of the easy kind.

    2. Re:2 comments, both useless by Anonymous Coward · · Score: 0

      So, as long as you can throw a bunch of hardware at the problem, it's trivial.

  8. MongoDB by timkofu · · Score: 2

    These guys are committed, meaning mongo has a future. 2.6 that came out the other day has some nice new features and many bug fixes.

    1. Re:MongoDB by Anonymous Coward · · Score: 1

      Plus it's web scale. You just plug it in and it scales right up.

    2. Re:MongoDB by DorianGre · · Score: 1

      Thanks. We are not trying to make this deliberately difficult. If we go with NoSQL, it seems MongoDB is the one people are leaning towards.

    3. Re:MongoDB by CauseBy · · Score: 1

      I took a little online Mongo class and I actually liked it a lot. I thought it was pretty well designed and easy to use, although totally different than all the traditional databases I'd ever used. There's a lot of nerd-hate out there for Mongo and I don't really get it, I think those people can't even stretch the boundaries of their mental jail cells a little bit.

      If you use Mongo, use JSON everywhere in your app. That will make your life easier.

    4. Re:MongoDB by Anonymous Coward · · Score: 0

      yep - turn it on and it scales right up! http://www.mongodb-is-web-scale.com/

  9. light by invictusvoyd · · Score: 3, Insightful

    SQLite is a relational database management system contained in a C programming library. In contrast to other database management systems, SQLite is not a separate process that is accessed from the client application, but an integral part of it.

  10. Database Scaleability. by tonywestonuk · · Score: 5, Insightful

    "I'll need to be able to pull by date or by a number of key fields"

    So, in other words, you have already decided on key fields. If you use a database, this has things call index's, that can search billions of rows for a key field in a fraction of a second.
    If you don't use something with INDEX's then you can't do this.

    Where has this idea that Databases can't scale come from? - The world runs on Database for heaven sake. Do you think when you take money out of an ATM, its going to MONGODB? - And yet there are millions of ATM's and you can take money out of your VISA account in almost all of them anywhere in the world. That is called scale.

    1. Re:Database Scaleability. by cyber-vandal · · Score: 4, Insightful

      Where has this idea that Databases can't scale come from?

      Salesmen

    2. Re:Database Scaleability. by Anonymous Coward · · Score: 1

      Also known as "Scalesmen"

    3. Re:Database Scaleability. by korgitser · · Score: 1

      b.bb...but mongodb is webscale!

      --
      FCKGW 09F9 42
    4. Re:Database Scaleability. by Anonymous Coward · · Score: 0

      "I'll need to be able to pull by date or by a number of key fields"

      So, in other words, you have already decided on key fields. If you use a database, this has things call index's, that can search billions of rows for a key field in a fraction of a second.
      If you don't use something with INDEX's then you can't do this.

      Where has this idea that Databases can't scale come from? - The world runs on Database for heaven sake. Do you think when you take money out of an ATM, its going to MONGODB? - And yet there are millions of ATM's and you can take money out of your VISA account in almost all of them anywhere in the world. That is called scale.

      What if you have to use PostgreSQL? I've seen no evidence that it can scale or run multi-master.

    5. Re:Database Scaleability. by Anonymous Coward · · Score: 0
    6. Re:Database Scaleability. by Raumkraut · · Score: 3, Informative

      MongoDB has indexes.
      MongoDB also lets you store and query arbitrary data, in addition to any "key fields", without having to pre-define all the possible fields. Which it seems is what the submitter asked for.

      Where has this idea that "NoSQL" means "not a database" come from?

    7. Re:Database Scaleability. by janoc · · Score: 5, Insightful

      Databases don't scale for people who don't understand SQL, don't understand data normalization, indexing and want to use them as flat files. Unfortunately, a way too common anti-pattern :(

      The second group are too-cool-to-learn kids using the latest development tool fad on the market to build yet another Facebook/Twitter/Instagram/whatever clone ...

    8. Re:Database Scaleability. by TheDarkMaster · · Score: 1

      We have a winner here. When I saw the number of buzzwords in the article, I already thought the worst too.

      --
      Religion: The greatest weapon of mass destruction of all time
    9. Re:Database Scaleability. by wvmarle · · Score: 1

      I've mis-used databases just as you describe. And continue to do so. That's fine, I'm an amateur, and I never needed to handle databases larger than a couple thousand rows. I could probably get away with tens or hundreds of thousands of rows before running into problems.

      Now if I were to develop something that needed a billion rows - that's a different story, and I do know my current approach won't work and I'd have to learn a lot about databases to pull it off. And submitter is obviously trying to do that (or at least something that needs a few rows and hoping it grows larger than Facebook and Google combined, so he needs scalability). Also I believe submitter doesn't really know what he's talking about.

      If you really need to be able to handle that kind of data sets, and have even just a subset of the skills needed, you don't come to Slashdot for advice. You'd know who to ask - a friend or colleague who does just that.

      So submitter may have big dreams, he almost certainly doesn't have the skills to have even a fighting chance of making it. And with that I don't need the actual database management skills, but the skills of knowing where your weaknesses are, knowing who can fill those gaps, and asking those people (maybe by having a discussion over a beer, or by hiring them outright).

    10. Re:Database Scaleability. by Anonymous Coward · · Score: 1

      The ATM using MONGODB would explain why I never have any money in my account.

    11. Re:Database Scaleability. by CadentOrange · · Score: 1

      What if you have to use PostgreSQL? I've seen no evidence that it can scale or run multi-master.

      Are you high? Instagram (200 million users) uses PostgreSQL. PostgreSQL is web scale :)

    12. Re:Database Scaleability. by DorianGre · · Score: 1

      From what I have read, the indexing tools in MongoDB are superior to CouchBase. Can someone confirm this?

    13. Re:Database Scaleability. by Anonymous Coward · · Score: 0

      There are at least 4 categories of things that people call NoSQL. Document-oriented DBs are one of them. Going by wikipedia's description of a DODB, ext2 is one. It probably has to do with the fact that MongoDB is a fancy, persistent hashmap (or unordered_map if you'd like).

    14. Re:Database Scaleability. by DorianGre · · Score: 1

      Experience. I've personally been in the "we doing 4 billion transactions a day and replicating that over multiple data centers" thing. Don't want to do that again. Its crazy expensive in hardware and effort.

    15. Re:Database Scaleability. by DorianGre · · Score: 1

      Unfortunately, I am stuck in backwater USA, and my contacts from my silicon valley days have mostly cashed out or I've lost touch. We expect a few hundred thousand rows of data a day, but you never know. I've hit the hard limits on databases before, so want to avoid that up front if possible.

    16. Re:Database Scaleability. by mbourgon · · Score: 2

      And Developers. Anything to keep those damn DBAs away.

      (Yes, I'm a DBA)

      --
      "Sometimes a woman is a kind of religion, she can save your soul & set you free from all your sins" - Bad Examples
    17. Re:Database Scaleability. by DorianGre · · Score: 1

      Sorry, didn't mean to make buzzword soup. Here is what we have: Mobile apps -> PHP rest apis -> some datastore (Currently MySQL) -> PHP web for reporting. We are dealing with tracking physical products. We will keep the MySQL for user management and primary tables of product information (UPC, description, weight, etc), but storing information on everything else is where we are not sure.

    18. Re:Database Scaleability. by mlk · · Score: 1

      Is that required for you current project? Will the disadvantages of NoSQL based databases hit you (for example are cross-document consistency or cross-document transactions important)?

      Give what you have posted in the OP I don't see a good reason to select No SQL over relational over object over flat files and without more information all you are going to get is a list of personal preferences. So lets jump in with my personal preference... look into your data you plan to store and what queries you want to do on it. Then match that against the general styles (relational, object, KV, tabular, graph). Once you have done that I'd likely just look at the leaders for that style of data store and spike it out.

      --
      Wow, I should not post when knackered.
    19. Re:Database Scaleability. by rthille · · Score: 1

      Where has this idea that Databases can't scale come from?

      the CAP theorem

      Consistency, Availability, Partition-Resistance. Choose any two.

      --
      Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
    20. Re:Database Scaleability. by TheDarkMaster · · Score: 1

      Okay, I assume you are the original author of the topic. Looking the whole situation, I guess your primary problem is the ability to handle a large number of simultaneous users, correct? Databases like Postgres support this type of work, only if you had an operation of the size of Facebook you would begin to have problems. However, remember that the database is only part of the chain. You will need the application itself also has high performance (Ruby and performance are mutually exclusive). As an example, I have an application wherever although the client-server communication uses HTTP, the server is a highly specialized application that only pretends to be a "web server", receiving commands over HTTP but executing them in a specialized way and communicating directly with the database without intermediate frameworks. A bit strange, but works very well.

      --
      Religion: The greatest weapon of mass destruction of all time
    21. Re:Database Scaleability. by nevermindme · · Score: 1

      If you have hit limits before (MySQL?) use a very mature platform that operates effectively when the DB does get larger than available memory for indexes or dataset such as DB2, Oracle and MSSQL and strongly type inputs and normalize your data set in the first place and use a language native data connector APIs, pointers and record locking. Just about anything important to the application needs to go through a Stored Procedure because database should not trust anything directly from the application to be suitable to a query at the data layer. As always set yourself up on a platform with service accounts that are RO and RW. In other words don't set yourself up outside the big data mainstream.

      If your product is a unexpected hit you will have what seams like zero moments to fix the database and program design without business impact. And start with the DB and the Application/Web layer being VMs load balancing to begin with and the database in some sort of cluster.. Have the entire Apps platform packaged to go to a outsouced data center or Amazon on day one so that a 1000x user growth per day you have a plan. This is sort of Web Application Architecture and Design 101 as any code monkey can put data into NOSQL and hope to get it back through just the right query.

    22. Re:Database Scaleability. by Bacon+Bits · · Score: 4, Insightful

      God forbid someone make them think about their data structures and how the end user might need to query them with their own reports.

      --
      The road to tyranny has always been paved with claims of necessity.
    23. Re:Database Scaleability. by Kjella · · Score: 2

      Where has this idea that Databases can't scale come from? - The world runs on Database for heaven sake. Do you think when you take money out of an ATM, its going to MONGODB? - And yet there are millions of ATM's and you can take money out of your VISA account in almost all of them anywhere in the world. That is called scale.

      Of course you can with lots of money in hardware and software and top notch database administrators, architects and query designers but it's a lot of hard work and expensive. The sales pitch for NoSQL is that it's built for horizontal scale-out by design, just throw more servers at it - mainstream servers, not the extremely expensive high-end servers and it'll scale almost indefinitely without having to rework everything. There's a lot of people in the "when we go viral we must be ready for it" category, with highly variable degrees of realism. And social media has been the big buzzword lately where social media feeds of various forms are almost ideal for NoSQL, nobody cares if the feed is perfectly consistent or updated with the last two seconds of posts from your friends. To the tech-unsavvy, "They did that why can't we?"

      --
      Live today, because you never know what tomorrow brings
    24. Re:Database Scaleability. by Anonymous Coward · · Score: 0

      but are they "web-scalesmen"?

    25. Re:Database Scaleability. by danomac · · Score: 1

      Where has this idea that Databases can't scale come from?

      MS Access.

  11. The Slashdot logo says... by LookIntoTheFuture · · Score: 0

    Become a fan of Slashdot on Facebook

    --
    Brave Sir Robin ran away. ("No!") Bravely ran away away. ("I didn't!")
  12. MariaDB by Anonymous Coward · · Score: 2, Insightful

    I would consider using the latest release of MariaDB.

    You can use it as a standard MySQL server, but they also have Cassandra NoSQL as an engine for it now (since the release of 10)... So you would be easily able to play with things on different database types and see what suits your situation better.

  13. MongoDB obviously... by kryps · · Score: 1

    ... since it is web scale. ;-)

    https://www.youtube.com/watch?v=b2F-DItXtZs

    1. Re:MongoDB obviously... by Anonymous Coward · · Score: 0

      hahahahahaha webscale, hahahahaha

    2. Re:MongoDB obviously... by jythie · · Score: 1

      I was hoping someone would post that ^_^ always good for a laugh.

  14. Elastic Search by Anonymous Coward · · Score: 1

    If you're going to need search at some point you should just opt for Elastic Search from the start. Yeah, it's a search engine, but it's also a rather good key/value store.

    1. Re:Elastic Search by beerbear · · Score: 1

      I second this. Easy to set up, easy to use.

      --
      Hold my beer and watch this!
  15. Didn't know DICE owned stackoverflow too! by Anonymous Coward · · Score: 0

    Must be nice to be dice!

  16. Don't ask this on Slashdot by dr.Flake · · Score: 0

    If you're question is relatively simple, aimed at the general slashdot crowd, than the answer is that you need to hire someone who knows database implementations

    If the question is complex enough for an experienced database implementer, he/she would know where to post that question. And it is not here.

    As you can read above. The answer is simple. The problem non-existing for experienced implementers.

    --
    Why are other peoples sig's always more witty ???
  17. Short Intro by emblemparade · · Score: 5, Informative

    It's a mistake to think that "NoSQL" is a silver bullet for scalability. You can scale just fine using MySQL (FlockDB) or Postresgl if you know what you're doing. On the other, if you don't know what you're doing, NoSQL may create problems where you didn't have them.

    An important advantage of NoSQL (which has its costs) is that it's schema-free. This can allow for more rapid iteration in your development cycle. It pays off to plan document structures carefully, but if you need to make changes at some point (or just want to experiment), you can handle it at the code level. You can also support older "schemas" if you plan accordingly: for example, adding a version tag or something similar that can tell your code how to handle it. So, even ignoring the dubious potential of better scalability, NoSQL can still be beneficial for your project.

    More so than SQL, NoSQL database are designed for different kinds of applications, and have different strengths:

    MongoDB is a really good backend engine that gives programmers lot of control over performance and its costs: if you need faster writes, you can allow for eventual integrity, or if you need faster reads, you can allow for data not being the absolute freshest. For many massive multiuser applications, not having immediately up-to-date data is a reasonable compromise. It also offers an excellent set of atomic operations, which from my experience compensate well for the lack of transactions. Furthermore, MongoDB is by far the most feature-rich of these, supporting aggregate queries and map-reduce, which again can make up for the lack of joins. It also offers good sharding tools, so if you do need to scale, you can. Again, I'll emphasize that you need a good understanding of how MongoDB works in order to properly scale. For example, map-reduce locks the database, so you don't want to rely on it too much. The bottom line is that MongoDB can offer similar features to SQL databases (though they work very differently), so it's good for first-timers.

    Couchbase is very good at dispersed synchronization. For example, if parts of your database live in your clients (mobile applications come to mind), it does a terrific job at resynching itself and handling divergences. This is also "scalable," but in a quite different meaning of the term than in MongoDB.

    I would also take a look at OrientDB: it's not quite as feature rich as MongoDB (and has no atomic operations), but it can work in schema-mode, and generally offers a great set of tools that can make it easy to migrate from SQL. It's query language, for example, looks a lot like SQL.

    The above are all "document-oriented" databases, where you data is not opaque: the database actually does understand how your data is structured, and can allow for deep indexing and updating of your documents. Cassandra and REDIS (and Tokyo Cabinet, and BerkeleyDB) are key-value stores: much simpler databases offering fewer querying features: your data is simply a blob as far the engine is concerned. I would be less inclined to recommend them unless your use case is very specific. Where appropriate, of course simpler is better. With these kinds of databases, there are actually very few ways in which you can create an obstacle for scalability: simply because they don't do very much, from a programming perspective.

    There are also in-between databases that are sometimes called "column-oriented": Google and Amazon's hosted big data services are both of this type. Your data is structured, but the structure is flat. Generally, I would prefer full-blown "document-oriented" databases, such as MongoDB and OrientDB. However, if you're using a hosted service, you might not have a choice.

    It's also entirely possible to mix different kinds of databases. For example, use MongoDB for your complex data and use REDIS for a simple data store. I've even seen sophisticated deployments that very smartly archive data from one DB to another, and migrate it back again when necessary.

    1. Re:Short Intro by St.Creed · · Score: 1

      Any relational database can also do "schemaless" models, by using the EAV (anti-)pattern. Mainly this conveys a lack of understanding of your data and a lack of planning and design in your datamodel, but hey, it happens. The fun thing is that you still get all those nice database features like parallel processing, concurrency, SQL, ACID transactions if you want them, security and maintenance tooling, etc.

      And if you use a modern database like SQL 2014 or Oracle's latest, you will get column-based compression (okay, it still sucks in SQL Server 2014, but it's a start), so the whole issue with extending sparse schema's is moot. If you use the 6th normal form it's not an issue anyway since that implements column-based compression by modeling it.

      What you say is of course correct. It's just that for people who have a nice toolbox with all kinds of data models, relational databases go a lot further than most people think.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    2. Re:Short Intro by mrpoundsign7072 · · Score: 3, Insightful

      And any text file can be transnational if you write your code right. We can keep going down this road about how you don't /need/ X technology, but nobody wins. It's really OK to see the good in different technologies.

    3. Re:Short Intro by St.Creed · · Score: 1

      I agree that that road isn't productive (otherwise we'd still write machine code since we can do everything in machine code), but the hint of "it's going to be on internet so I can't use and RDBMS" in the original question is silly, and that's what I react to.

      Given 3 trillion users your options are pretty much limited to horizontal scaling, no SQL etc. but most people never get that far with their applications and in that case, storing the data in a noSQL database and then getting actionable information out of it (which is the hardest part IMO) is a lot of effort spent for something much cheaper and easier done with an RDBMS.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    4. Re:Short Intro by Anonymous Coward · · Score: 0

      I wouldn't generally toss Columnar databases aside. A product like HP's Vertica is extremely good at dealing with huge chunks of data. Not only in terms of reading and writing, but also processing. It has a native R processor built in that will automatically split up the code into logical parts that it distributes along it's cluster. In terms of complex data analytics that's huge performance gain. I think if anything people need to ask themselves what features their app will actually use before selecting the tool.

    5. Re:Short Intro by emblemparade · · Score: 1

      I agree, entirely. Even more interesting are the recent "noSQL" features added to Postgres. The fervor of the "noSQL" is too often "anti-SQL," in a ridiculously technically uninformed way.

    6. Re:Short Intro by St.Creed · · Score: 1

      Oh, didn't know about Postgres's new features. Well, that gives me something do to tonight :) Thanks.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
  18. JUST USE POSTGRES by Anonymous Coward · · Score: 0

    Seriously - JUST USE POSTGRES - there is virtually nothing that it can't do.

    1. Re:JUST USE POSTGRES by Tanaka · · Score: 1

      I like Postgres, and I like MongoDB too. Both have their strengths. Best tool for the job I say.

      The great thing about MongoDB is you can install two or three servers in different datacenters, and have redundancy out of the box. It's really simple. And you can scale horizontally if you need to without any downtime.

      The last time I looked at Postgres, to do the same, you had to use third party solutions, and the client side drivers didn't support it. Is it any better now?

    2. Re:JUST USE POSTGRES by VortexCortex · · Score: 1

      Seriously - JUST USE POSTGRES - there is virtually nothing that it can't do.

      Indeed. With its native JSON type and HStore Key/Value store it has NoSQL features. Given Postgresql's ability to cluster, pool, and replicate it also scales quite well. IMO, it doesn't make sense to abandon all relational DB features in a NoSQL only solution (especially right off the bat) when you can have both. Postresql may just be the droids you are looking for.

    3. Re:JUST USE POSTGRES by VortexCortex · · Score: 1

      The great thing about MongoDB is you can install two or three servers in different datacenters, and have redundancy out of the box. It's really simple. And you can scale horizontally if you need to without any downtime.

      I've never had to use 3rd party solutions to implement horizontal scaling, replication, pooling, clustering, etc. with Postgresql. I have often had to demand changes of 3rd party vendor-lockin-ware, or add a kludge myself to fit a business's needs. RTFM application used to be far more common, but seems to have fallen out of fashion of late as more programmers and DBAs are increasingly discovered not to be hackers. Did you know Postgresql supports NoSQL features via HStore and JSON?

      Much experience has shown that it's better to look well before leaping rather than hop on the buzz-wagon then try adding wings on the fly. The problem with one-size-fits-all methodology is that when one designs a system with everyone in mind, one has actually designed it for no one at all. What happens when that "simple" redundancy solution meets a more complex problem space is that you're left with folks who didn't understand the issue in the first place trying to fix the problems they've caused.

    4. Re:JUST USE POSTGRES by Assmasher · · Score: 1

      I would have to agree about PostgreSQL, it is surprisingly flexible and powerful. I've used it for small business systems and recently on a 'big data' (oh, that overused buzzword...) project (millions of devices reporting dozens of times per day) and it has been fantastic.

      Wish I'd gotten on the bandwagon 10 years ago.

      --
      Loading...
    5. Re:JUST USE POSTGRES by WuphonsReach · · Score: 1

      Wish I'd gotten on the bandwagon 10 years ago.

      Mmm, 10 years ago you would have been using 7.3 or 7.4. Which was not all that fast unless heavily tuned. It wasn't until the 8.x series in 2006-2008 (roughly) where they started focusing a bit more on performance. These days it is quite powerful and a definite competitor to the high-end paid offerings.

      There was also the issue that 7.x was a PITA to run on top of a Microsoft Windows system. The 8.x and 9.x series run natively and integrate far better with the Windows O/S, which makes it easier for desktop developers to get their feet wet.

      (We ran PostgreSQL on a Windows server for the first year or two once 8.0 came out, then migrated over to running it on Linux.)

      --
      Wolde you bothe eate your cake, and have your cake?
  19. Just Use SQL by Anonymous Coward · · Score: 5, Insightful

    I just felt I have to comment on this. So many developers start with the phrase "I need NoSQL so I can scale" and almost all of them are wrong. The chances are your project will never ever ever scale to the kind of size where the NoSQL design decision will win. Its far more likely that NoSQL design choice will cause far more problems (performance etc), than the theoretical scaling issues.

    Take for example two systems I've been involved with for managing WiFi access to large scale networks (100,000+ concurrent users, 1000's of APs), one uses MongoDB the other based on PostgresSql. The MongoDB based solution has very real performance problems, its reporting takes a very long time to run taking very large amounts of system ram (24G in some cases) and that performance is only degrading as the system grows, there are also many other performance issue. These issues are not just mongo issues but simply that NoSQL is not well suited to the task. The system has been rewritten using an SQL backend and now works much better but importantly it's scaling but better. Growth in the system is no-longer degrading performance and the point where we need hardware upgrades or extra servers etc are now much more predictable so we can predict cost base growth in relation to user growth.

    NoSQL does not guarantee scaling, in many cases it scales worse than an SQL based solution. Workout what your scaling problems will be for your proposed application and workout when they will become a problem and will you ever reach that scale. Being on a bandwagon can be fun, but you would be in a better place if you really think through any potential scaling issues. NoSQL might be the right choice but in many places I've seen it in use it was the wrong choice, and it was chosen base on one developers faith that NoSQL scales better rather than think through the scaling issues.

  20. Avoid NoSQL for new projects. by Anonymous Coward · · Score: 0

    Fundamentally the single-key document store databases are built on the compare-and-swap primitive. This means that the data structure being implemented, i.e. the one that must support the application's write cases, must be designed up front and won't be amenable to incremental development. Not to mention that designing such a data structure is far more difficult than laying down some CREATE TABLE statements and figuring out what it is exactly that the application prototype is supposed to do.

    But also avoid MySQL. It's not good at all. SQLite will also lead you astray.

    1. Re:Avoid NoSQL for new projects. by Anonymous Coward · · Score: 0

      This means that the data structure being implemented, i.e. the one that must support the application's write cases, must be designed up front and won't be amenable to incremental development. Not to mention that designing such a data structure is far more difficult than laying down some CREATE TABLE statements and figuring out what it is exactly that the application prototype is supposed to do.

      How exactly is "laying down some CREATE TABLE statements" not having to have your data structures "designed up front"?

    2. Re:Avoid NoSQL for new projects. by Anonymous Coward · · Score: 0

      Good question. The difference is that SQL DDL doesn't specify the update semantics of foreign keys as CAS operations, where a working prototype NoSQL design would. It comes down to the fundamental operation, the one that's the reason why lock-free and wait-free algorithms are so tricky.

  21. Why not use Sqlite? by Anonymous Coward · · Score: 0

    It's lightweight, fast and supports reasonably complicated queries. Not sure why you need a NoSQL database when you clearly need to Query by key fields.

  22. PostresSQL or Riak by imbaczek · · Score: 1

    Postgres might carry you further than you imagine with hstore and json extensions. I'd also try Riak if you really want NoSQL.

  23. Are you sure you require a NoSQL solution? by Anonymous Coward · · Score: 0

    If you're going to be doing analysis and totalling, then a traditional SQL database may be the better option.

  24. NoSQL by Anonymous Coward · · Score: 0

    Which is why the question is just technological masterbation

  25. hyperdex by fredan · · Score: 1

    take a look at hyperdex if your are looking for a NoSQL DB: http://www.hyperdex.org/

    1. Re:hyperdex by DorianGre · · Score: 1

      Thanks. That is a new one to me.

  26. Big mistake by msobkow · · Score: 5, Insightful

    Telecommunications data is eminently suitable to schema table storage in any relational database, which with a little work, will let you index by the keys you intend to query by.

    NoSQL solutions are better for unstructured data that doesn't come in predictable formats or value sets.

    You need to take a step back and look at the problem before you decide on a solution. Don't be one of those idiots who tries to use a hammer to drive a screw.

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:Big mistake by Anonymous Coward · · Score: 0

      Excuse me; we have been driving screws with an impact device, (hammer), at the rate of a million per day. The proper thread geometry/material with the correct impulse twists the screw right in. Been doing it for a decade. It will set the screw 5x faster than using a torque.

  27. SQLite by jchevali · · Score: 1

    SQLite

  28. Re:S3 better than files on disk by xelah · · Score: 2

    Now scale that. Or just lock it properly.

    If you want simple, scalable and low sysadmin overhead and all you need are key -> value lookups then Amazon's S3 can be an excellent choice. You don't need to manage it, you don't need to work out how to add servers and its well proven at extremely large scales.

    However, like a lot of other posters, I'm very sceptical that NoSQL is the place to start. SQL databases can do a LOT for you, are very robust and can scale very considerably. As your requirements grow you might find yourself wanting things like indexes, transactions, referential integrity, the ability to manually inspect and edit data using SQL and the ability to store and access more complex structures. You're likely to give yourself a lot of pain if you go straight for NoSQL, and even if you DO need to scale later combining existing SQL and new NoSQL data stores can be a useful way to go.

  29. Which luxury yacht after my new project? by BlackPignouf · · Score: 5, Funny

    "I'm working on a new independent project. It will soon become the new Facebook, and I'll be billionaire next quarter. The only problem is that I don't know which luxury yacht to buy with all this money. I've been looking at Lady Moura, Christina O, Pelorus, Venus and others. What do you recommend? What problems have you run into with the ones you've tried?"

    1. Re:Which luxury yacht after my new project? by coofercat · · Score: 5, Funny

      Pff! All that soon-to-have money and yet no imagination, huh? Buy an old diesel Navy submarine and have it refitted. Maybe cut some windows into the hull - that'll mean you can only go down to maybe 50 metres instead of 350, but that's still plenty, and if you get lost you can just look out of the windows to see where you are without having to worry about using sonar.

      I'd imagine surfacing your submarine in Monaco's marina will turn far more heads than your ridiculous yacht moored a mile offshore ;-) (besides, a submarine is phallically shaped, so works better in metaphorical dick measuring competitions)

      Oh, and be sure to use Postgres or MySQL for your on-board systems - it'll scale plenty well for a long time before you need to go all 'web scale' with a NoSQL DB.

  30. Redis by Anonymous Coward · · Score: 0

    Look at a disk-backed Redis configuration.

  31. Two words by ledow · · Score: 2

    Premature Optimisation.

  32. It's a TRAP by Anonymous Coward · · Score: 1

    Don't tell NSA how to record calls into a database! I guess they've been typing it to a excel all this time.

  33. Small problem by Anonymous Coward · · Score: 0

    You can't access any phone functions or text message functions via code on an iPhone. Unless you intend this for jail broken phones you're dead in the water. You're probably dead in the water anyway as only an idiot would load an app that tracks calls. There's a very good reason Apple locked that stuff out...security.

  34. Checklist / ArangoDB by Anonymous Coward · · Score: 0

    To ind the right db I wrote this checklist:
    http://nosql-database.org/select-the-right-database.html

    Nevertheless I love ArangoDB because of:
    * K/V + JSON + Graph = 3 models available!
    * Speaks ServSide JavaScript with embedded V8 Server!
    * FOXX GUI can talk directly to Database
    * Multicore ready
    * Advanced indexing plus geo, skip-list, n-gram, !
    * Tunable durability + transactions
    * AQL = SQL + JSONiq + CYPHER (I do not know of a better graph+SQL language out there...)
    * quasi MVCC => SSD ready
    * capped collections
    * Replication + sharding
    * management GUI
    * and tons more

  35. peer pressure by Anonymous Coward · · Score: 0

    not having query or joins or ACID is so cool . everyone is doing it

  36. When to use NoSQL by Anonymous Coward · · Score: 0

    From your requirements
    1) You require logging of information. If the 'back-end' system goes offline, what would you like to happen in the front-end? Using a filesystem for storage would remove the requirement of a 24/7 back-end database.
    2) Using filesystem for storage would likely be a single file per POST. What will be the usage? If > 50k a week, you might want timestamped daily directory.
    3) Trends. How often do you want these trends, immediate? More immediate, more likely move from file system to repository. And what value would you want your trend analysis to provide? As mentioned above, splunk is wonderful for basic trend reporting. Do you want deep statistical analysis, searching and querying?
    4) Searching and querying I would suggest Postgres. Stats, how about R. This means you will need a ETL (extract transfer load) to separate SILOS (yeah, one day this will be solved, but not by NoSQL). If you do not know what you are collecting, or it will change often, now we might move to NoSQL. No Schema = NoSQL.

  37. Develop for a design, not a technology. by generic_screenname · · Score: 1

    What is your architecture? Answer that question first, then decide what kind of data store to use. What are you storing, and why are you storing it? How will you use that later?

  38. Stock inventory? by biodata · · Score: 1

    Is this for your stock inventory project? If you want to do anything that involves keeping track of any goods or money or anything of value, then NoSQL is not necessarily the way to go. NoSQL is designed to keep track of value-less things like Twitter messages and Facebook postings, where it doesn't matter if you lose a few thousand transactions here or there. People keeping track of things with actual monetary value usually use SQL for the transactions, from what I've seen.

    --
    Korma: Good
    1. Re:Stock inventory? by DorianGre · · Score: 1

      This is exactly for the stock inventory project. We currently have MySQL backend and it seems to be working well. Currently plan is to migrate to PostgreSQL in the next few months. We are expanding the project to have consumer-facing iphone/android, so scaling is ??? The consumer facing app will query data looking for availability and then report to the retailers info on those queries (18 people looked for this product in your area last week and you were out). We are also starting to import data from 3rd party inventory systems. The long play here is automated stock and reorder management, but we are starting where there is less competition in the space.

  39. HBase by scorp1us · · Score: 2

    First. everyone who is pointing out your premature optimization is probably right. You can get a lot of scalability out of existing databases, particularly if you optimize your data schema with indexes. Even if you store all possible 9,999,999,999 phone numbers, the log base-2 of that is 34. So you'll need a b-tree 34 levels deep. That's big, real big, but b-trees are fast. Worst case you are reading 34 blocks from disk, which is ~16kB.

    Next, don't choose databases by name. Choose them by their features because you use features, not names. That said, HBase is probably what you want. It's a blend of distributable hadoop and tables. You don't need atomicity (it doesn't sound like) which is one thing you give up when leaving SQL behind.

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
  40. Perhaps you should abstract your persistence model by Assmasher · · Score: 2

    ...so that you simply write an adapter for pushing/pulling data.

    Then you don't have to worry so much about making what appears to be an extremely premature optimization.

    In other words, have your backend web services (presuming you're using them and not manually POSTing from a socket yourself to your own socket server) instantiate an instance of iMyDBAdapter and use it.

    Later, when you find out that you actually do need MongoDB, PostgreSQL, sharded MariaDB, whatever, you can simply write another adapter class that simply has to satisfy the iMyDBAdapter interface.

    The reason this works so well is that it will force you to separate your business logic from your underlying DB implementation (which requires a lot of discipline to do otherwise, especially when you just want to get something 'done'.)

    Also, as another poster pointed out, you're much more likely to suffer from other issues relating to scaling (and issues better solved elsewhere) than a modern database.

    My advice, stick rigidly to the interface/adapter mechanism and implement an adapter for whichever DB you're most comfortable with right now.

    --
    Loading...
  41. Solution looking for a problem by luis_a_espinal · · Score: 5, Insightful

    I would like to start with a NoSQL solution for scaling,

    This is a solution looking for a problem. Or more precisely, you are looking for an excuse to use a piece of technology or paradigm. Don't get me wrong, your systems requirements might indeed be best served using a NoSQL solution, but what exactly has your analysis shown regarding this?

    Scaling is not just a technical feature (NoSQL, SQL, Jedi mind-meld tricks). Scaling is a function of your architecture. You can NoSQL the shit out of your solution, but if your software and system architecture is not scalable, then having NoSQL will mean chicken poop as solutions go.

    and ideally it would be dead simple if possible.

    If you want simple, put a simple RDBMs schema (a properly normalized that) in place, and have your code use a simple, technology-agnostic persistence layer that maps your domain-level artifacts to database artifacts. If you ever had to replace the back-end, then you can do so with minimal changes to the API that domain-level artifacts use to persist themselves with the persistence layer.

    Design your domain solution around domain-specific artifacts. Persistence technology is typically a low-level design/implementation detail, an important one obviously (and a critical one for some classes of systems).

    But for what you are describing, the choice shouldn't even be coming into the picture without first having an architectural notion of your solution.

    1. Re:Solution looking for a problem by DorianGre · · Score: 1

      I think we were just looking for an excuse to play with NoSQL solutions, rather than needing it. Through segmenting customers across multiple databases, we will do scaling just fine. Hoping for an elegant solution, but Copy, Rename, Repeat seems to work fine too.

    2. Re:Solution looking for a problem by Anonymous Coward · · Score: 0

      I would like to start with a NoSQL solution for scaling,

      This is a solution looking for a problem. Or more precisely, you are looking for an excuse to use a piece of technology or paradigm. Don't get me wrong, your systems requirements might indeed be best served using a NoSQL solution, but what exactly has your analysis shown regarding this?

      Scaling is not just a technical feature (NoSQL, SQL, Jedi mind-meld tricks). Scaling is a function of your architecture. You can NoSQL the shit out of your solution, but if your software and system architecture is not scalable, then having NoSQL will mean chicken poop as solutions go.

      and ideally it would be dead simple if possible.

      If you want simple, put a simple RDBMs schema (a properly normalized that) in place, and have your code use a simple, technology-agnostic persistence layer that maps your domain-level artifacts to database artifacts. If you ever had to replace the back-end, then you can do so with minimal changes to the API that domain-level artifacts use to persist themselves with the persistence layer.

      Design your domain solution around domain-specific artifacts. Persistence technology is typically a low-level design/implementation detail, an important one obviously (and a critical one for some classes of systems).

      But for what you are describing, the choice shouldn't even be coming into the picture without first having an architectural notion of your solution.

      Man you hit it on the head.... Don't go looking for technology to solve your problem, solve it at the architectural layer, and use technology to enhance the experience.

      100% agree that this is a solution looking for a problem....

    3. Re:Solution looking for a problem by avandesande · · Score: 1

      After working on dozens of large projects I would suggest that if you want whatever you are doing to be successful you need to be ruthless about removing any kind of complexity or opacity from your solution.

      --
      love is just extroverted narcissism
    4. Re:Solution looking for a problem by cavebison · · Score: 1

      Jedi mind-meld tricks

      That's definitely a mix of incompatible technologies right there.

    5. Re:Solution looking for a problem by luis_a_espinal · · Score: 1

      Jedi mind-meld tricks

      That's definitely a mix of incompatible technologies right there.

      I know!!(10+1) ;)

  42. Re:S3 better than files on disk by DorianGre · · Score: 1

    I think we are leaning toward SQL as it is something we all know. However, the alternatives needed to be investigated.

  43. I wouldn't touch Mongo by Anonymous Coward · · Score: 0

    I wouldn't touch Mongo, transaction in Mongo don't work the way you think they do.

    I wouldn't touch MySQL/Maria for exactly the same reason.

    Go with PostgreSQL, then you will have a solid infrastructure that will support relations when you need them.

    No workarounds no compromises, to lazy amateur BS.

  44. If you have to ask ... by ehiris · · Score: 2

    It means you don't have any big data requirements so you're better off sticking with MySQL or something easier to manage at a small scale.
    If growth is high or you have a lot of data to analyze, you can look into importing data into Hadoop using sqoop and query it with Hive and HBase. But you most likely won't need that for at least a couple of years.

  45. i'd go with... by Anonymous Coward · · Score: 0

    whatever wordpress comes with.

  46. Files, flys and fries by WaffleMonster · · Score: 1

    Create a separate folder for each type of 'key' copying 'POST' data to files in these folders using filename as key for ... umm... lightning fast retrieval.

    U should then totally think about creating other directories full of symbolic links rather than files enabling you to have many keys for reference or even generate materialized views without duplicating data.

    Since you would be using a query language that is not SQL it is guaranteed to scale to infinity and beyond... (inodes sold separately)

  47. One of which was even spelled correctly ;-) by Scotland · · Score: 1

    I've never seen a post with 50% of its words spelled incorrectly. Unless it's in French? -- in which case, I guess your keyboard doesn't support accents.

    --

    Not a grammar nazi. Just couldn't resist on this one.

  48. Make it fast, don't marry first... by NotesSensei · · Score: 2

    and get to know it later :-). Fast here: your prototype creation, not primary the database I/O. The general comments are right: there is no one-fits-all solution and the database might change. It looks very much like you also haven't decided on the server platform: Ruby, PHP... you could look at node.js or vert.x too - server side JavaScript is at least neat for prototyping (I'm not making a statement that is is *only* neat for prototyping - that's a completely different discussion). We did a number of super rapid prototypes with datasets roughly in the range you describe using CouchDB (not CouchBase!). There we took advantage of CouchApps - the ability to store the application itself inside the database - works like a charm when replicating data and you need a http server (Apache, NGix) for the URL mapping (which is already kind of optional) and CouchDB. You can authenticate with OAuth or via the Webserver and it replicates - so you can have local data easily (gold for testing). Since you can specify the direction I usually replicate all data from the server into local, but not the design. So I can try new app features local against the live dataset. It also does Map-Reduce using JavaScript. Give it a shot. If it can handle the data from CERN you also have quite a growth path. One fun project we did: run it on a Rasberry Pi to collect weather data from Arduinos all mounted in a small sail boat (the Pi in the cabin, the Arduinos on the masts). Occasionally when the Wifi or 3G shield picks up a network, it replicated back to a cloud server.

  49. Using MDDB by Anonymous Coward · · Score: 0

    With all of the NoSQL DB's that you've mentioned, you won't be able to use specific fields in the data blob to reduce the data set. Most only care about the key and don't have much access to the data associated with it. Hyperdex does allow for use with the fields in the data object, but what your looking at doing sounds like you want to run analyitical queries against the data you have. You may want to look at using a multidimentional database, which can better be used for reporting. I'm sure there are many other solutions as well, but this may be worth looking into as a possible solution.

  50. MongoDB by GameMaster · · Score: 2

    Use MongoDB, it's web-scale. They produce kick-ass benchmarks by piping all your data to /dev/null.

    --

    Rules of Conduct:
    #1 - The DM is always right.
    #2 - If the DM is wrong, see rule #1
  51. Can you separate data collection from reporting? by Anonymous Coward · · Score: 2, Interesting

    If the goal really is just to amass data and then do offline reports on it (not completely clear from the question) then I can report that at my company we've been doing this at scale for over five years. Here's how:

    * A bunch of web servers accept data and append it to a local disk file.
    * Every hour, that "log" is pushed from each host into HDFS and a new log file started. (HDFS as in the Hadoop Distributed Filesystem)
    * Querying is done later, using Hive with a custom deserializer that natively understands our on-disk format. (You could also just make sure your on disk-format is the delimited text format Hive natively understands, of course. We had some unique needs here.)
    * An hourly task runs a small set of Hive aggregation queries (Hive presents a SQL-like interface to defining and running MapReduce jobs) on the raw "table" to produce some smaller datasets that can return aggregate-based results faster than the raw data, including copying some of the smaller aggregates into a MySQL database for online access via some reporting applications.

    At this point our daily dataset is a few terabytes in size, when considering the sum of all of the collecting servers across all of the hours. (There are some peak hours due to the nature of our business, so the volume isn't even across the whole day.)

    The only thing we've ever disliked about this system is the delay between data arriving and it being available to query. For a little while experimented with using Apache Storm to with realtime log streaming, and produced a working prototype that was shown to work for a one-tenth sample of the data, but ultimately we concluded that the need for faster data wasn't strong enough to justify the additional complexity and stuck with the above design. Therefore I can't speak to how far that solution would scale, but if real-time analysis isn't a requirement -- and scaling up in data size is -- then I can certainly recommend the above design.

  52. apache.org has some good stuff by Anonymous Coward · · Score: 0

    Lucene and solr.
    Not sure about the trending though.

  53. Go away... you know nothing by Anonymous Coward · · Score: 0

    What a total n00b question... I'm not sure if you should actually be messing with this stuff if you cannot figure out what Database technology to use, and you ask /.

    And I agree with the others, you are asking for problems....

  54. Since when is the NSA using Ask Slashdot? by Anonymous Coward · · Score: 0

    EOM.

  55. Are you a DBA, dev, or sysadmin? by Anonymous Coward · · Score: 0

    If you're a DBA or dev, go with Mongo and let the sysadmins handle the scaling and expansion. If you're a sysadmin, go with SQL and let the devs and DBA's handle the scaling. If you're a DBA......well I'm sorry but you're screwed.

  56. What is this? Stack Overflow? HackerNews threads? by Anonymous Coward · · Score: 0

    I didn't know that slashdot turned into stack overflow.... Is this a new beta feature that I just missed? ;)

    Like other posters have pointed out, this whole article smells fishy. Being vague as hell but asking for a specific solution?

    The point is is that there is no be all, end all answer to this question. It depends on a lot of intangible requirements that the OA seems to miss on purpose. I call troll!

  57. Re:What is this? Stack Overflow? HackerNews thread by DorianGre · · Score: 1

    Really, I just want to know if you were starting a new site that was mostly incoming data and needed to possibly scale quickly, what choice would you make at the outset to make your future life more bearable.

  58. Re:One of which was even spelled correctly ;-) by ledow · · Score: 1

    Welcome to English.

    The language you copied, fucked with, and then claimed to have the definitive version of.

    Pretty much if we end a word with -our (colour, flavour, honour) or -ise (optimise, etc.) then we're right.

  59. Neo4J by Anonymous Coward · · Score: 0

    Look up Neo4J. If you're after something that will be the new "RDBMS-killer", this is it!

    Forget MongoDB, Hadoop, MapReduce, etc. By the time you've learned it, something new comes along. Find something generic. So if an RDBMS makes sense (Postgres, MariaDB, etc.), use that.

    So it depends what YOU want, basically, since I guess you will support it afterwards?

  60. If your only tool is a (NoSQL) hammer... by akubot · · Score: 2

    ... then everything looks like a (NoSQL) nail. Who says you need NoSQL? Nothing against using cool, newish stuff, but as others have pointed out, you didn't describe the scale of your project. Don't blindly pick trendy technology just because you want to sit with the cool kids at lunchtime. If this is an alpha or beta product with under 1 billion records, use a regular database and be done with that. Move onto the interesting parts of your project and fix the plumbing later if you need to.

  61. MySQL + SSD by Leolo · · Score: 1

    NoSQL was only necessary because traditional SQL's table joins are slow. Table joins are slow because hard disks are slow. But if your table data is on SSD, disk access stops being slow, joins stop being slow and NoSQL stops being necessary.

    I saw a great rant about this a few years ago. I've lost the link though.

  62. Why only NoSQL? by nepoznatn · · Score: 1

    There are number of solutions on the market that support best from both worlds. Oracle and postgres both have support for NoSQL datatypes. Informix went even further, it gives you ability to mix classic relational tables with NoSQL collection in the same database. You can write a query that will access data from both table and collection at the same time. You can use compression, timeseries it also supports mongodb API so you can write application that will connect to Informix using mongodb drivers, and of course you can shard as much as you want with no pain. Just google hybrid sql.

    1. Re:Why only NoSQL? by DorianGre · · Score: 1

      Thanks. I at least got some pointers to things I wouldn't have otherwise considered through this thread, even if my original question was poorly thought out. I haven't looked at hybrids.

    2. Re:Why only NoSQL? by nepoznatn · · Score: 1

      There are no pure NoSQL or pure SQL projects/solutions, sooner or later you will end up using both SQL and NoSQL, with NoSQL it can be even worse. I have seen project that are using 2 and more different NoSQL solutions. For example, mongodb for documents and neo4j as a graph database and some other database for relational data. Hybrid approach simplifies all this, you just have to plan and choose wisely.

  63. Re:One of which was even spelled correctly ;-) by Bacon+Bits · · Score: 1

    The language you copied, fucked with, and then claimed to have the definitive version of.

    Isn't that how English came about in the first place?

    --
    The road to tyranny has always been paved with claims of necessity.
  64. Well by Anonymous Coward · · Score: 0

    You can spin this up with a SQL database, but the real question is how well can you do it? Do you know how to design a properly structured database with good indices? Or are you just an app designer that expects the database to somehow know automagically how you want to query the data?

    Being that I know from experience that Postgres without much effort can handle queries hundreds of thousands of rows in parallel with a few hundred updates/sec. The limiting factor will be the IO of your disks whatever solution you use.
    I've been using postgres for some time with rather kinky data structures and it has never failed to perform. Sincerely the only use for NoSQL I have is in-memory temporary caches of objects, I can fathom that something like Cassandra might perform very well if I don't need data integrity.

  65. Re:Perhaps you should abstract your persistence mo by angel'o'sphere · · Score: 1

    You forget the fact that modelling for a NoSQL database usually works completly different than for a rational database, hence the code using one or the other is completely different.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  66. Ooooh shiny by snapthemag · · Score: 0

    I'm with the guys claiming premature optimization. I think you've been duped by the legion of NoSQL evangelists into thinking RDBMS are old, slow and obsolete and if you put a few thousand rows into a few tables they'll bog down and take minutes to query it. Here's a spoiler: they're wrong. I think you'd be amazed just how robust and fast Postgres, MySQL and MS SQL can be if configured and used correctly. The question NoSQL actually answers is "would you sacrifice atomicity and some consistency for a much higher data throughput?" I work on projects that have to manage sizable chunks of data every day and in my experience NoSQL is only an option after you've exhausted all other avenues. If you've designed a bulletproof database schema, optimized all your queries to the bone, created every possible index on every possible table, partitioned your database files and even thrown hardware at it and you still have issues, then NoSQL might be your salvation. Otherwise, stick to what everybody else is using.

    1. Re:Ooooh shiny by DorianGre · · Score: 1

      I work with a SQL database every day. I optimize weekly. I haven't done a project since mid 1990's that didn't have some sort of SQL DB attached to it. I just wanted to see if there was something better. Apparently not.

    2. Re:Ooooh shiny by snapthemag · · Score: 0

      The problem isn't that NoSQL is bad - it's not. The problem is that the scale of data needed for its benefits to outweigh its shortcomings is, well, staggering. For anything less, a well configured RDBMS will be right there performance-wise and will give you the added safety measures that only decades of real-world experience can provide. I can understand wanting to try something different. NoSQL is very interesting in that regard. If you're talking about using it in a personal or non-critical work project, then by all means, go right ahead. But if you want to build a critical project and take it to production, old school is the way to go.

    3. Re:Ooooh shiny by plopez · · Score: 1

      " if configured and used correctly"
      There's the rub. Configuration takes knowledge and work and most developers think there is a magic way to avoid it. There isn't. If you don't need data consistency or atomic operations but throughput you also have the option of turning off logging. That gives you a mature DB engine that is proven with much faster through put.

      "If you've designed a bulletproof database schema, optimized all your queries to the bone, created every possible index on every possible table, partitioned your database files and even thrown hardware at it"
      In other words, done everything a good DBA should.

      Sacrificing data integrity is ok if it is a happy little mobi game. Go for it. If it has anything to do with human life, e.g. medical records, you had better think long and hard about sacrificing data integrity.

      --
      putting the 'B' in LGBTQ+
    4. Re:Ooooh shiny by maestroX · · Score: 1

      I work with a SQL database every day. I optimize weekly. I haven't done a project since mid 1990's that didn't have some sort of SQL DB attached to it. I just wanted to see if there was something better. Apparently not.

      In what role do you work?
      Your questions do not show any experience, it's just a soup of popular IT terms
      sendmail fits the bill

  67. Re:Perhaps you should abstract your persistence mo by Assmasher · · Score: 1

    Why would you be modeling anything relating to entities at the interface level?

    iMyDatabase would have methods such as:

    ValidateConnection
    GetSomething
    StoreSomething

    It shouldn't know anything about how that data is stored, where it is stored, how your object is serialized/deserialized from a DB entity, et cetera...

    --
    Loading...
  68. Depends on the situation by samwhite_y · · Score: 2

    I have used Oracle, MySQL, and Mongo in prod situations. I have looked at Cassandra for evaluating it for potential usage in prod.

    I can imagine situations where I could recommend any of the above. For example, if you are large financial company with billions of rows, I would go with Oracle. If you have smarts but not money and didn't need somebody to sue if something went wrong, then maybe Postgres would do . If I were a simple web based app with simple form submits, I would go with MySQL. If I had complex unpredictable data blobs and unpredictable needs to do certain types of queries against the data, I might recommend Mongo. If I have large amounts of data on which I want to do analytics I would use Cassandra.

    Cassandra wins when you have a lot of data and not a lot of complex real time queries against it. It is especially good at scaling up on cheap data storage (think 100s of terabytes). It also has an unreal "write" throughput (important for certain types of analytics which write out complex intermediate results) though that is not relevant for the case described.

    The problem generally with noSql solutions is that they increase the amount of storage to store the equivalent amount of information. You are essentially redundantly storing schema design with each "record" that you store. This really matters more than some might suspect, because when you can put an entire collection into memory, the read performance is much higher. You usually need 1/5th to 1/10th as much RAM to do the job with a traditional relational database (especially since MySQL and their brethren handle getting in and out memory better than mongo). This isn't so much the case for Cassandra because of its distributed storage nature, but it really isn't usable for real time transactions.

    My recommendation, use a traditional database -- if in a Microsoft shop use SQL Server, otherwise I like postgres or mysql. If however, you have complex data storage needs that a noSql solution is perfect for, then I would go with that. If you are into back end analytics, copy the data as it comes in and put into a Cassandra (or one of its similar brethren) as well.

  69. Postgres clusters? by Anonymous Coward · · Score: 1

    People are saying Postgres clusters without third party software... yet.. it does not.

    Synchronous replication != clustering

    If your master dies (and your only master), your application cannot automagically recover.

    You have change a slave to a master, which requires a config change/restart of the slave

    So now your master has gone down, and you have to restart at least one slave which becomes the new master

    Tell me how the out-of-the-box solutions can be considered clustered? When people say that, they mean it's HA, and Postgres certainly is not.

    Don't get me wrong, I love Postgres, but don't hype up core features it doesn't have (I sure wish it did)

  70. Go Google. by Anonymous Coward · · Score: 0

    Google makes android. Google makes a NoSQL option (https://cloud.google.com/products/cloud-datastore/). Google makes it easy to glue the two together: https://developers.google.com/appengine/docs/java/endpoints/

  71. Re:Perhaps you should abstract your persistence mo by angel'o'sphere · · Score: 1

    You will model something like: findMyStuffByTimeStamp().

    Your suggestion sounded as if you wanted to put the layout of the DB into an abstraction layer.

    If you simply talk about method signatures, then I wonder why you brought it up :)

    And what exactly does ValidateConnection mean? Either you have a connection, or you have not, just an idea ....

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  72. No SQL patents by Anonymous Coward · · Score: 0

    A problem with SQL DBs are the stupid patents on things like trimming whitespace and common SQL patterns. I'm not a huge fan of NoSQL DBs but I'm even less of a fan of patent trolls.

  73. Re:Perhaps you should abstract your persistence mo by Assmasher · · Score: 1

    "...so that you simply write an adapter for pushing/pulling data" makes you think the abstraction layer would have the DB layout in?

    Let me be perfectly clear then, the abstraction layer would simply know about the business logic side of things and that you can store and retrieve those things in some fashion most likely represented by some criteria associated with them.

    If you simply talk about method signatures, then I wonder why you brought it up

    I don't know what you mean.

    And what exactly does ValidateConnection mean? Either you have a connection, or you have not, just an idea ....

    What? Who/what would already "have a connection" to another server or memory mapped file or process or socket?

    ValidateConnection, in this example, would simply ensure that the backend persistence mechanism both exists and (as is required in most cases) that you have valid credentials.

    --
    Loading...
  74. Re:Perhaps you should abstract your persistence mo by angel'o'sphere · · Score: 1

    What about "connect(user, credential)"? That is how it works in the real world.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  75. Re:Perhaps you should abstract your persistence mo by Assmasher · · Score: 1

    Well, in the real world, when you abstract things properly you don't expose a "connect" method. The code behind your interface - the adapter - would use connect and disconnect internally.

    In the real world, when you abstract things, you expose a method that validates that the persistence layer is functioning/configured/usable as a normal part of the application/service/component's life-cycle. I called it ValidateConnection in this scenario because of the way he described his issue.

    --
    Loading...
  76. Re:Perhaps you should abstract your persistence mo by angel'o'sphere · · Score: 1

    Sorry,
    you have no idea about the real world.

    You connect to a DB or open a File or open a Socket and either "it just works" or you get an exception. There is no need to "validate" your connection object after you have created it, either you have it and it is "valid" or you don't have it or any subsequent method call results in an exception (which you have to handle anyway).

    The title of your post is "Perhaps you should abstract your persistence mo".

    After I answered to you, you suddenly talk about abstracting the business level.

    So either you made a mistake in choosing the right words or headline or you simply are mixing stuff up and now try to weasel out of it ;D

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  77. Re:Perhaps you should abstract your persistence mo by Assmasher · · Score: 1

    Sorry, you have no idea about the real world.

    Funny, just a few years ago I was the chief software architect for a company purchased for more than 60 million dollars entirely for our enterprise product. One of the primary reason this company was acquired instead of its competitors was because we were pioneering open standards in our market verticals and supporting those open standards with public integration points that 3rd party companies, including our competitors, wrote integrations to.

    This system had a persistence model that had to scale, not just horizontally, but in 'swim lane' fashion - or if you prefer the actual fashion we used, in AKF cube fashion. It handled tens of millions of persisted logic events daily and integrated with many different back end databases - all supported through this EXACT same facade/proxy system implemented with adapters. This pattern was used for all of the integration points and was how 3rd parties wrote integrations with our system.

    So, whatever it is you do, you can rest assured that I write enterprise software in the "real world" and quite successfully.

    You connect to a DB or open a File or open a Socket and either "it just works" or you get an exception.

    You really just can't seem to understand abstraction.

    After I answered to you, you suddenly talk about abstracting the business level.

    Not at all. Again you demonstrate that you don't understand what abstraction is. By hiding the details of the persistence model, which means (so that you understand) that people using the abstraction interface don't know if it is a DB, or a file, or a web service, or a pipe, or a local process, or a remote process, the business logic simple deals with business objects.

    If I was talking about abstracting the "business level" (presumably you mean business logic) I would be talking about an interface exposed to a view or consumer that didn't need to know any details about how the business logic operated. I was clearly not talking about that at all.

    So either you made a mistake in choosing the right words or headline or you simply are mixing stuff up and now try to weasel out of it ;D

    I'm willing to bet that you end up in a lot of 'arguments' where you bring out this line. It's okay, maybe some day you'll get it.

    --
    Loading...
  78. Firebase by Anonymous Coward · · Score: 0

    Firebase? Sounds like you can get away with no infrastructure

  79. any good isam engine by rewindustry · · Score: 1

    enough said.

  80. Re:Perhaps you should abstract your persistence mo by angel'o'sphere · · Score: 1

    Your first post I answered to certailny was not clear about "abstracting away persistanve issues" and your naming examples like ValidateConnection or CheckConnection are certainly bad choices as an example. On top of that that post made no contribution to the question the poster asked.

    I'm a real programmer, not a manager.

    Abstracting away the fact that a Service is remote and not local leads to all forms of problems. It is very often. o good idea.

    I rather assume you get in lots of arguments, or you are to lazy to use the correct words/concepts to make clear about what you want to talk.

    Sorry to say so, but the post I'm just answering to does not look like the person who wrote it had any clue or real life experince in software engineering at all. Is not ment as offense.

    And no, I don't use that line often, actually I don't remember if I had used it already once.

    Well, the application I'm working on right now mainly uses custom written persistence (MongoDB and kryo) as we have to persist millions of events per hour (worst case) and perform analysises that need response times of less than a second (usully working on a time frame, so only a relatively small amount of data has to be fetched from the backing storage).

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  81. Re:Perhaps you should abstract your persistence mo by Assmasher · · Score: 1

    Your first post I answered to certailny was not clear about "abstracting away persistanve issues"

    Are you an escaped inmate from a Guatemalan insane asylum?

    The entire first post, including the title of the post, is explicitly about abstracting your persistence model.

    "In other words, have your backend web services (presuming you're using them and not manually POSTing from a socket yourself to your own socket server) instantiate an instance of iMyDBAdapter and use it."

    Maybe you don't find that clear, but that's because you apparently don't understand abstraction...

    your naming examples like ValidateConnection or CheckConnection are certainly bad choices as an example.

    The stupidity of your statement really cannot be overstated. You dislike ValidateConnection because you claim you will simply catch an exception when you connect; ergo, you are either connected or you are not. This, alone, is proof that you do not understand abstraction.

    I'm a real programmer, not a manager.

    And you'll apparently never get any further, because you'll need to understand abstraction before you can be an architect. I'm also not a programmer, I'm a software engineer (there's a difference that you're not aware of), a software architect, a founder, a co-founder, and I also perform technical due diligences for multiple Vencture Capital firms.

    Abstracting away the fact that a Service is remote and not local leads to all forms of problems. It is very often. o good idea.

    Actually, this is EXACTLY what you should abstract away. Yet again you demonstrate your lack of basic understanding of the purpose of abstraction. You think that abstracting away 'locality' is bad and leads to problems? Why on earth would it do that? LOL. Your abstraction layer should satisfy the requirements of the business logic, if locality is an issue (i.e. for performance) then your adapter implementation must account for that. The only time anyone using your abstraction layer should ever know anything about locality would be if that knowledge would be required so that the business logic could make a decision - otherwise, that sort of information should be encapsulated totally.

    And no, I don't use that line often, actually I don't remember if I had used it already once.

    Sure, I believe you, and you understand abstraction too.

    Well, the application I'm working on right now...

    Great, I hope you have a competent architect.

    --
    Loading...
  82. Re:Perhaps you should abstract your persistence mo by angel'o'sphere · · Score: 1

    I'm a competent architect.

    That is why I work there.

    Sorry I don't get your rants. You seem to have 3 bad days in a row or something. Your talking about abstractions really makes not much sense, so I pray for the entroneurs you consult, good luck.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  83. Re:Perhaps you should abstract your persistence mo by Assmasher · · Score: 1

    Your talking about abstractions really makes not much sense, so I pray for the entroneurs you consult, good luck.

    I'm sure it doesn't, because you have demonstrated quite clearly that you don't understand abstraction.

    How can you be a competent architect when you don't understand abstraction? LOL.

    In any case, you're a programmer, right?

    --
    Loading...
  84. Re:Perhaps you should abstract your persistence mo by angel'o'sphere · · Score: 1

    Sigh, what is your problem?
    Do you have a mental illness?
    I for my part did not talk about abstraction at all, hence you have no basis to judge if I know anything about abstraction.

    Have a good day (and once again I wonder why /. has no ignore feature).

    In any case: I'm a requirements engineer, a software architect, a systems architect, a developer in about 20 programming languages; I do everything from training, coaching, developing, testing, analysis, design, implementation, test. I do internet applications with a few dozen of millions of users, desktop applications, embedded development in the automotive and aircraft industries. I do everything that is interesting ... do I need to continue?.

    Since over 30 years. But you are the guy who sold a company for a few millions ... wow, I really wonder what I do wrong.

    I for my part don't make the mistake (anymore) to accuse someone about "he does not know X" ... can be a grave mistake sometimes.

    If you indeed did anything you claimed the previous posts I strongly suggest you improve your comunication skills, and for that matter: your manners.

    Sorry to half insult you again: your previous five posts sound like you are a complete idiot and a superb moron.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  85. Re:Perhaps you should abstract your persistence mo by Assmasher · · Score: 1

    Last word, lol

    --
    Loading...
  86. Re:Can you separate data collection from reporting by Anonymous Coward · · Score: 0

    The approach bears some similarity to what Nathan Marz describes in his book on big data.