Re: large databases



On 2008-05-21, Simon Strobl <Simon.Strobl@xxxxxxxxx> wrote:
Hello,

I am trying to work with large databases. Most Prologs seem to be
unable to load databases whose size surpasses a certain limit. An
example: I had both Swi and Yap load a 3.1G database. Swi ran several
days until I stopped the experiment. Yap produced a segmentation fault
after a few minutes.

Are there any tricks for loading such databases?

The Prolog system should of course be able to handle it, but most
importantly, make sure most of your database predicates are properly
indexed. Non-indexed calls to predicates with millions of clauses is no
fun. This may imply building additional indexes, but as long as you have
the memory to hold the extra tables that will pay off.

YAP does a lot more on dynamic indexing, so there is less work for you
to consider. SWI only does first argument indexing, but surely on 64-bit
hardware you can use a lot of memory.

Cheers --- Jan

Note that splitting a database up is not always a solution. Sometimes
one wants to be able to easily compare all facts with all other facts.

Simon
.