[Cl-perec-devel] Lots of questions :-)
mihai at bazon.net
Thu Sep 17 08:26:46 UTC 2009
Attila Lendvai <attila.lendvai at gmail.com> wrote:
> the relevant line is this:
> (setf authenticated-session (load-instance authenticated-session
> :skip-existence-check #t :copy-cached-slot-values #t))
I couldn't get this to work -- I still can't access that object outside
a transaction. But I'm leaving this for now.
The more I dig it, the more I love it. I like inheritance, for example
-- I created a base class that has an "edition" field and added a
"before-committing" trigger that increments edition. Then all classes
that inherit from it have a magic "version number" that gets updated for
each change. It's brilliant how it works, using a single table for
versions and views to map each object to its version! Great work guys!
I envision that it will be a lot slower than hand-crafted SQL, but the
ease of development makes it worth. I have some more questions, mostly
related to optimizing performance:
1. I have a N-M relationship between Users and Groups. For this, perec
creates an intermediate table, which is great because I don't have to
do it myself :-) but not so great because I don't know how I can
When I do (push new-group (grups-of user)) perec deletes all groups
of that user from the intermediate table, then re-inserts them, which
makes sense because one can change the whole set of groups at once,
but in the particular case of adding a new group seems overkill. I
was wondering if there is a way to add a single instance.
2. Whenever I access an associated object (or a set, such as (groups-of
user)) a SELECT is run. I was wondering if there is a way to have
"cached" slots (in RAM, that is), at least within a transaction.
3. Is there a way to create INDEX-es on fields other than those created
by defassociation or :unique slots?
More information about the cl-perec-devel