simple datastore replacement, take two
Benjamin M. Schwartz
bmschwar at fas.harvard.edu
Tue Sep 23 14:58:49 EDT 2008
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Tomeu Vizoso wrote:
| 2.- all metadata properties are just strings.
I think this is a good decision (especially since by strings you mean
"byte arrays"). However, it's not quite true. Your design actually has
two classes of metadata properties: strings in "metadata" and files in
"extra_metadata".
I like this design, but I think we can make it both simpler and more
powerful. Consider, for example, using a single djb-style database.
metadata/
author
difficulty
sessionkey
preview
Each item is stored in a file whose name is the key, and whose contents
are the value. The Datastore can then provide two accessor functions:
get_by_value(key) and get_by_reference(key). get_by_value() returns the
contents of the file as a bytestring in memory. get_by_reference()
returns the path to the metadata file, or another path linked (soft or
hard) to that file. This provides all the needed functionality for large
and small metadata entries.
If the API requires file-like and string-like metadata to be completely
distinct, for example to create a dict for the string-like metadata, then
we can achieve this by using two such databases:
string_metadata/
author
difficulty
file_metadata/
sessionkey
preview
I hope that these designs may allow your datastore to become even simpler.
- --Ben
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkjZPGkACgkQUJT6e6HFtqTepQCdEvOgcaFsvfmhEu0tk0q0in4A
/qMAnin7C9wP/7avdyrtztd7sBXLGx8z
=37uH
-----END PGP SIGNATURE-----
More information about the Devel
mailing list