durusmail: durus-users: latency improvement in "new_oid"
latency improvement in "new_oid"
2006-05-16
2006-05-16
2006-05-16
2006-05-16
2006-05-17
2006-05-17
2006-05-17
2006-05-17
2006-05-18
2006-05-16
2006-05-16
2006-05-17
2006-05-17
2006-05-17
2006-05-17
2006-05-17
2006-05-17
2006-05-17
latency improvement in "new_oid"
Jesus Cea
2006-05-16
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

mario ruggier wrote:
> At first I felt this is a nice idea... but then i thought of a number of
> issues, that made this lose its appeal for me:

Mario, reading your comments I think you are missing the point. In Durus
you access persistent objects via links from other persistent objects
(except for the root object, of course). The internal OID of each object
is not relevant for the application. The OID is only used internally.

So if the OID space is big, sparse and unpredictable, you can still
travel around your storage following links. But you can't just "try" a
random OID (using an internal, "undocumented", feature) and get
something in return. Currently, in a current durus storage, you can try
any OID less than your current OID (you can get it simply creating a new
object, to look in its inner and private details) and you probably hit a
valid OID, getting a valid unknown object. You just scaped your object
graph.

> - What about doing a "for key in get_root():" ?
> The world is your oyster, then... that is, if you like oysters.

The only issue is that clients must know the root of its object graph.
Current durus implementation does "OID(root) = 0". but that is not an
obligation.

The server simply must provide you a root object. You can navigate it to
fetch other objects, just like now. But since OID are no predictable,
you CAN'T fetch an object you are not linked to.

> - Objects in the db often have predictable keys, as per the class
> definitions, the layer being used between the application and durus,
> etc. This kind of undermines the unpredictability of the OIDs.

Do not mix class definitions with OIDs. There is no relation at all.
OIDs could be just 256 random bits from "/dev/urandom" :)

> - Nice simple applications such as QP's DurusDirectory, that you can
> just instantiate on a durus db, and you can browse the entire db, become
> considerably less friendly... this one uses the OIDs as URL path
> components, which therefore become more cryptic under such a scheme.
> Also, should you have "clone db" type utilities, the OIDs will
> drastically change on each cloning, making for very jumpy URLs. Plus, I
> like little facts such as root is always object 0.

Any durus application fetchs objects following links. It neves does a
direct OID "get", except for "root" object. Do not mix classes or object
hierachy with OID pattern generation.

> But keep the food coming ;)

:-)

- --
Jesus Cea Avion                         _/_/      _/_/_/        _/_/_/
jcea@argo.es http://www.argo.es/~jcea/ _/_/    _/_/  _/_/    _/_/  _/_/
jabber / xmpp:jcea@jabber.org         _/_/    _/_/          _/_/_/_/_/
                               _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iQCVAwUBRGpgQ5lgi5GaxT1NAQLJ1AP/XdedeNF4LHQJatUA9IfyIux8X6qk9PvB
W3cYWxaFslg0PuJyvYyvl5vlOXiu9pP/+b99vVjUJP1WGmKoctbC7I9D86fU4dSM
Lrt23iM4zWO4rS+Ta4g8ykia1R8GeaDFwQFpGzkkTYgj0yfuBy8q8R4huys6a952
J/WTNHCw3fA=
=k9cW
-----END PGP SIGNATURE-----
reply