Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This is an architecture question. If there is a better forum, please redirect me. Apologies in advance.

Essentially every website is built around a relational database, right? When a user uploads form data, that data is stored in a table. The problem is that the table structure(s) need to be modified whenever the website form is modified. Although I understand that modern web frameworks work around this problem by automatically building forms based on the table structure.

For the last 20 years, I have been building websites using Perl. When I first encountered this problem, the easiest solution was to save serialized Perl objects as data BLOBS. After XML's introduction, this solution worked even better because XML is so effective for representing arbitrary data. This approach is consistent with the original Perl principles of Hubris, Laziness, and Impatience and I'm pretty committed to it.

Obviously, the biggest drawback is that this solution locks me into the Perl interpreter. So instead, I've just completed a prototype of a universal RDB table. The prototype is written in Perl but porting it to PHP will be a good chance to develop those skills. The principal is based on the XML::Dumper module, which converts arbitrary Perl data structures into uniform XML. With my approach, each XML node is stored as a table record.

I underestimated this undertaking and rolled something up myself. But the effort allows me to discuss the basic design instead of implementation details.

  1. As mentioned, I'm pretty committed to this approach of using flexible data structures. It's been successfully deployed on many websites, large, and complex. But are there any drawbacks I've overlooked?

  2. I rolled my own. Are other people taking a similar approach to their data? What kinds of solutions are available?

  3. I have not abandoned my dream of eventually contributing something useful to the worldwide community. In order to proceed, the next step would be peer review. How does one pursue that effort?

share|improve this question

migrated from stackoverflow.com Aug 30 '12 at 23:28

This question came from our site for professional and enthusiast programmers.

You have a flexible-schema data store for serializing arbitrary objects? That's cool, but the question you should be asking yourself is whether there's anything it does that MongoDB doesn't already do better. –  fennec Sep 19 '12 at 2:39

2 Answers 2

Hmm. Crowd-sourcing seems to be harder than it looks. Your suggestions make perfect sense, except this first post got a somewhat underwhelming response :)

If it's not too late, I was wondering if you could take a look at a website I put together. The website describes the project in a little more detail and as a bonus, there's a working app that uses the module:


It's a little too early to start looking for contributors. I'm thinking of a mentor who can get me to the next step- of something robust enough to for a wide release. In that respect, it's a chicken and egg problem, because it may be too early to promote this in earnest.

Thanks again!


share|improve this answer
I scanned thru your site (really fleetly only), and the 1st question what comes to my mind is "KiokuDB". What is the main difference between your idea and KiokuDB with DBI (SQL) backend? –  jm666 Sep 19 '12 at 7:59
  1. While this seems like a useful tool for collecting data, unless you have also created the tool for then querying the data back, it sounds like it would be a real pain to query arbitrary data. See # 2 for more along these lines.

  2. This looks a lot like some of the popular NoSQL DB engines to me, but in and relational DB. Essentially, in most NoSQL engines, you could stick your entire XML (or JSON or whatever) object into the database as is (like you mentioned), but a lot of the time you can query against specific attributes within that blob.

  3. If you would like to Open Source this the next step would be to select a license and upload it to your favorite code repository (github, codeplex, etc). I would then make some public posts on a blog or otherwise promote the tool to generate some interest in the community so that other people will contribute.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.