Storing data url in Mongo DB
data-url, mongodb
Solution
First, I wouldn't store base64 encoded data in a database that is perfectly capable of storing binary data. That's just waste of space. Store the image itself, not its base64 representation, i.e. not `data : "VBORw0KGgoAAAANSUhEUgAAA..."`, but `data : BinData("VBORw0KGgoAAAANSUhEUgAAA...")` (the former is a string for MongoDB, the latter is binary data). Base64 increases the size by 33%.
Other than that, I think this is fine. The trade off is 1 request that grabs all the data vs. multiple requests. The downside of storing larger chunks of data is that all the data must be in RAM for a moment, but at 1MB that's probably a non-issue.
You should, however, make sure that you don't fetch the document in situations where you don't need the image. 1MB isn't too much, but for a read-heavy collection it's a disaster.
Problem
I am considering storing `data-url`s in my mongoDB instead of storing a reference to a file or using GridFS. Data url: ``` data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMcAAAEsCAYAAAB38aczAAAgAElEQV ``` All of the files I am storing are JPG or PNG, and are less than 1MB in size. I am wondering if this is considered bad practice, and what the performance implications for both read and write operations, storing the `data-url`s 1) in a separate collection 2) as meta data in a collection. I'm open to any other suggestions for small file storage.