How to efficiently store and update binary data in Mongodb?

Posted by Rocketman on Stack Overflow See other posts from Stack Overflow or by Rocketman
Published on 2012-06-17T08:19:06Z Indexed on 2012/06/17 9:16 UTC
Read the original article Hit count: 211

Filed under:
|

I am storing a large binary array within a document. I wish to continually add bytes to this array and sometimes change the value of existing bytes.

I was looking for some $append_bytes and $replace_bytes type of modifiers but it appears that the best I can do is $push for arrays. It seems like this would be doable by performing seek-write type operations if I had access somehow to the underlying bson on disk, but it does not appear to me that there is anyway to do this in mongodb (and probably for good reason).

If I were instead to just query this binary array, edit or add to it, and then update the document by rewriting the entire field, how costly will this be? Each binary array will be on the order of 1-2MB, and updates occur once every 5 minutes and across 1000s of documents. Worse, yet there is no easy way to spread these out (in time) and they will usually be happening close to one another on the 5 minute intervals. Does anyone have a good feel for how disastrous this will be? Seems like it would be problematic.

An alternative would be to store this binary data as separate files on disk, implement a thread pool to efficiently manipulate the files on disk, and reference the filename from my mongodb document. (I'm using python and pymongo so I was looking at pytables). I'd prefer to avoid this though if possible.

Is there any other alternative that I am overlooking here?

Thanks in advnace.

© Stack Overflow or respective owner

Related posts about database

Related posts about mongodb