I'm not sure I understand your arguments against using the MetaData stuff I
wrote.  You listed two reasons, doubling the number of disk writes on
update, and public methods for changing metadata values.  You also said that
in your application, you'll need "requires per-document metadata [that is]
likely to change with each update/save."  So, you'll be bitten by the your
first objection, doubling disk writes.

As for public methods for changing metadata, it is true that there are such
methods.  The concept of the MetaData design that David Ku and I implemented
is that there are 3 types of metadata stored.  First, there are "system"
elements, like last modified time, last access time.  These are handled by
Xindice.  Second, there are "attributes", which is a big Hashtable.  This is
for the user to specify whatever key-value type metadata (s)he wants that
might be app-specific.  Third, there is a custom XML document space.  This
is for the user to specify whatever hierarchical metadata (s)he wants.
Therefore, the methods available allow the user to easily add and remove
key-value pairs from the hashtable, and the xml document section.  There is
also code to let the "power" user change system attributes, but you'd have
to write the code to call those methods.  The XMLRPC methods provided don't
provide a way to change system elements.


Your application might need some metadata capabilities that are provided by
the metadata design and implementation that's in Xindice now.  Without
knowing more about your requirements, it's hard to say.  But I think the
current design is pretty flexible, and should provide you with the
functionality you need.  If it doesn't, then we should identify if the
missing piece is related to the design or the implementation of metadata
storage in Xindice.  If it's the implementation, then we should add it.  If
it's the design, then we should definitely examine what is wrong with the
design.

dave


-----Original Message-----
From: Gary Shea [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 12, 2003 12:07 PM
To: [EMAIL PROTECTED]
Subject: metadata thoughts


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


Reply via email to