PuzzleDB is a high-performance, distributed, cloud-native, multi-API, multi-model database.
1.5K
PuzzleDB aspires to be a high-performance, distributed, cloud-native, multi-API, multi-model database. This Technology Preview version has been developed in the Go language. PuzzleDB is a multi-data model database capable of handling key-value, relational, and document models. Additionally, PuzzleDB is a multi-interface database, compatible with existing database protocols such as PostgreSQL, MySQL, Redis, and MongoDB.

PuzzleDB is a distributed database framework supporting various data models and protocols. It is designed as a flexible, scalable, and efficient database framework suitable for various environments. PuzzleDB accommodates existing query protocols such as PostgreSQL, MySQL, MongoDB, and Redis within a distributed, pluggable database framework. Consequently, developers can seamlessly start using PuzzleDB as a scalable, high-performance distributed database with existing database client drivers, eliminating any learning curve.
PuzzleDB Docker image is the easiest way; if you do not have Docker installed, go there and install it first. To start the standalone server, run the following command:
docker run -it --rm \
-p 6379:6379 \
-p 27017:27017 \
-p 3306:3306 \
-p 5432:5432 \
-p 50053:50053 \
-p 9181:9181 \
cybergarage/puzzledb:latest
To start the latest PuzzleDB, refer to Go Stared to set up your Go development environment and run the following command:
git clone https://github.com/cybergarage/puzzledb-go.git
cd puzzledb
make run
The started PuzzleDB listens on the standard ports of the supported Redis, MongoDB, and MySQL database protocols, and you can connect with PuzzleDB using the standard CLI commands.
To operate PuzzleDB with the MySQL protocol, use the standard MySQL shell mysql as follows:
% mysql -h 127.0.0.1
mysql> CREATE DATABASE test;
mysql> USE test;
mysql> CREATE TABLE test (k VARCHAR(255) PRIMARY KEY, v int);
mysql> INSERT INTO test (k, v) VALUES ('foo', 0);
mysql> SELECT * FROM test WHERE k = 'foo';
+------+------+
| k | v |
+------+------+
| foo | 0 |
+------+------+
1 row in set (0.00 sec)
PuzzleDB currently supports the MySQL queries in stages. See MySQL for current support status.
To operate PuzzleDB with the PostgreSQL protocol, use the standard PostgreSQL shell psql as follows:
% psql --host=localhost
> CREATE DATABASE test;
> \q
% psql --host=localhost test
> CREATE TABLE test (k VARCHAR(255) PRIMARY KEY, v int);
> INSERT INTO test (k, v) VALUES ('foo', 0);
> SELECT * FROM test WHERE k = 'foo';
k | v
-----+---
foo | 0
(1 row)
PuzzleDB currently supports the PostgreSQL queries in stages. See PostgreSQL for current support status.
To operate PuzzleDB with the MongoDB protocol, use the standard MongoDB shell mongosh as follows:
% mongosh
test> db.trainers.insertOne({name: "Ash", age: 10, city: "Pallet Town"})
test> db.trainers.findOne({name: "Ash"})
test> db.trainers.findOne({age: 10})
PuzzleDB currently supports the MongoDB commands in stages. See MongoDB for current support status.
To operate PuzzleDB with the Redis protocol, use the standard Redis command redis-cli as follows:
% redis-cli
127.0.0.1:6379> SET mykey "Hello"
OK
127.0.0.1:6379> GET mykey
"Hello"
PuzzleDB currently supports the Redis commands in stages. See Redis for current support status.
Content type
Image
Digest
sha256:9c52534da…
Size
668.4 MB
Last updated
about 1 year ago
docker pull cybergarage/puzzledb