I'm not sure if this is the place for this post but I didn't really know what it fell under so I apologize in advance if this belongs in another forum.

I'm looking at creating a new online app for myself and others to store certain types of data. I'd like the ability to display this data in a "versioned" sort of way.

For example, someone uploads some data for people to use. Someone else comes along and likes what they did, but wants to modify it and store it under their collection as well, so they "fork" it. I want anyone to be able to see the changes in this data and view it in almost a Microsoft Word track changes kind of way (not just a compare versions sort of way).

I was looking at doing this using Google App Engine and Python but am curious if what I'm wanting to do would work in the type of DB GAE (distributed I believe) uses efficiently or if hosting it somewhere else and using a "traditional" RDBMS like MySQL would be better.

So what would be the "best" technology to do this with?

It depends a lot on what type of data. If it is structured data (think "Spreadsheet" or "Lists") then it's worth trying to design it as an RDBMS table structure, with appropriate version data tacked on. This limits its flexibility as far as any user being able to upload any data they want, so it might not be that useful.

If it's UNstructured data, then an relational database MIGHT be useful, if it supports "Binary Large Object" (BLOB) data types (that could also include XML datatypes, "IMAGE" datatypes, etc.). Just tack on version information and any other "meta-data" (think "meta-" as used by Gödel, not "metadata" as used by Date/Codd) and store the data "as-is" and let the user figure out what he wants. Searching becomes a bit problematic, but some of the larger DBMS's have ancillary search technologies that allow this sort of thing.

If don't use an RDBMS, then it becomes a little more difficult to attach "meta-data" to the uploaded data, but you also aren't limited to table structure.

I'm sorry I can't be more specific, but the "best" technology is probably the one that you understand the best, and that will get your app to work. Once it works the way you want it, that is the time to explore alternative technologies. Hope this helps!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.