Thanks very much for the feedback!
On Feb 27, 2011, at 5:59 AM, Gijs S. wrote:
> To talk in terms of entities is perhaps too much structure for the
> simpledb.
I would agree -- although if the data one is storing in SDB is regular enough,
you should be able to build ORM-esque functionality on top of the approach I'm
proposing.
> I would suggest a way to define serialization and
> deserialization per attribute per domain in code. This would mean that
> there is no encoding of the type of an attribute in its name or value
> in the storage. get-attr and put-attr take the domain as an argument,
> which can be used to lookup the proper serialization and
> deserialization function per attribute.
>
> This approach would do away with storing type information into
> simpledb. It is also possible to provide this functionality on top of
> the existing simpledb library or the library with the suggested
> improvements.
If I'm understanding you properly, you could build this on top of the
:encode/:decode functions in the configuration object as well. I've added this
example to the design notes:
Or, if you wanted to avoid storing any type indicators in SDB, you could
explicitly map formats to attribute names (which would then be used on a
per-domain basis):
(def config {:sdb-client (AmazonSimpleDBClient. …)
:encode (fn [[k v]]
[(str k)
(case k
(:mls :asking-price) (encode-integer v)
(:address :agent-name) (str v)
:listing-date (encode-date v)
(str v))])
:decode …})
If the above is common usage, a helper function that takes a simple map of
attribute names -> value types and returns a corresponding configuration object
would be nice.
Is that what you were describing?
- Chas
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en