PMXBOT Log file Viewer

Help | Karma | Search:

#mongodb logs for Wednesday the 17th of July, 2013

(Back to #mongodb overview) (Back to channel listing) (Animate logs)
[00:37:01] <caitp> does anyone know if it's possible to share a mongodb js driver connection with mongoose? or would that be a bad idea even if it is possible
[00:38:08] <retran> what did #mongoosejs say
[00:38:24] <caitp> #mongoosejs is very inactive :(
[01:03:22] <kal1> does anyone know if objectid is stored outside the bson document or as a part of the bson document?
[01:17:48] <pasichnyk> hey guys, i'm brand new to mongo, and working on updating 30 or so values in a document at a time using the atomic $inc operator. My query to find the document to update is a point lookup (i.e. _id: "username-date") so that part is fast. The values i'm upsert/incrementing however are nested into a couple arrays, so i can pre aggregate this data at the day and hour levels. (i.e., value,
[01:17:48] <pasichnyk> days.value, days.{day}.hours.{hour}.value, country.{country}.value, days.{day}.country.{country}.value, days.{day}.hours.{hour}.country.{country}.value, etc) Do i need indexes on these searches that happen inside a document after its been selected to keep things fast, or does the index only help to find the document in the first place (i.e., the query part of the operation)? Or is this a
[01:17:48] <pasichnyk> "it depends" type of a question?
[01:18:55] <retran> you need to add an index for every field combination you query on
[01:19:24] <retran> you need indexing on the fields that have nested stuff in them
[01:19:31] <retran> if you want to avoid table scans
[01:19:51] <retran> (if you want to search on your fields with nested arrays, ever)
[01:21:13] <retran> personally, when i develop, i do a very blunt thing to force me to use indexes (but not create too many)
[01:21:27] <retran> i disable table scans in mongodb conf
[01:22:48] <pasichnyk> I won't be searching on the fields as part of the query, i'd be selecting the dcoument strictly based on the _id, and then updating or returning part of the document based on the array values.
[01:23:13] <pasichnyk> so i guess... if i can get to the document wihtout the index quickly, do i need it for intra document stuff?
[01:23:21] <retran> so your client application will be doing the searches
[01:23:31] <retran> ?
[01:24:06] <retran> oh wait you answerd another question
[01:24:08] <pasichnyk> the data is reporting data, and i'd pull some select documents for a agiven report... say username1-201301 and username1-201302
[01:24:18] <retran> the update({/*condition*/})
[01:24:25] <retran> that's another thing you'll need to index for
[01:24:40] <retran> the update is same as a query in that sense
[01:24:50] <pasichnyk> yeah, but the update query is to find the doucment to update, right?
[01:24:55] <retran> you can cause a table scan there
[01:25:20] <retran> what is the condition
[01:25:32] <retran> you have to have index on all partrs of the condition
[01:25:44] <pasichnyk> the query that goes into my update is like {_id: "username1-201307"}, but then the command that i actually run on that single document is a whole bunch of $inc operations
[01:26:26] <pasichnyk> (i.e., i store a single document per user per month, for this reporting purpose, so its easy to get to it with a point lookup based on the _id)
[01:27:26] <retran> $inc wont need more index, that's just a way of indicating what you want done to a field
[02:01:11] <johann> hey guys so im trying to set up my update query where it makes sure that a userId is not inside an object--i am aware of '$nin' and even got a pattern working when userid is the only entry in the object
[02:01:22] <johann> but it stops working when the object contains another entry beside userid
[02:02:28] <johann> how would i define a query that checks for the userid field of all entries? sorry if my language is bad im a noob still getting accustomed to the proper wordings
[02:05:27] <pasichnyk> retran, thanks
[02:06:52] <retran> johann, you mean like a field exists? $exists
[02:07:24] <johann> i want to do a check where a user can only vote once
[02:07:33] <johann> so a user can vote for one out of three things
[02:07:48] <johann> a vote has the userid and what they voted for
[02:08:14] <johann> so i wanted to do a check to only allow an update on the collection if the userid has not been in any of the voting objects
[02:08:50] <SrPx> Hello! I've asked this yesterday but nobody replied. If my app crashes between 2 updates, is my db left in an invalid state? Can I avoid this somehow?
[02:08:51] <retran> are you looking for field value or field existing
[02:09:26] <retran> SrPx, we wont know if your db is in an invalid state
[02:09:54] <SrPx> retran: suppose the 2 updates MUST happen together or else an invalid state will happen
[02:09:56] <retran> it absolutely depends on your data
[02:10:06] <retran> SrPx, are you familiar with transactions?
[02:10:19] <SrPx> retran: not a lot, that's where my doubt came from
[02:10:34] <retran> mongodb wont magically know if you consider your data invalid or not
[02:10:44] <retran> you'd have to have your app use transactions
[02:11:25] <SrPx> retran: but how can I tell my app to call 2 "sets" on the api together without a chance of a crash between them?
[02:11:55] <retran> basically, it means, you do a "start transaction" command, then do your updates, inserts, etc, then do a "commit transaction" command at the end
[02:12:10] <retran> that's the concept of transactions in it's simplest
[02:12:52] <retran> SrPx, what does "on the api togather" mean
[02:13:21] <SrPx> retran: but mongodb supports that?
[02:13:31] <retran> mongo supports transactions
[02:15:47] <retran> http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/
[03:24:29] <caitp> so, if I have a subdocument containing only an ObjectId, is there any way for me to use that in a query to refer to the document that the ObjectId actually points to?
[03:25:12] <caitp> actually, luckily in this case these subdocuments aren't subdocuments and are actually just objectids
[03:25:27] <caitp> but I still need to use the objects that they point to in queries
[03:35:03] <caitp> would I need to use mapReduce to solve this?
[03:35:38] <retran> you wont need mapreduce
[03:35:44] <retran> that's just linking
[03:36:04] <retran> http://docs.mongodb.org/manual/reference/database-references/
[03:39:22] <caitp> using a second query seems really bad :(
[03:40:22] <retran> you'll find 'breaking the rules' in mongo often results in little penalty
[03:40:27] <retran> it's not like an RDBMS
[03:41:11] <retran> in mongo, i would focus on simpliest way of solving your problem
[03:41:24] <retran> then microoptimizing later as you find choke-points
[03:41:49] <caitp> it's not about optimizing choke-points, I doubt this dataset will ever be big enough to hurt because of that
[03:41:59] <caitp> it's about optimizing the amount of code I need to write :U
[03:42:29] <retran> expressing a link via your client app code, or via mongo would take pretty much same amount of code
[03:42:47] <retran> and you were prepared to do mapReduce for this, which is a ton of extra code :|
[03:43:05] <caitp> who says I was prepared to do that ? :p
[03:43:33] <retran> heh... well you had asked :p
[03:43:43] <caitp> I need to filter a list of objects based on the contents of a linked document, to do that I need to query all of the linked documents first?
[03:43:55] <caitp> I mean, that just hurts :(
[03:44:26] <retran> why would you query all the linked documents
[03:44:29] <retran> individually
[03:44:34] <retran> hmm...
[03:44:41] <retran> i see your question
[03:44:44] <caitp> it's not clear how this is supposed to work?
[03:44:46] <retran> yes, effectively you would
[03:45:24] <retran> http://docs.mongodb.org/manual/reference/database-references/#document-references
[03:45:31] <retran> it has to be done at some level
[03:46:57] <retran> http://docs.mongodb.org/ecosystem/tutorial/model-data-for-ruby-on-rails/
[03:47:13] <retran> (ignore that it says "for ruby on rails" for the moment)
[04:00:53] <retran> i wouldn't sweat too much you have to manually link
[04:01:07] <johann> so im trying to implement a logic where a user gets one vote for one item in a set of three
[04:01:33] <johann> and im trying to do a query that would make sure the collection doesnt get updated with a user voting for the same item twice or any of the other two items
[04:02:12] <retran> you have to control for it by updating transaction status
[04:02:22] <retran> did you read the link i gave earlier, johann
[04:02:29] <retran> or is that being ignored
[04:02:47] <johann> i had zero idea that was directed at me i apologize i got lost in my own dream of solving it through intuition and kept on pounding the rock
[04:03:10] <johann> lemme scroll up and absorb some insight
[04:04:20] <retran> http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/
[04:04:28] <retran> this link, johann
[04:11:56] <johann> thank you retran :)
[04:14:25] <caitp> I don't suppose there is any native support for mongoose "virtual properties"
[04:14:56] <johann> ah this simplifies things greatly
[04:15:10] <caitp> the docs seem to be down here atm, so it's hard to look it up
[05:00:41] <caitp> well this query is already 100 lines and it's not finished yet :(
[05:47:29] <SparkySparkyBoom> hi there
[05:47:57] <SparkySparkyBoom> how would i go about storing lists that are greater than 16mb
[05:48:08] <SparkySparkyBoom> i could store each value as a document
[05:48:32] <SparkySparkyBoom> but what if i want multiple lists
[05:49:29] <SparkySparkyBoom> at this point any help would be much appreciated
[05:49:36] <SparkySparkyBoom> im seriously stuck
[05:49:59] <SparkySparkyBoom> i dont even need to query this list
[05:50:39] <SparkySparkyBoom> i could store it with gridfs
[05:51:01] <SparkySparkyBoom> but then i would have to create my own collision handling solution
[05:59:26] <SparkySparkyBoom> i realize that this may be a trivial problem for a lot of people
[07:26:22] <[AD]Turbo> hola
[07:29:09] <ncls> hello
[09:10:56] <Avish> Hey guys
[09:11:59] <Avish> I'm getting some kind of memory leak using MongoDB from Java. The thread dump shows multiple "MongoCleaner" threads in "com.mongodb.Mongo$CursorCleanerThread.run" -- is this normal? Am I forgetting to close something?
[09:43:52] <remonvv> \o
[09:44:30] <Nodex> o/
[09:59:18] <rspijker> \o/
[12:19:01] <jpfarias> good morning everyone
[12:19:09] <jpfarias> I think I made a huge mistake :)
[12:19:20] <jpfarias> I made a cluster using localhost as the hostname of the shards
[12:19:55] <jpfarias> I made 3 shards on one machine
[12:20:04] <jpfarias> now trying to add a 2nd machine doesn't work
[12:20:26] <remonvv> Dev machine?
[12:20:36] <jpfarias> is there a way to reconfigure the shard on the one machine to use full hostname?
[12:20:43] <jpfarias> remonvv: not really...
[12:22:10] <remonvv> Alright, well, is the machine under heavy load?
[12:22:16] <jpfarias> I was in mongo SF last year and there was a talk where the guy said he got better results with more than one machine
[12:22:36] <jpfarias> I tried and indeed I got better performance with 3 shards in one machine
[12:22:43] <remonvv> Hm, that's less true than it used to be but it should still be a little better
[12:22:43] <jpfarias> but now I am trying to add a 2nd machine
[12:22:53] <remonvv> Yes
[12:23:01] <jpfarias> remonvv: it is not under heavy load
[12:23:09] <jpfarias> I can probably take it down for a couple hours
[12:23:10] <remonvv> Well never ever use localhost as a hostname. BUt that's a lesson learned ;)
[12:23:12] <jpfarias> if need be
[12:23:18] <remonvv> Probably not needed.
[12:23:20] <jpfarias> yep… never again
[12:23:36] <jpfarias> how should I proceed?
[12:23:37] <remonvv> What you can do is add more shards to your first machine with the proper hostnames (so you go from 3 to 4)
[12:23:45] <remonvv> then drain the original 3
[12:23:52] <remonvv> then add 2 more with the proper hostnames
[12:23:53] <jpfarias> I trying googling but couldn't find any docs on it
[12:24:24] <jpfarias> remonvv: it won't let me add shards with hostnames different than localhost
[12:24:31] <remonvv> If that doesn't work (it might reject adding non-loopback hosts when there's already localhost machines in) you'll have to either.
[12:24:37] <jpfarias> on the shard that is already running
[12:24:38] <remonvv> Ah yes, see above ;)
[12:24:54] <jpfarias> right
[12:24:54] <remonvv> Okay, in that case you'll have to go down for a bit.
[12:25:02] <jpfarias> that's ok
[12:26:56] <remonvv> The fast way is to take everything down but the config servers and 1 mongos, connect to that mongos, go to the config database and update the db.shards collection with the appropriate hostnames. remove() db.lockpings and db.locks
[12:28:24] <remonvv> The proper and safe way is to make a database dump, recreate your cluster with proper hostnames and restore it.
[12:28:41] <remonvv> If it's anything close to a production environment do the latter.
[12:28:57] <jpfarias> ok, that's what I figured....
[12:29:30] <jpfarias> if I do the first will it damage the data if something goes wrong?
[12:30:10] <remonvv> No. You're not touching the data. As long as you stay away from db.chunks and don't rename your shards you should be fine.
[12:30:26] <remonvv> If you make a backup you can try the former and do the latter if it does something wonky
[12:30:35] <jpfarias> ok
[12:30:59] <remonvv> Make sure you make the backup after you disable your app/web servers
[12:31:12] <jpfarias> yep
[12:35:12] <jpfarias> started backup process
[12:35:14] <jpfarias> :)
[12:36:34] <remonvv> ;)
[12:37:25] <jpfarias> damn it is gonna take a while
[12:37:32] <jpfarias> ~ 3h I think
[12:37:33] <jpfarias> lol
[12:37:38] <remonvv> How much data is there?
[12:38:03] <jpfarias> 12 million records in one collection and 18 million on another
[12:38:13] <jpfarias> storage size is about 250GB
[12:38:39] <remonvv> Hm. Can just backup the datafiles instead.
[12:38:49] <remonvv> Minus config.0 etc.
[12:39:04] <jpfarias> is that supposed to go faster?
[12:39:14] <remonvv> Yes
[12:39:24] <jpfarias> ok, let's do that then :)
[12:39:40] <remonvv> But has the downside of having to restore before you balance your chunks
[12:39:52] <remonvv> If you backup -> add machine -> restore the restore will be faster
[12:39:59] <remonvv> And will be immediately balanced.
[12:40:09] <remonvv> (provided you pre-split your chunks)
[12:41:23] <jpfarias> so, say I make a new cluster
[12:41:32] <jpfarias> if I add a shard that already has data
[12:41:38] <jpfarias> will it just use it?
[12:43:04] <jpfarias> my point is
[12:43:07] <remonvv> What do you mean?
[12:43:10] <jpfarias> maybe I could backup the data
[12:43:17] <jpfarias> start new config servers and mongos
[12:43:21] <remonvv> Copy it to both you mean?
[12:43:31] <jpfarias> and add the shards that already have data
[12:44:15] <remonvv> Hm, sounds risky ;)
[12:44:32] <jpfarias> yeah… I guess it would be too risky indeed
[12:44:35] <remonvv> You mean you start with as single empty shard and addShard the ones that do have data?
[12:44:48] <jpfarias> right
[12:45:16] <remonvv> I don't think that works since the config database wouldn't know it contains data (no db.chunks entries)
[12:45:29] <jpfarias> ok
[12:45:44] <jpfarias> hmm
[12:45:51] <jpfarias> if that's the case
[12:46:10] <jpfarias> why do you think backing up the data will work instead of a dump?
[12:46:33] <jpfarias> backup the config data too I guess, right?
[12:47:04] <jpfarias> if it fails I can stop all the servers and copy all the data / config back and do a dump
[12:49:35] <remonvv> Right, you backup the data minus config, start the mongod process with that data, then execute addShard so it'll redo cluster metadata, and so on
[12:50:00] <jpfarias> wait, minus config?
[12:50:03] <remonvv> But to be honest you're better off just doing the backup/restore
[12:50:26] <remonvv> yes your config includes the cluster topology data with, amongst other things, your localhost thing in db.shards
[12:51:02] <jpfarias> oh man
[12:51:07] <jpfarias> this is all too confusing
[12:51:11] <jpfarias> I'll just do the dump
[12:51:12] <jpfarias> lol
[12:52:00] <remonvv> You do that ;)
[12:55:36] <remonvv> Does anyone know what the reasoning is behind changing the removeShard command to not allow more than one shard to removed at a time?
[12:56:44] <jpfarias> maybe no one ever thought of removing more than one shard at a time...
[12:56:47] <jpfarias> :)
[12:58:46] <flaper87> Hey guys, is there a difference, performance wise, between this to queries ? http://bpaste.net/show/lSoPHu6wPxtzO3k0LXSl/
[13:02:00] <remonvv> jpfarias, doubtful, we have to regularly ;)
[13:02:24] <remonvv> flaper87, very little at best. There's a wee bit of additional logic for $in
[13:02:29] <remonvv> But the matching is the same
[13:04:02] <jpfarias> 10% of the backup of the 12M collection done
[13:04:06] <jpfarias> :P
[13:04:23] <jpfarias> might go faster then I thought
[13:04:43] <jpfarias> 1h30m ~ 2h maybe
[13:04:52] <Nodex> 42 seconds
[13:05:01] <flaper87> remonvv: thought so, thanks!
[13:05:44] <remonvv> jpfarias, patience is a virtue and all that
[13:05:47] <remonvv> flaper87, np
[13:06:07] <Nodex> I was ging to be a doctor but I didn't have the patience
[13:07:27] <Nodex> going *
[13:08:48] <remonvv> Slow day at work? ;)
[13:10:51] <Nodex> annoying day, trying to get round a problem and can't :/
[13:11:02] <remonvv> Let us inpsire you
[13:18:22] <Nodex> I need to hear a good joke
[13:18:51] <remonvv> All good code is written in BASIC
[13:22:29] <Nodex> haha but that;s true init?
[13:22:45] <remonvv> Depends on who you ask and in what year
[13:23:22] <Nodex> I thought it was true for all times
[13:25:17] <remonvv> Certainly not. It's Fortress now.
[13:25:34] <Nodex> see, as soon as you told me a joke, I came up with the answer to my problem :D
[13:25:51] <remonvv> Awesome. Do you have my bank account number?
[13:26:24] <Nodex> is it sitll 123456789 + 42 ?
[13:26:27] <Nodex> still *
[13:28:51] <jpfarias> 42 is the answer to everything
[13:30:34] <jpfarias> guess I have a couple hours to play wow now while the backup is going
[13:39:48] <CIDIC> has anyone installed mongodb on os x?
[13:39:58] <CIDIC> I haven't been able to get it to install using macports
[13:42:59] <rspijker> CIDIC: I have
[13:43:10] <CIDIC> rspijker: how did you do it?
[13:43:10] <rspijker> not using macports though
[13:43:15] <rspijker> I used brew, I believe
[13:43:18] <rspijker> let met verify for you
[13:43:28] <jpfarias> I did with the bin package from mongodb.org
[13:43:47] <rspijker> yeah, I used brew
[13:45:23] <rspijker> CIDIC: start using homebrew and forget about macports forever, you will be happier for it
[13:50:02] <jpfarias> CIDIC: or use mongodb.org packages
[13:50:02] <jpfarias> :)
[13:54:50] <tadasZ> hi guys, I have a little problem, it's not mongodb problem, but maybe some of you uses php and gets "couldn't find file size" exception when trying to get files body with getBytes() ? sorry if its wrong place to ask such question
[13:57:11] <Nodex> please pastebin your error
[13:57:16] <Nodex> the full stack
[14:01:42] <jmar777> off topic, but anyone have any suggestions for a less buzzy way to say "Big Data"?
[14:02:31] <tadasZ> Nodex: http://pastebin.com/1bVJGriA
[14:19:02] <CIDIC> what is the best way to test if it is installed correctly?
[14:19:02] <jpfarias> CIDIC: run a mongod server and try to connect to it
[14:19:04] <remonvv> jmar777, depends. Context?
[14:19:05] <jpfarias> jmar777: "huge amounts of data"
[14:19:05] <jpfarias> :P
[14:19:05] <jmar777> jpfarias: lol... that works
[14:19:06] <jmar777> jpfarias: context is a slidedeck in the theme of "scaling is specialization"
[14:19:06] <Nodex> tadasZ : that;s from Mongo ?
[14:19:06] <Nodex> (the error)
[14:19:07] <jmar777> jpfarias: showing a trend from COTS Databases -> Open Source Counterparts -> Specialized Solutions atop OS
[14:19:07] <jmar777> remonvv, last comment was for you ^^
[14:19:07] <Nodex> what does "less buzzy" mean?
[14:19:08] <jmar777> Nodex: something that wouldn't make my eyes glaze over if I was in the audience :)
[14:19:09] <Nodex> I don't know what that means either
[14:19:09] <Nodex> peoples eyes glaze over for a number of different reasons
[14:19:10] <jmar777> Nodex: sorry. "Big Data" just gets thrown around and abused an awful lot (kind of like how "Ajax" did).
[14:19:11] <Nodex> yeh I understand that ... I also don't consider anything ,ess than a few TB big data
[14:19:11] <Nodex> less **
[14:19:11] <jpfarias> Nodex: imagine you were watching a speech where the guy kept saying "Big Data" every other sentence
[14:19:11] <jmar777> Nodex: seems like it's become more of a marketing phrase than something that has meaning
[14:19:12] <Nodex> sorry, I misread your question. I thought it said "store big data" not "say"
[14:19:12] <Nodex> my bad
[14:19:12] <jmar777> Nodex: ahh, np
[14:19:12] <Nodex> lmao
[14:19:12] <Nodex> no wondr I was confused
[14:19:13] <jmar777> Nodex: :p
[14:19:14] <Nodex> not sure there really is another way to say or to mean "large data" tbh
[14:19:14] <BurtyB> "more data than del boy could shift"
[14:19:15] <Nodex> cloud scale data ?
[14:19:15] <remonvv> I agree. And how does amount of data tie in to that trend you think?
[14:19:15] <jmar777> So, on principle, I'm just going to say that "Big Data Analytics" doesn't work, so I'm going to go with "Large Scale Data Processing" unless something better comes up
[14:19:15] <jmar777> BurtyB: haha
[14:19:16] <Nodex> you could intergchange "Large" with "Giga, Terra, Peta...."
[14:19:16] <Nodex> Peta scale has a ncie ring to it
[14:19:17] <Nodex> nice *
[14:19:17] <jmar777> remonvv: general purpose databases are like sporks... they're reasonably suitable for soup, salad, and sometimes they even have little blades on the edge for spreading butter...
[14:19:17] <Nodex> spork is like spandex
[14:19:19] <jmar777> remonvv: but if you need to slice through a nice 32 oz sirloin, you really want a steak knife
[14:19:40] <jmar777> remonvv: it's a specialized tool that's incredibly effective at cutting through steak, but the cost is you can't really eat your soup and salad with it
[14:20:14] <jmar777> remonvv: in general I think that describes the NoSQL movement... it's a shift from general purpose databases that are sortta ok at everything, but not great at any one thing
[14:20:19] <tadasZ> Nodex: what do you mean whats from mongo? I think my mongo-php-driver throws this exception, only description i find is "14 couldn't find file size The length property is missing"
[14:21:18] <jmar777> Nodex: Peta scale does sound nice
[14:21:42] <remonvv> jmar777, I'm familiar with the trend ;) I just don't see the direct relationship with big data.
[14:22:04] <remonvv> I don't think the major driving force behind people going for domain specific solution is big data.
[14:22:13] <remonvv> solutions*
[14:22:50] <Nodex> tadasZ : that might be your framework spitting that out - this is what I am trying to determine
[14:22:51] <jmar777> remonvv: i agree with that in general, but in the case of scalability issues, specialization at the database level is a driving factor
[14:24:07] <jmar777> remonvv: take cassandra... the first use cases were around needing incredibly high volume transactions. cassandra is specialized for that, but in return you end up with crappy range operations
[14:24:57] <jmar777> remonvv: or mongodb. awesome for (un|semi)-structured data, but you give up joins.
[14:25:47] <jmar777> remonvv: or hadoop... high volume, ad hoc queries... but miserable response times.
[14:26:07] <Nodex> each tools spefic for certain jobs, none claim to be all round replacements
[14:26:17] <Nodex> each are tools *
[14:26:44] <jmar777> Nodex: exactly (hence the spork vs. steak knife analogy)
[14:28:54] <tadasZ> Nodex: thank you, I'll try to debug it further, maybe you're right
[14:29:20] <Nodex> I've not seen the PHP driver spit that out before
[14:29:41] <remonvv> jmar777, Sure but that's still not necessarily big data related. It's more CAP theorem, cost, durability, able to deal with nodes with low MTBFs and so on. That's what driving people to move to solution that fit their exact needs. Sure if big data is a need it will affect storage solution choices.
[14:31:16] <jmar777> remonvv: still agree with you in general, there. the context of my talk though is high volume data, and in that context it is a driving factor. admittedly that doesn't make it universal though
[14:31:43] <remonvv> jmar777, ah okay. Wasn't aware the talk itself was mostly data volume oriented ;)
[14:32:10] <jmar777> remonvv: i suck at explaining myself. good thing i'm having a trial run here :)
[14:32:19] <remonvv> ;)
[14:32:33] <jmar777> remonvv: actually i should hardly call it a talk... it's a 5 minute lightning round lol
[14:32:48] <jmar777> remonvv: but it should make for good blog fodder if nothing else
[14:33:09] <remonvv> jmar777, I'm curious to see the end result ;)
[14:33:28] <jmar777> remonvv: i'll try to remember to post something when it's done
[14:34:08] <remonvv> Anyway, if you feel tickled by using the term "Big Data" just use less weighty alternatives or put it in longer phrases.
[14:34:27] <remonvv> Although, being annoyted by people using it in the wrong context shouldn't stop you from using it in the right one I'd say.
[14:35:37] <jmar777> that's a good point
[14:36:22] <jmar777> i think my reaction is partly based on how I know I respond when other people throw it around... but i'm just cynical like that sometimes
[14:38:33] <remonvv> Well I don't know. Most people should be able to determine what is meant in a specific context when someone says "Big Data". I'll agree it's overused and misused though.
[14:39:10] <Nodex> and Nosql
[14:39:27] <ron> nosql is for pussies
[14:39:39] <Nodex> you are a pussy ron
[14:40:07] <ron> that's why I use nosql :D
[14:40:10] <Nodex> :P
[14:46:29] <statu> hi all! I have a User schema and it has a list of friends (_id of other users). I am developing the getFriends(arrayOfFriends) method and, in order to develop it, I am going through each element of the array in the schema and retrieving the complete object from MongoDB. When I have all the user, I put them in an array and I return it. There is an easier way to do that?
[14:47:14] <Nodex> you can do an $in
[14:47:37] <ron> $in is very close to sin. just saying.
[14:48:02] <jpfarias> it's a sin with money
[14:48:11] <statu> haha
[14:48:27] <statu> http://docs.mongodb.org/manual/reference/operator/in/ you are talking about that, doesn't it?
[14:48:46] <jpfarias> yes
[14:48:47] <Nodex> yes
[14:48:54] <statu> okis
[14:48:58] <statu> thank you!! :)
[14:49:25] <Nodex> your app really wont scale well, you should consider a graph database for this kind of lookup
[14:50:10] <jpfarias> Nodex: what's wrong with that?
[14:50:39] <Nodex> with related / joined data ?
[14:51:02] <jpfarias> as long as he only query for the related that when needed it should be fine
[14:51:06] <statu> Nodex, Can MongoDB storage references instead of references?
[14:51:19] <Nodex> jpfarias : it wont scale well period, there is no "ifs" about it
[14:51:33] <jpfarias> that's an odd statement
[14:51:34] <jpfarias> lol
[14:51:44] <Nodex> ok :)
[14:51:49] <statu> *References instead indexes, sorry
[14:52:02] <Nodex> statu : references are a convention, mongo does nothing special with them
[15:10:15] <jpfarias> Nodex: I think some drivers will auto load references
[15:10:18] <jpfarias> not sure tho
[15:10:29] <Nodex> no drivers do. some orm/odm's do though
[15:10:35] <jpfarias> oh, true
[15:10:41] <jpfarias> I think mongoengine does that
[15:10:47] <jpfarias> on top of pymongo
[15:11:09] <Nodex> pass - personaly in my opinion it encourages BAD schema design
[15:11:36] <Nodex> + bad performance design- it doesn't make people think enough about their data and getting the best out of it
[15:32:21] <caitp> people suck at data modelling, nothing new about that
[15:32:38] <caitp> I don't think automatic "joins" are really making it any worse
[15:37:37] <caitp> and then you pair that with the fact that relational database theory is like half a century old or more, and nosql/document-oriented is much more recent and less widely understood
[15:39:43] <caitp> they teach you to normalize that data and use joins, and people apply that to NoSQL too, because there's no real widely distributed body of knowledge and principle for NoSQL, but there is for the relational model
[15:40:40] <caitp> and so the only way you really acquire that knowledge in the NoSQL world, is through personal experience and vague poorly written blog posts
[15:40:47] <caitp> or chat with colleagues
[15:41:14] <Nodex> caitp : making unnessecary joins makes it worse, and relying on your ORM to do it for you is even worse
[15:42:00] <caitp> for the most part it doesn't make that much of a difference -- for the cases where it does make a huge difference, where the data sets are gigantic and the audience is large, people find ways around it
[15:42:06] <Nodex> people cannot fully apply relational thinking to non relational databases. Making tools / easy ways that erase the need to rethink these things is BAD
[15:42:38] <caitp> sure it's bad, but you can't just say "it's bad" and not offer something good
[15:42:45] <caitp> like, therein lies the proble
[15:43:21] <caitp> it's a relatively new technology, people don't understand the theory, their college professors didn't drill it into them for 3 years, there aren't very many books on it, etc
[15:43:23] <Nodex> it's not my job to offer something good
[15:43:30] <Nodex> I worked it out myself, why can't other people
[15:43:31] <caitp> so it's no surprise that it's not there
[15:43:46] <caitp> people do work it out by themselves
[15:43:54] <caitp> they might happen to be colleagues of yours while they are working it out for themselves
[15:43:59] <Nodex> the theory is simple, it's pure common sense
[15:44:02] <caitp> or you might see them ask on stackoverflow or something
[15:44:07] <caitp> no, nothing is ever pure common sense
[15:44:34] <caitp> if you ever think something is pure common sense, it's because you're too close to it
[15:44:35] <Nodex> I don't agree
[15:44:44] <Nodex> but you're entitledd to your own opinion
[15:44:49] <caitp> it's like people who don't comment their own code and assume everyone can understand it
[15:45:25] <Nodex> the main difference between -most people- and me is I was not taught robot programming in some school
[15:45:27] <caitp> and then after a few weeks of distancing themselves from it "oh shit wtf did I evne write"
[15:46:14] <deepy> caitp: I take that opportunity to refactor my code
[15:46:23] <deepy> Can I call it a strategy?
[15:46:38] <Nodex> I rarely see code of mine that I revisit and think "omg wtf did I write"
[15:46:39] <caitp> you can, but it's still likely to make productivity falter :)
[15:47:57] <caitp> oh it happens to everybody some of the time
[15:48:17] <Nodex> hence the "rarely"
[15:48:30] <caitp> but the point is just to illustrate what happens when you're too close to the problem; it seems obvious when you're close to it, it seems like common sense
[15:48:40] <caitp> but once you distance yourself from the problem a bit, it becomes completely alien
[15:49:08] <Nodex> I don't agree
[15:49:13] <caitp> the relational model is old and has been thus integrated more closely with people, so it seems more obvious (although not as obvious as riding a bike)
[15:49:21] <Nodex> what's the obvious answer to this. 3 queries to render a page or 1 ?
[15:49:53] <caitp> the obvious answer is simpler is better
[15:50:31] <Nodex> view?
[15:50:51] <Nodex> caitp : correct so how does distancing yourself from that question make it alien ?
[15:51:24] <caitp> because when something is right in front of you, it's very familiar and obvious -- when you're very involved with a problem, it becomes intuitive and natural
[15:51:29] <caitp> like playing an instrument or painting
[15:51:48] <Nodex> it's nothing like playing an instument, it's a simple logical question. 1 or 3
[15:51:59] <caitp> no, it's exactly like it
[15:52:05] <Nodex> ok :)
[15:52:33] <Nodex> i can't play an instument but I can choose 1 or 3 - my mistake - they're exactly the same
[15:52:55] <caitp> you're a vocalist, you intuitively understand how to shape the timbre of your voice, you have a feel for the upper and lower bounds of your pitch registers -- but now you're told to play the drums instead
[15:53:03] <caitp> and you have no idea how that process even works
[15:53:12] <caitp> the vocal model doesn't fit the drum model
[15:53:49] <caitp> in the same way, the relational model might be perfectly obvious to you, but once you're asked to play the object-relational or document models, things become less obvious
[15:53:57] <Nodex> but you know if you hit the drum once a second you will tap out a rhythm
[15:54:09] <Nodex> this is where you're wrong. Forget the MODEL
[15:54:26] <caitp> the model is how you think
[15:54:35] <Nodex> forget how XYZ does things. ask yourself the simple questions. which is faster .... 1 or 3
[15:54:51] <deepy> faster to write or execute?
[15:55:22] <caitp> that is a good point deepy! but also, as much as we emphasize its importance, people often don't measure
[15:55:24] <Nodex> write what?
[15:55:31] <Nodex> execute what ?
[15:56:01] <caitp> so how do you know it's faster or slower if you don't measure? and how do you know you care? if it's not a problem, you don't care
[15:56:14] <caitp> which is why these things really don't hurt, for the most part
[15:57:06] <Nodex> 1 query or 3, what do you think is faster?
[15:57:18] <caitp> if you can read and understand the queries, and the performance is "good enough", you're happy
[15:57:25] <deepy> Nodex: neither is guaranteed to be faster or slower
[15:57:37] <Nodex> happy is not good enough. why build somehting that;s not the best it can be?
[15:57:43] <Nodex> deepy : ok LOL
[15:57:50] <caitp> nothing is ever the best it can be
[15:58:08] <caitp> and if you won't release anything that isn't, you'll never ship
[15:58:39] <Nodex> and yet I ship every day
[15:58:52] <caitp> then your stuff isn't the best it can be, now is it :p
[15:59:03] <caitp> and that's not a bad thing
[15:59:04] <Nodex> I beg to differ, it doesn't get any faster
[16:11:21] <PaulECoyote> Morning. I've got a replication set of mongos up on ec2 on Ubuntu images, I can get to the web interface etc. But status mongodb seems to think it is stopped when it obviously is not
[16:11:57] <PaulECoyote> I think the start-stop-dameon could be wrong in mongo.conf because it doesn't use a pid file?
[16:12:35] <PaulECoyote> but I don't know, pretty new at all this. Happy it seems to be working, but would prefer the service status to be correct
[16:38:20] <dan__t> 'morning! let's try this in the right channel, eh?
[16:38:31] <dan__t> Still working on this one, where I want to set up a replica set on one node, when the two other nodes might not yet be available. Can I do this? I'm currently working with http://pastebin.com/PNGRdPth . When I run it against mongo, though, it doesn't seem to include other nodes in replication, presumably because they don't yet exist.
[16:38:37] <dan__t> Is there any way to override that and just have this instance of Mongo wait for other nodes to come up?
[16:42:35] <PaulECoyote> I dunno. I'm new to this also. Using a heavily modified cloud formation script so I can get it working on ubuntu
[16:42:56] <PaulECoyote> I have the set working, but it doesn't think the service is running even though it is
[16:43:27] <PaulECoyote> the way the scripts do it is to wait for the other servers to spin up first
[16:44:05] <PaulECoyote> then send that config last
[17:31:40] <lazrahl> So, text indexes in 2.4 is beta even in the final release?
[17:32:12] <lazrahl> I see a note about that in the tutorial on enabling the feature, but not in the main doc page.
[19:10:19] <kali> hey
[19:53:25] <sqler> How do I do something like the following in MongoDB? select count(*),t1.a,t1.b from t1, t2 where (t1.id = t2.t1_id) and (t2.t1_id in (select id from t1 order by id desc limit 10)) group by 2,3 order by 1 desc
[19:56:26] <retran> you write a procedure for it
[19:56:44] <retran> mongo doesn't have a structured query interface
[19:58:29] <sqler> I'm using the Java driver, and I've managed to do everything except the nested select. I have to run the outer query 10 times, once for each of the values generated by the nested select.
[19:59:11] <sqler> Doing this seems rather brute force and ignorance as it causes 10 scans
[19:59:51] <sqler> I'll have to add indexing to minimize the scan time
[20:02:12] <Michae___> hi channel
[20:02:37] <Michae___> currently experiencing a problem with chunks not splitting
[20:03:14] <Michae___> did such a thing occur to you before?
[20:17:30] <kali> sqler: what you do is a join, and this is deliberately left out of scope by mongodb. you can maybe improve your queries by using $in
[20:18:42] <sqler> kali: thanks, I am using $in for the outer query, and I do have a query for the inner top ten list
[20:19:39] <sqler> kali: I guess I'm doing it "right". Now I'll have to add indexing to make it faster
[20:19:59] <kali> sqler: mmmm yeah, that actually sounds right
[20:20:40] <retran> why woudln't have you not been indexing already?
[20:21:08] <sqler> retran: No reason, just didn't get to it yet.
[20:21:42] <retran> that's a massive resource waste, once you deploy in production, not to have your queries indexed
[20:22:20] <retran> i usually have my development servers configured to refuse queries that require table-scan
[20:22:25] <sqler> retran: Yeah, I'll bet, but you do pay for the indexes in insert performance
[20:22:36] <retran> you're not familiar with mongodb
[20:22:43] <retran> mongodb has background indexing
[20:22:58] <kali> retran: this only impacts initial indexing
[20:22:59] <sqler> Not much, about 3 days experience };-)
[20:23:07] <retran> this isn't the same as mysql
[20:23:17] <sqler> Ah, that's good to hear.
[20:25:03] <retran> hmmm you're right kali
[20:26:36] <alchimis_> hi how to write a query in mongodb that equals to this: select * from users where id in array
[20:26:42] <retran> indexing always has an expense
[20:27:17] <kali> retran: yeah. the no scan option is a bit extreme to my taste to be fair
[20:27:50] <retran> for production system it's pretty wasteful to have scans
[20:28:11] <retran> unles it's something ad-hoc
[20:28:25] <kali> retran: depends, it can be tolerable in an async or batch context
[20:28:26] <Michae___> alichimis_: db.users.find({ "id" : { "$in": [23, 35, 42] });
[20:28:34] <retran> i'd never want a query in my app to not use an index
[20:28:44] <Michae___> alichimis_: db.users.find({ "id" : { "$in": [23, 35, 42] } });
[20:28:44] <sqler> I'm no MongoDB expert, LOL, but my MySQL experience tells me that full scans on lots of data is **BAD**
[20:28:46] <kali> retran: or on ops that actualy needs to process a huge part of the collection
[20:30:51] <retran> if you have an edge example where you need lots of indexes but not slow down your inserts one little bit, you're probably in a situation where you can give up consistency and have a process to merge the new inserts to a collection that is properly indexed
[20:31:10] <retran> or have some recurring process that merges data togather indexed as needed
[20:34:29] <kali> retran: i'll give you an example: you user documents, _id is the login, the email is a separate field. you have an accept_newletter boolean, which is true for 95% of your user base
[20:35:24] <kali> retran: when you send your newsletter, you'll actually select the 95% of the documents that are "true". in that case, having an index on the boolean is probably counter productive.
[20:36:24] <kali> retran: because you'll access the whole collection anyway, and in the index order, instead of a scan in the natural order
[20:36:48] <kali> retran: plus the index cost on updates (and in memory)
[20:36:49] <alchimis_> hi anyone read my qieston?
[20:36:52] <retran> right if that query isn't very frequent
[20:36:52] <alchimis_> any idea?
[20:37:20] <kali> alchimis_: what about michae___ answer ?
[20:37:27] <retran> but you'd have to have so many inserts
[20:37:35] <retran> to have the insert speed matter :|
[20:37:46] <kali> retran: memory is a factor too
[20:37:47] <alchimis_> retran: thank you
[20:37:47] <retran> for usernames, to have a wildly huge number of usernames inserted
[20:38:00] <alchimis_> actually i did saw that, now I am goanna try
[20:38:02] <retran> i see that as edge case
[20:38:24] <kali> retran: sure, it's a edge case, but a real life case
[20:38:55] <retran> have you tested and profiled anything similar to your example
[20:39:05] <retran> to show it really has a higher memory overhead
[20:39:27] <retran> (significant impact on memory)
[20:39:47] <kali> retran: the index will be kept in memory (because of the updates)
[20:40:18] <kali> retran: and it's useless.
[20:40:21] <retran> i'm curious the speed difference of returning that query witha conditioni on the boolean with and without index
[20:40:36] <retran> if there's no speed difference, indeed, a useless index :|
[20:40:41] <retran> so no argument there
[20:40:41] <SparkySparkyBoom> does mongodb have any caching for queries?
[20:40:50] <kali> SparkySparkyBoom: nope
[20:40:57] <SparkySparkyBoom> :/
[20:41:08] <SparkySparkyBoom> i should probably implement my own
[20:41:20] <retran> what do you think this is, couchdb?
[20:41:46] <SparkySparkyBoom> hmm
[20:41:58] <SparkySparkyBoom> that seems like a good idea
[20:42:07] <SparkySparkyBoom> ive never worked with couchdb before though
[20:42:14] <retran> sounds more up your alley
[20:42:30] <SparkySparkyBoom> does it TTL?
[20:42:32] <SparkySparkyBoom> *have
[20:42:35] <retran> you wanna be able add layers to the interface
[20:43:04] <SparkySparkyBoom> i have very little experience with mongodb
[20:43:05] <retran> i'd have to look closely at couch
[20:43:14] <retran> but.. it has caching
[20:43:26] <retran> and i dont know of any decent caching that isn't impelmented with TTL
[20:43:39] <SparkySparkyBoom> im scared of creating nested documents
[20:43:53] <SparkySparkyBoom> because of the 16MB limit
[20:44:05] <retran> be scared of them unless you rarely need to select/query them individually
[20:44:33] <SparkySparkyBoom> oh
[20:44:38] <retran> probably 3/4 of questions in here are ppl frustrated with them
[20:44:48] <retran> lol
[20:45:10] <retran> though, i've never heard the 16MB constraint as one of the issues being faced
[20:45:22] <SparkySparkyBoom> i have to store a large list
[20:45:35] <SparkySparkyBoom> i ended up storing each value in the list as a document
[20:45:39] <SparkySparkyBoom> and each list as a collection
[20:45:58] <retran> mongo's strength is its simplicity so far
[20:46:00] <retran> to me
[20:46:19] <SparkySparkyBoom> same
[20:46:21] <retran> i can implement new web services very fast, faster than i have in the past
[20:46:23] <SparkySparkyBoom> it's so fast to get started
[20:46:35] <SparkySparkyBoom> there a ton of drivers too
[20:46:45] <retran> and i found there's not *that much* penalty (as you might expect) for manually linking documents
[20:47:00] <SparkySparkyBoom> isnt just an expensive join though?
[20:47:00] <retran> as you'd have in an RDBMS for example
[20:47:05] <SparkySparkyBoom> yea
[20:47:07] <retran> no,
[20:47:10] <retran> it's not hte same penalty
[20:47:11] <SparkySparkyBoom> i pretty much ended up doing that
[20:47:18] <SparkySparkyBoom> how is it not?
[20:47:20] <retran> mongo is so quick at it
[20:47:21] <SparkySparkyBoom> 2 different queries
[20:47:22] <SparkySparkyBoom> o
[20:47:25] <SparkySparkyBoom> h
[20:47:26] <retran> and a JOIN does the same thing
[20:47:30] <retran> just the server does it
[20:47:38] <retran> (in an RDBMS)
[20:47:46] <SparkySparkyBoom> ah i see
[20:47:57] <SparkySparkyBoom> in the mongodb environment the driver does the heavy lifting
[20:48:03] <retran> you can profile/benchmark it in mongo
[20:48:22] <retran> but things seem absurdly fast to me so far
[20:48:34] <retran> i've even linked across diff mongo servers without much issue
[20:48:43] <SparkySparkyBoom> ive never tried sharding before
[20:49:59] <retran> just an example, i have the placed the entire IMDB database in mongo, and it runs on a 1GB digitalocean machine, created a webservice using it, gives me results in 0.01 sec
[20:50:29] <retran> i have all 'flat' document schema
[20:50:38] <SparkySparkyBoom> flat means non-nested?
[20:50:42] <retran> yeah
[20:50:54] <SparkySparkyBoom> huh
[20:50:57] <SparkySparkyBoom> wow
[20:51:00] <retran> but the nesting i'm sure has it's purposes
[20:51:05] <SparkySparkyBoom> how big is this db?
[20:51:37] <retran> 15GB
[20:51:56] <SparkySparkyBoom> wow
[20:52:02] <SparkySparkyBoom> so not all loaded in memory, then
[20:52:13] <retran> in a 1GB digital ocean VPS, 1GB refers to memory size
[20:52:17] <retran> yeah i guess not
[20:52:20] <retran> not all loaded in mem
[20:53:08] <retran> i thought i'd have to do a lot more optimzing, tinkering
[20:53:18] <retran> but so far biggest issue was building the indexes
[20:53:24] <retran> the time it took for that
[20:53:36] <retran> (pretty damn long)
[20:57:07] <SparkySparkyBoom> i havent used mongodb for much more than storing lists
[20:59:39] <SparkySparkyBoom> lol the arch repos have couchdb 1.4.0pre-1
[21:07:38] <retran> yeah you could always choose to implement query caching at the application level
[21:07:54] <retran> but what would you use for it, something like memcache
[21:08:00] <retran> and that's exactly what couchdb is
[21:08:21] <retran> memcache with disk consistency
[21:09:25] <retran> i'm curious to know your usage example, sparky
[21:09:38] <retran> where you feel you're going to benefit from query caching?
[21:10:24] <retran> al my mongo usage so far has been as storage for hastily made web services
[21:10:44] <retran> which have caching done at the hTTP level (before it touches mongo)
[21:12:20] <SparkySparkyBoom> im using the java-driver
[21:12:37] <SparkySparkyBoom> essentially i get an iterator from the db
[21:12:45] <SparkySparkyBoom> and i have to search through everything myself
[21:13:02] <SparkySparkyBoom> im prematurely optimizing
[21:13:37] <retran> i'm stil no more edifyed regarding your usage example
[21:13:53] <SparkySparkyBoom> oh
[21:13:57] <SparkySparkyBoom> it's just a bunch of lists
[21:13:58] <SparkySparkyBoom> of stuff
[21:14:10] <SparkySparkyBoom> strings
[21:14:17] <SparkySparkyBoom> i'd rather not go into detail
[21:14:45] <SparkySparkyBoom> basically each user is associated with bunch of mongodb collection
[21:15:01] <retran> i think you'd benifit more from application controlled query caching
[21:15:13] <retran> just using something simple like memcache
[21:15:17] <SparkySparkyBoom> yea, i could always just use a hashtable
[21:15:43] <retran> do an md5 sum on the query, use that as key for results
[21:15:50] <SparkySparkyBoom> huh
[21:15:52] <SparkySparkyBoom> cool
[21:15:53] <retran> if it exists in memcache, grab it, otherwise
[21:15:59] <retran> give it to mongo
[21:16:13] <SparkySparkyBoom> that's a good idea
[21:16:15] <retran> memcache will automatically purge as it runs out of mem
[21:16:19] <SparkySparkyBoom> i was thinking of using redis though
[21:16:26] <SparkySparkyBoom> never worked with memcached before
[21:16:53] <retran> memcache is the barest of bones for key/val stores
[21:17:08] <retran> makes it ideal for application controlled caching
[21:17:54] <SparkySparkyBoom> that actually sounds doable
[21:17:54] <retran> you'd have to implement a TTL on it yourself though
[21:18:14] <SparkySparkyBoom> i think memcache removing old entries is good enough for me
[21:18:18] <retran> could be as simple as saving the timestamp of when the result was saved
[21:18:21] <SparkySparkyBoom> yea
[21:18:33] <SparkySparkyBoom> but i would need a background thread/process looking for the timestamps
[21:18:43] <retran> wel you could check it
[21:18:45] <SparkySparkyBoom> http://docs.mongodb.org/manual/tutorial/expire-data/
[21:18:46] <retran> in your app
[21:18:48] <retran> but yeah
[21:19:16] <retran> a background proc would elimiate need for app to check timestamp each time
[21:19:39] <retran> have to choose where you want complexity
[21:24:05] <titosantana> I'm trying to use the aggregate
[21:24:05] <titosantana> http://pastebin.com/z83B1EFW
[21:24:10] <titosantana> this is what my pipeline looks like
[21:25:10] <titosantana> and this is the result I'm getting
[21:25:11] <titosantana> http://pastebin.com/aVQKbjx6
[21:26:09] <titosantana> I'm confused how i can make the subdocument articles unique and create a score for each article based on a few things like if there is a : in the title
[21:42:15] <leifw> jpfarias: point queries (exact and $in queries) do, range queries don't
[21:42:52] <jpfarias> leifw: that's good, means I probably don't need the a second index on that field on my application :)
[21:43:09] <jpfarias> I used a hashed index to shard my collection
[21:43:22] <jpfarias> and also have a normal index which seems I don't need
[21:43:37] <titosantana> i tried using addToSet but it didn't do what i expected
[21:43:39] <jpfarias> all my queries on that field are exact or $in
[21:43:46] <leifw> if you don't do range queries, a hashed index is an excellent choice of shard key
[21:44:24] <SparkySparkyBoom> retran: im really liking futon
[21:46:41] <retran> is futon some couch thing
[21:47:17] <SparkySparkyBoom> yup
[21:47:24] <SparkySparkyBoom> it's the web interface for couchdb
[21:52:04] <retran> oh
[21:52:14] <retran> cool
[21:52:18] <retran> and couch is all REST interface
[21:52:25] <retran> there's no such thing as a 'native' driver for it
[21:52:30] <retran> (for better or for worse)
[21:53:19] <retran> basically it means, you wont need to search for a driver. anything that can make HTTP calls can use couch
[22:04:24] <SparkySparkyBoom> retran: pretty much
[22:04:31] <SparkySparkyBoom> but it's always nice to have a wrapper library
[22:05:12] <retran> sure
[22:05:18] <SparkySparkyBoom> yea
[22:05:28] <SparkySparkyBoom> im hating the lack of drivers for couchdb atm
[22:05:40] <retran> they dont have them b/c they're not needed
[22:05:44] <retran> like you say, just wrappers
[22:06:00] <retran> convinence wrappers
[22:06:00] <SparkySparkyBoom> easier to use a wrapper
[22:06:16] <SparkySparkyBoom> it's just rest though
[22:06:18] <SparkySparkyBoom> _method
[22:06:20] <retran> i would be surprized if it took very long to impelment your own
[22:06:55] <SparkySparkyBoom> im looking at a wrapper atm
[22:07:01] <SparkySparkyBoom> and there are only like 15 classes
[22:07:58] <SparkySparkyBoom> does your work run on the jvm?
[22:19:50] <retran> my clients are all php shops
[22:19:56] <retran> no java goodness :p
[22:22:08] <SparkySparkyBoom> oh cool
[22:26:39] <SparkySparkyBoom> retran: what do you do?
[22:27:05] <retran> lead developer, sysadmin, CTO for hire :p
[22:27:20] <SparkySparkyBoom> ah
[22:27:37] <SparkySparkyBoom> well i just got out of high school
[22:27:49] <SparkySparkyBoom> off to go learn how to build sentries
[22:27:52] <SparkySparkyBoom> and disable landmines
[22:28:12] <retran> for pr0n sites
[22:28:23] <SparkySparkyBoom> isnt that every guy's dream job
[22:37:07] <SparkySparkyBoom> retran: http://www.youtube.com/watch?v=9jA53IkHZJg#t=74s
[22:37:11] <SparkySparkyBoom> took a while to find this
[22:37:13] <SparkySparkyBoom> but it's worth it
[22:39:26] <retran> just kiddin i dont work on pr0n sites
[22:39:34] <retran> the next worst thing
[22:39:36] <retran> dating sites
[22:44:20] <SparkySparkyBoom> ah
[22:44:43] <SparkySparkyBoom> ill be at least 40 before i try dating sites