(2008-10-25) Yegge Properties Pattern

Steve Yegge thinks the Properties Pattern may be the Universal Design Pattern. Semi Structured Data, Prototype Based. Godel Escher Bach references!

I call it the "Universal" design pattern because it is (by far) the best known solution to the problem of designing open-ended systems, which in turn translates to long-lived systems. 2007-01-20-YeggeGreatSoftwareSystems

Trade-Off-s: performance, Data Integrity, querying. I haven't covered the whole landscape for this pattern. There are ConCurrency issues, Access Control issues (e.g. in Wyvern, some properties, such as email address, can only be read by very high-level Wizards), documentation issues, and a host of other considerations.

Persistence: What you really want is a hierarchical data store optimized for loose tree structures: in a word, an XML Database. At the time I was designing Wyvern's persistence strategy (1998-ish), XML databases were pure vaporware, and even after a few years they were still fairly exploratory and unstable. Today things are different, and there are many interesting options for XML databases, ranging from 100% free (e.g. BerkeleyDB-s) through 100% expensive (e.g. Oracle XML). You might also look into Object Data Base-s, but I've never heard of anyone coming through that experience with anything but battle scars to show for it.

Querying is the biggest reason for using an XML database, since it gives you XPath and XQuery as expressive languages that work on XML data about as well (give or take) as SQL works on relational data. Because you have the advantage of working in "these days" (2008+) as opposed to "those days" (1998), you now have the interesting option of using JavaScript/JSON and JQuery. I don't know much about it, but what little I do know seems promising.

Commenters mention: RDF, Atom Standards (extension pattern), Transparent Object Persistence tools, CouchDB


Edited:    |       |    Search Twitter for discussion