This is slightly off-topic, but I'm hoping some of the list readers might be able to direct me to references on projects integrating a persistant database store (e.g., MySQL, PostgreSQL, etc.) with a Prolog runtime in a "real world" example.
I'm looking to see what issues are involved with keeping information in a database, then using Prolog searching algorithms to locate and retrieve data.
Dear Brent,
I do not think it is an off-topic, but a very interesting excellent issue instead. We are currently involved in a project where substantial part of the data will be presumably stored in a separate database, and, while the amount of data itself is not very high, searches will be frequent.
In our case it presumably pays off to import all the data into the local Ciao Prolog database and work (i.e., search) locally. Updates to the database are supposed to be scarce, and under the control of a manager (the data is sensible, and has to be verified before being changed), so concurrent updates or concurrent read/writes are not really an issue here. We
But, while importing data can be enough for at least a initial working prototype, it can turn out (for us, and for many people) that this initial DB loading is simply unfeasible. It should be pointed out, though, that since the Ciao Prolog database interface aims at transparency with respect to where the data really lives, incore or remote access matters very little with respect to the program code itself. Interesting issues here are caching, prefetching, compiling complex queries (such as findall/3 of goal conjunctions), estimating costs of queries, etc.
We plan to add the libraries, utilities, etc. we develop to Ciao Prolog. But we (and surely many Ciao Prolog users) would like to hear about user experiences, developments, etc. in order to improve Ciao Prolog, tackle weaknesses, add new features, etc. which will remain in the system and be beneficial for all.
Best regards,