chess_pos_db is a free, opensource software aiming to provide a high performance database service for aggregation of chess position data from chess games. It provides a simple TCP interface for interprocess communication, a console interface, and an optional windows GUI. The goal is to achieve cutting-edge performance and unmatched possibilities.
For a Windows GUI see HERE. It also contains setup instructions.
Notable features:
3 data formats allowing different tradeoff between space and information stored.
Creation of a position database from PGN or BCGN files. Data being agreggated (depends on database format chosen):
High performance and little storage
High limits
Distinction between continuations (exact move played to arrive at this position) and transpositions (different move played to arrive at this position).
Local, file based database structure allowing for easy archiving, copying, and distribution.
Extensive configuration. (see cfg/config.json)
Console user interface
A simple TCP server allowing managing and quering databases.
Notable codebase features:
Currently only Windows is explicitly supported. Though the code is mostly standard compliant C++17 - there are only a few instances of non-portable code, most notably 64 bit file seek functions in External module. Not tested on systems other that Windows.
Requires 64-bit builds to work as intended. May not compile or have bugs on 32-bit builds.
Compiles with Visual Studio 2019 MSVC Compiler (.sln included).
Support for other compilers and other operating systems is planned but there is no definitive deadline.
Licenses specified in header files or in respective folders.
For a Windows GUI see HERE. It also contains setup instructions.
It's a command line application with 3 modes of operation:
When launched without any command line arguments
help
command.When launched with 2 parameters <db_path> <port>
<db_path>
<port>
and accepts query requests (see docs for specification).When launched with 1 parameter <port>
Creates a TCP server listening on <port>
and accepts various commands (see docs). For example:
The interface is stateful - only one database can exist at once. Currently only one simultanuous connection is supported.
Not meant for remote use. Can function as an interprogram messaging protocol.