arcadedb
is a CHICKEN Scheme egg module providing a driver or REPL
for the ArcadeDB database.
ArcadeDB is an open-source multi-model NoSQL database providing the models:
- Key-Value,
- Document,
- Graph,
- Time Series,
- Vector,
while supporting a range of data query languages, such as:
as well as providing a JSON / REST-like / HTTP API.
The native query language of ArcadeDB is a dialect of SQL, closely related to OrientDB's OSQL, which supports the SQL command categories:
- DDL - Data Definition Language, via
CREATE
,DROP
,ALTER
,TRUNCATE
ofTYPE
s andPROPERTY
s - DQL - Data Query Language, via
SELECT
,TRAVERSE
,MATCH
- DML - Data Manipulation Language, via
INSERT
,UPDATE
,DROP
,CREATE VERTEX
,CREATE EDGE
,MOVE VERTEX
- TCL - Transaction Control Language, via
BEGIN
,COMMIT
,ROLLBACK
for the remaining category holds:
- DCL - Data Control Language, does not apply due to only server level users
The arcadedb
module implements a driver and console for ArcadeDB in
CHICKEN Scheme with the functionality:
- Server Connection
- Server Information
- Server Databases
- Database Management
- Database Connection
- Database Interaction
- Database Macros
Naturally, arcadedb
requires a (running) remote or local ArcadeDB server:
which in turn requires a Java distribution in version 17, i.e. OpenJDK (headless).
A local server setup is described below.
Furthermore, the arcadedb
module requires wget
for the HTTP requests:
during runtime, and imports the medea
egg to decode JSON:
A local ArcadeDB server can be set up via install or container.
- Download package: ArcadeDB package
- Extract package:
tar -xf arcadedb-latest.tar.gz
- Start server:
bin/server.sh -Darcadedb.server.rootPassword=mypassword &
- Exit server:
kill `cat bin/arcade.pid`
- Install Docker or Podman (just replace
docker
withpodman
below) - Download container:
docker pull arcadedata/arcadedb
- Start container:
docker run --rm -d -p 2480:2480 -e JAVA_OPTS="-Darcadedb.server.rootPassword=mypassword --name arcadedb0 arcadedata/arcadedb
- Stop container:
docker stop arcadedb0
(a-help)
Returns void, prints help about using the arcadedb
module.
(a-server user pass host . port)
Returns alist with single entry if connection to server using strings
user
, pass
, host
, and optionally number port
, succeded;
returns #f
if a server error occurs or no response is received.
(a-clear)
Returns true
after clearing internal parameters server
and secret
.
(a-ready?)
Returns boolean answering if server is ready.
(a-version)
Returns string version number of the server;
returns #f
if a server error occurs or no response is received.
(a-list)
Returns list of symbols holding available databases of the server;
returns #f
if a server error occurs or no response is received.
(a-exist? db)
Returns boolean answering if database symbol db
exists on the server.
(a-new db)
Returns boolean that is true if creating new database symbol db
succeded;
returns #f
if a server error occurs or no response is received.
This command can only be executed by the root or admin user.
(a-delete db)
Returns boolean that is true if deleting database symbol db
succeded;
returns #f
if a server error occurs or no response is received.
This command can only be executed by the root or admin user.
(a-use db)
Returns boolean that is true if database symbol db
is connected;
returns #f
if a server error occurs or no response is received.
(a-using)
Returns symbol naming current database;
returns #f
if no database is connected.
(a-query lang query)
Returns list holding the result of string query
in language symbol lang
on current database;
returns #f
if a server error occurs or no response is received.
Valid lang
symbols are: sql
, sqlscript
, cypher
, gremlin
, graphql
, mongo
.
(a-command lang cmd)
Returns list holding the result of string cmd
in language symbol lang
on current database;
returns #f
if a server error occurs or no response is received.
Valid lang
symbols are: sql
, sqlscript
, cypher
, gremlin
, graphql
, mongo
.
(a-config)
Returns alist of type descriptions for current database infos;
returns #f
if a server error occurs or no response is received.
(a-schema)
Returns alist of type descriptions for current database schema;
returns #f
if a server error occurs or no response is received.
This function emulates the SQL DESCRIBE
statement.
(a-script path)
Returns list holding the result of the last statement of SQL script in string path
executed on current database;
returns #f
if a server error occurs or no response is received.
A SQL script file has to have the file extension .sql
.
(a-upload path type)
Returns boolean that is true if uploading JSON file at string path
into current database as symbol type
succeded;
returns #f
if a server error occurs or no response is received.
A JSON script file has to have the file extension .json
.
(a-ingest url)
Returns boolean that is true if importing from string url
into current database succeded;
returns #f
if a server error occurs or no response is received.
This function can be a minimalistic ETL (Extract-Transform-Load) tool: If one needs to import data from another database with a HTTP API and the query can be encoded (as for ArcadeDB) in the URL, the extraction and transformation is performed in the remote query, while the loading corresponds to the import of the query result. The supported formats are OrientDB, Neo4J, GraphML, GraphSON, XML, CSV, JSON, RDF.
(a-jaccard type x y)
Returns flonum being the Jaccard similarity index,
given a symbol type
and two symbol arguments x
and y
.
(a-backup)
Returns boolean that is true if backing-up current database succeded.
(a-stats)
Returns list-of-alists reporting statistics on current database;
returns #f
if a server error occurs or no response is received.
(a-health)
Returns list-of-alists reporting health of current database;
returns #f
if a server error occurs or no response is received.
(a-repair)
Returns boolean that is true if automatic repair succeeded.
(a-metadata id key . value)
Returns the value of the custom attribute with symbol key
of type or property symbol id
,
if value
is not passed.
Returns boolean that is true if setting custom attribute symbol key
with string or number value
succeded.
(a-comment)
(a-comment . msg)
Returns string being database comment of current database, if string msg
is not passed.
Returns boolean that is true if setting database comment string msg
succeded.
This function emulates the SQL COMMENT ON DATABASE
statement,
by creating a type sys
and upserting or reading the first comment
property.
0.1
Initial Release (2022-11-15)0.2
Minor Update (2022-11-16)0.3
Major Update (2022-12-09)0.4
Minor Update (2023-01-16)0.5
Major Update (2023-03-01)0.6
Major Update (2023-05-05)0.7
Minor Update (2023-09-29)0.8
Major Update (2024-03-12)
Copyright (c) 2022 Christian Himpe under zlib-acknowledgement license.