I just finished adding binary resource support, and in the process ended
up writing an 'inline' metadata facility, where the metadata is stored
as a header on the data. The metadata facility is enabled and
configured on a per-collection basis.
I'm now re-considering metdata, mostly because I don't think I gave the
existing metadata facility a fair chance, and want to get some group
feedback. There were three reasons why I didn't use Dave Viner's
metadata facility:
1) it doubles the number of disk writes needed when a resource
is inserted/updated
2) I _think_ the current implementation is not safe for internal use,
as I believe there is public code for changing arbitrary metadata
values (please correct me if I'm wrong...)
3) sheer laziness
A while back there was a metadata discussion on this list, and I've read
that discussion. I didn't detect any consensus about what sort of
metadata should be supported.
It seems clear that collection-level metadata is best off in a 'system
table', which Dave Viner's metadata system models nicely. Per-document
data is less clear. Some of it will change with every save/update, some
won't. The resource type stuff I just did isn't likely to change all
that often and might be a candidate for the non-inline metadata, if it
is safe from user tampering. On the other hand, I am currently working
on Xindice enhancements that requires per-document metadata likely to
change with each update/save.
I'm interested in hearing arguments pro and con.
Regards,
Gary