[Zope-dev] Re: The remaining spanner in the works :-)
Shane Hathaway
shane@zope.com
Fri, 02 Aug 2002 10:39:59 -0400
Gary Poster wrote:
> I agree with Chris: *wow*!
>
> [re the original explanation]
> ...
>
>>I'm sure I left a few things out, so ask questions about the unclear
>>parts.
>
>
> Everything was wonderfully clear, except that the actual mechanism to
> convert the nested tuples flexibly to RDBMS record sequences escaped me
> a bit. This probably gets in the realm of "look at the code" which is
> what, in fact, I will hope to do.
I created another set of components called "record storages". Their job
is to load and store record sequences in a schema that matches that of a
serializer. In the current AdaptableStorage code, most of them are
still called a "table", the old name for "record storage", but when I
started serializing to the filesystem I realized that "table" wasn't
general enough!
Most record storages store data in some kind of database, but other
record storages act as a proxy for other record storages, converting
data in one schema to another. This theoretically enables application
developers and database administrators to work independently, bringing
their work together through proxy record storages.
Record storages are similar to SQLMethods, with the difference that
record storages provide a way to both read and write a set of records.
Conventionally, SQLMethods either read or write data, but not both
(Though it's possible to write a SQLMethod that can read or write
depending on the argument signature, that's not what they were designed
to do. Instead, a record storage might consist of two or more SQL methods.)
Some record storages might actually perform complex database queries
that are not sensible to store. In that case, you can just raise a
ReadOnlyError on an attempt to write.
Shane