<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.3.2">
</HEAD>
<BODY>
On Sat, 2006-09-09 at 12:57 -0400, Ian Eslick wrote:<BR>
<BLOCKQUOTE TYPE=CITE>
    <TT><FONT COLOR="#000000">So what is the right persistent collection model?  We want something</FONT></TT><BR>
    <TT><FONT COLOR="#000000">that plays nicely with transactions, doesn't place any onerous</FONT></TT><BR>
    <TT><FONT COLOR="#000000">performance burden on backends and plays nicely with the existing BDB</FONT></TT><BR>
    <TT><FONT COLOR="#000000">and SQL implementations.</FONT></TT><BR>
    <BR>
</BLOCKQUOTE>
<BR>
I strongly support a more abstract model, and I would recommend the "Dictionary" as the <BR>
correct abstract model.  (That's what we called it back in CS when I was in college.)  The<BR>
hashtable is an implementation of the Dictionary that is so close it's hard to remember that <BR>
Dictionary is abstract and hashtable is just one of several implementation mechanisms (<BR>
for example, a btree is another.)<BR>
<BR>
I would tend to oppose any notion of "tables".  To me, that is just circling back around to <BR>
a relational model; CLSQL and its object-relational mapping partially covers that territory.<BR>
<BR>
The "btree" is not very abstract --- it is what BDB uses, and therefore was a fine object<BR>
to expose at the time.<BR>
<BR>
Dictionaries of course can support iterators, and one has to have a way iterating over<BR>
all of the objects in the collection.  I tend to prefer the "apply this function to every object<BR>
in a certain model" to the language of iterators, but in practice it's mostly the same.<BR>
<BR>
I only briefly looked at the AllegroStore stuff; but the notion of a "persistent set" seems <BR>
quite clean.<BR>
<BR>
But please don't let my comments dissuade others from commenting.<BR>
<BR>
</BODY>
</HTML>