I discovered that I could reuse taggee.sourceforge.net for another similar server app. After spending time on adapting the taggee code and get all tests to pass, it dawned on me that there had to be a simpler way of building my storage system. I could make some of the code more general to reduce complexity and greatly reduce the number of almost, but not quite the same methods throughout the system.
The similarities between taggee and what I want to build is that they are storage systems and should be easily scalable with http interfaces. In the case of taggee, the information stored is basically a mapping from url to a list of tags. Of course, there is user specific data as well. I guess the point where they stopped being similar and when I should have abandoned my adaption was when I realized I didn’t need the one to many mapping from url. I don’t think I want to use url as the only canonical id either.
Simplicity always wins so when starting from scratch, I will use Rack to build a RESTful API. Thin currently looks like the server of choice. With the legacy code of Taggee out of the way I guess the resulting code with be less object oriented and more functional.
REST? Storage? Substitute Erlang for Ruby, and it sounds like CouchDB… 🙂
Storage is not the main purpose of what I am building. The need to store a lot of data is there, but the main sauce is what I intend to do with the data. From the outside, the pure storage system and the other stuff should look like a single system.