Well, since no one else tried to answer this question, I will express my opinion. Keep in mind that I never used protobuf (which is why I did not answer already), so all this is based on my free understanding of things and how, if I solved this problem, I would continue.
Firstly, I have reservations about sticking blobs into a relational database. This may come back to my bad experience, returning to the era of VB6 stones and may be invalid, but it still gives me a pause. So, I would probably investigate some other mechanisms for storing objects (like Perst or db4o ) before I try.
As a due diligence, I would at least profile blobs stuffing into the SQLCE database. Why SQLCE instead of SQlLite or some other RDMS? Well, because SQLCE supports TableDirect, which I am a huge fan of. Every time you can access data without using a slow query processor, you move forward.
So, I would create a table, give it some small search columns that I could look for, and then a column of images with a large binary blob (the actual blob is not relevant for the test, but it should be close enough in size to what you expect in production). Then I add indexes for each search column.
I would fill the table with several thousand records, and then profile the speed with which I could search for the desired key (I know it quickly) and, more importantly, the speed with which I can rehydrate my objects.
I would then weigh the costs (time for development, opportunity costs, opportunities for reuse, etc.) of the options and make a decision. Probably, I would also talk about the results, since this seems like a problem that will be of rather broad interest.
ctacke
source share