Sopel97 / chess_pos_db

Database software for chess position statistics. Designed to provide high performance and handle billions of games.
MIT License
3 stars 4 forks source link

chess_pos_db

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:

Notable codebase features:

Building

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.

Dependencies

Licenses specified in header files or in respective folders.

UI

For a Windows GUI see HERE. It also contains setup instructions.

It's a command line application with 3 modes of operation:

  1. When launched without any command line arguments

    • Provides basic console interface functionality for creating/opening/querying/closing/destroying databases. See help command.
    • Currently supports only one hardcoded database format.
  2. When launched with 2 parameters <db_path> <port>

    • Opens a database under <db_path>
    • Creates a TCP server listening on <port> and accepts query requests (see docs for specification).
    • Responses are sent back through the same TCP connection.
  3. When launched with 1 parameter <port>

    • Creates a TCP server listening on <port> and accepts various commands (see docs). For example:

      • creating a database
      • merging a database
      • opening a database
      • querying
    • 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.