Re: Non-SQL Persistence for PL

[email protected] Thu, 30 Aug 2007 01:18:22 +0200 (CEST)
Newsgroups gmane.comp.ai.powerloom
Message-ID <17402817.16351188429502711.JavaMail.root@zimbra>
Hi,

if there is a way of efficiently serialising and deserialising
only those objects which represent definitions and propositions
as you do it with your 'schema-less' RDBMS, that would surely
be a better approach than serialising the complete object graph.

When you say you use the RDBMS to store serialised objects in it,
does that mean that you have one single table with rows for each
proposition or definition? Or different tables for different
types of objects? And if I understand correctly, the caching/
paging is implemented in Stella on top of the RDBMS?

I would like to try either AllegroCache and/or other object 
persistence tools, so I looked into the code of the rdbms 
system and saw how you use demons and db-relation-goes-xxx 
functions and have a vague idea of what would be necessary.

The experimental code you mention, would be very interesting
as the rdbms code is still very close to the notion of
tables (deftable ...). I would appreciate even small code 
snippets or other information about the mechanism you use
to store propositions in a generic way.


Thank you.


Kambiz

----- Original Message -----
From: "Hans Chalupsky" <[email protected]>
To: [email protected]
Cc: "PowerLoom Forum" <[email protected]>
Sent: Donnerstag, 30. August 2007 0.00 Uhr (GMT+0100) Europe/Berlin
Subject: [PowerLoom Forum] Non-SQL Persistence for PL

Kambiz,

we do have an experimental version of persistence that doesn't require
you to have a DB schema, but that basically persists PowerLoom
definitions and propositions in a special-purpose "schema-less" RDBMS
database.  The system then pages those objects in on demand and uses
extensive caching to make things fast.  In a sense this is
implementing a type of persistent object system by serializing the
objects to an RDBMS.  The problem with this is that it isn't quite
complete.  We've loaded, persisted and queried large ontologies with
that, but there are a variety of loose ends that would make this
difficult for you to use at this point.

Several years ago we've played with some persistent object systems
(such as Versant and PLOB - a free version of persistent Lisp
objects), but the performance was never very satisfying.  That might
have changed by now with Allegro Cache, but I don't have any real data
on that.  The other issue is that a loaded PowerLoom module has a host
of PowerLoom and STELLA data structures associated with it that all
would need to be persisted, which means that you basically have to
make all object classes of STELLA and PowerLoom persistent to make things
work (without some major re-architecting).  I don't know how difficult
that would be with Allegro Cache, and I'd be interested to hear some
experiences from you if you venture to go that route.

Hans

>>>>> darabi  <[email protected]> writes:

> Hi, I sent the below message using the wrong mail address.
> I hope, it doesn't show up twice in the list.:

> ----

> Hello,

> I have a need for persistent knowledge bases and thus
> have been experimenting with the rdbms (and sdbc) system
> which you kindly released some time ago.

> My (maybe short-sighted) conclusion is that rdbms is very
> well suited for accessing large amount of data which
> is already stored in an SQL DB and for making that data
> available to PL's reasoning mechanisms.

> But, if one has no existing SQL data and wants to persist
> a KB of concepts and relations which are subject to frequent
> change, then the limitations of the DB in terms of 'high
> cost' of schema evolution also limit the possibilities
> of rdbms/sdbc.

> Have you or others taken another path: to use object level
> persistence as provided by Franz' AllegroCache or other
> 'object databases' to store the relevant parts of the
> knowledge base?

> Of course, this would only work in the lisp version of PL,
> so it might be out of scope. OTOH, there is also db4o for
> Java and C++, so maybe it wouldn't be impossible to implement
> it in a cross-platform way.

> But, I would be interested in any thoughts you might have
> on this topic. Would it be possible to use the CLOS version
> and identify some classes (e.g. named-description,
> native-relation, context, module) which make up a PL module,
> and persist them to an object database?

> If yes, could you give me some hints as where to look into
> the code?

> Thank you very much.


> Kambiz



> _______________________________________________
> powerloom-forum mailing list
> [email protected]
> http://mailman.isi.edu/mailman/listinfo/powerloom-forum