You are looking at historical revision 41914 of this page. It may differ significantly from its current revision.

arcadedb

arcadedb is a CHICKEN Scheme egg module providing a driver or REPL for the ArcadeDB database.

About ArcadeDB

ArcadeDB is a multi-model NoSQL database providing graph and document models, while supporting a wide range of data query languages, such as:

as well as providing a HTTP/JSON/REST API.

SQL

The native query language of ArcadeDB is a dialect of SQL, closely related to OrientDB's OSQL, which supports the SQL command categories:

for the remaining categories holds:

About arcadedb

The arcadedb module implements a driver and console for ArcadeDB in CHICKEN Scheme with the functionality:

Runtime Dependencies

Naturally, arcadedb requires a remote or local ArcadeDB server:

which in turn requires a Java distribution, i.e. OpenJDK 11. A local server setup is described below. Furthermore, the arcadedb module requires curl for the HTTP requests:

and imports the uri-common egg to url-encode strings, as well as the medea egg to decode JSON:

Local Server Setup

A local ArcadeDB server can be set up via [install](#install) or [container](#container).

Install

  1. Download package: ArcadeDB package
  2. Extract package: tar -xf arcadedb-latest.tar.gz
  3. Start server: ARCADEDB_HOME=/path/to/arcadedb/ bin/server.sh -Darcadedb.server.rootPassword=mypassword &
  4. Exit server: kill `cat bin/arcade.pid`

Container

  1. Install Docker
  2. Download container: docker pull arcadedata/arcadedb
  3. Start container: docker run --rm -d -p 2480:2480 -e JAVA_OPTS="-Darcadedb.server.rootPassword=mypassword --name arcadedb0 arcadedata/arcadedb
  4. Stop container: docker stop arcadedb0

Procedures

Help Message

a-help

[procedure] (a-help)

Returns void, prints help about using the arcadedb module.

Server Connection

a-connect

[procedure] (a-connect user pass host . port)

Returns boolean answering if connection to server using strings user, pass, host, and optionally number port was succesful; returns #f if a server error occurs or no response is received.

Server Information

a-status

[procedure] (a-status)

Returns list holding the cluster configuration of the server; returns empty list '() if no replicas are configured; returns #f if a server error occurs or no response is received.

a-healthy?

[procedure] (a-healthy?)

Returns boolean answering if server is ready.

a-list

[procedure] (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-version

[procedure] (a-version)

Returns string version number of the server; returns #f if a server error occurs or no response is received.

Database Management

a-exist?

[procedure] (a-exist? db)

Returns boolean answering if database symbol db exists of the server.

a-create

[procedure] (a-create db)

Returns boolean that is true if creating new database symbol db on the server was succesful; returns #f if a server error occurs or no response is received.

a-open?

[procedure] (a-open? db)

Returns boolean answering if database symbol db is open on the server.

a-open

[procedure] (a-open db)

Returns boolean that is true if opening database symbol db on the server was succesful; returns #f if a server error occurs or no response is received.

a-close

[procedure] (a-close db)

Returns boolean that is true if closing database symbol db on the server was succesful; returns #f if a server error occurs or no response is received.

a-drop

[procedure] (a-drop db)

Returns boolean that is true if deleting database symbol db on the server was successful; returns #f if a server error occurs or no response is received.

Database Interaction

a-query

[procedure] (a-query db lang query)

Returns list holding the result of string query in language symbol lang` of database symbol db; returns #f if a server error occurs or no response is received.

a-command

[procedure] (a-command db lang cmd)

Returns list holding the result of string cmd in language symbol lang to database symbol db; returns #f if a server error occurs or no response is received.

a-script

[procedure] (a-script db path)

Returns list holding the result of the last statement of SQL script in string path to database symbol db; returns #f if a server error occurs or no response is received.

A SQL script file has to have the file extension .sql.

Database Macros

a-import

[procedure] (a-import db url)

boolean that is true if importing from string url into database symbol db on the server was successful; 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-describe

[procedure] (a-describe db)

Returns alist of type descriptions for database symbol db; returns #f if a server error occurs or no response is received.

This function emulates the SQL DESCRIBE statement.

a-load

[procedure] (a-load db path type)

Returns boolean that is true if loading JSON file at string path into database symbol db as symbol type on the server was successful; returns #f if a server error occurs or no response is received.

a-backup

[procedure] (a-backup db)

Returns boolean that is true if backing-up database symbol db on the server was successful.

a-check

[procedure] (a-check db)
[procedure] (a-check db fix?)

Returns list-of-alists integrity check report, attempts to fix if true boolean fix? is passed. returns #f if a server error occurs or no response is received.

a-comment

[procedure] (a-comment db)
[procedure] (a-comment db msg)

Returns string current database comment of database symbol db, if msg is not passed; returns #t if string msg was set as comment for database symbol db on the server succesfully; returns #f if no comment is set, a server error occurs or no response is received.

This function emulates the SQL COMMENT ON DATABASE statement, by creating a type D and upserting or reading the first comment property.

Changelog

License

Copyright (c) 2022 Christian Himpe under zlib-acknowledgement license.