Hi Alex,

You make a good point below. I haven't dealt with these kind of small subsets from large sets using multiple parameters problems in a large system. However, if we take a page from Robert's book about using lisp as the query engine - how would we solve this problem just with lisp objects?

Given that in Elephant, the cost of a btree instance is negligable, one way to do this is the just have a set of messages for each user in a user slot (a pset or set-valued slot). Rather than creating a message with a relational connection to a user, we just create a message and add it to the user's collection of messages. Of course to get the full efficiency you want, we'd have to make a sorted-pset that sorts on some fn of the elements.

I'd like to think about different metaphors for solving these problems so we don't end up turning Elephant's interface into a less efficient variation of an ORM!

Ian

On Mar 23, 2008, at 5:27 PM, Alex Mizrahi wrote:

IE> unnecessary. If you have messages indexed by time than you can simply IE> walk the index and filter by user until you have a web page worth of
IE> messages.

worst case behaviour is very bad -- to prove that there are no messages, it
will have to scan all of them..
what's even worse, this worst case is quite frequent -- many users actually
have empty inboxes.

IE> A scan, even of an index, may not be fast enough so you could do an IE> intersection of user-to values with an ordered list of recent messages.

you mean reading oids from user-to index and scanning/filtering
modification-time index with them?
this will mean same worst case.
of course sufficiently smart system can see which list is less, but still with thousands of messages and thousands of users this is going to be quite
slow.

IE> This should perform similarly to a SQL engine which many ORM systems
IE> use for queries like this.

i thought in SQL DBMS expression like "create index tree11_idx on
tree11(qi,value)"
builds ordered list (btree) of pairs pretty much as in derived index i've
described, and this will make lookups on both values fast.


Quite right.



_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

Reply via email to