Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: The Book Problem, Open Book Format proposal, Request for comments.

Author: Mark Boylan

Date: 18:40:54 03/03/06

Go up one level in this thread


On March 03, 2006 at 21:12:20, Dann Corbit wrote:

>
>SQL is language independent.  You can use whatever database engine you like.
>
>Some possibilities for the SQL geeky:
>DB/2 (not sure if there is a free version or not)
>SQL*Server (there is a free limited version)
>Oracle (there is a free 2GB limited version)
>PostgreSQL (free)
>Firebird (free)
>
>Some possibilities for a canned version (come in C form and compile anywhere):
>SQLite (free, public domain license):
>http://www.sqlite.org/
>
>For the 'object' crowd:
>FastDB (free, berkeley license):
>http://www.garret.ru/~knizhnik/fastdb.html
>
>It does not have to be a relational database.  Foxpro or the like would work via
>standards based connections like ODBC or OLEDB or .NET provider.
>
>There are lots of other database systems as well.
>
>I would use ODBC or JDBC or OLEDB or some other standards based connection.  If
>you do that, then the database literally does not matter.
>
>It would be easy to choose some stock format (like SQLite) and make a canned
>version that you just bolt on and use.


Dann,

I understand that SQL is language independent. But I don't understand the
logistics. A chess engine is usually just a small single executable file that
you can download and run. I'm trying to imagine myself as a first time chess
engine user, downloading Fruit 4.0 (just an example) and having to install
PostgreSQL! (just another example)

Maybe it wouldn't be so bad installing PostgreSQL for Arena or the Shredder
interface, but would every engine have to have a big installer that checked for
a database installation?

The next question would be, how do you share books? If I wanted to create a book
for my engine (that's a laugh) or just email a book to you, what would be the
format? Maybe just a bunch of insert statements?

insert into position (fen, eval) values
("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", 0);

And I realize that there are APIs to talk to databases, (that's what I was
suggesting when I said I wouldn't want to include the psql headers and link to
their libs) but it doesn't answer the question about chess engines being
responsible for checking the proper installation of a database server.

The only other SQL solution that I could think of is an embedded SQL database.
Embedded databases sidestep all of the problems with true database servers (like
Oracle, SQLServer & PostgreSQL) for single user systems. But embedded databases
generally only work from within a single implementation language. Lots of them
exist for Java. HSQLDB, Cloudscape, Derby, Daffodil... But off the top of my
head I can't think of a single embedded C or C++ SQL database.

So, assuming that your engine is in C, what do you do? Write a complex
installation program that installs MySQL server on the user's machine?




This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.