Giter Site home page Giter Site logo

gramian / chicken-arcadedb Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 45 KB

An ArcadeDB database driver for CHICKEN Scheme (in less than 256 lines of code).

Home Page: https://wiki.call-cc.org/eggref/5/arcadedb

License: Other

Scheme 100.00%
arcadedb chicken-scheme database-client database-driver scheme orientdb arcadedb-driver chicken-egg osql sql

chicken-arcadedb's Introduction

arcadedb (v0)

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

About ArcadeDB

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.

SQL

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 of TYPEs and PROPERTYs
  • 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:

About arcadedb

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

Runtime Dependencies

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:

Local Server Setup

A local ArcadeDB server can be set up via install or container.

Install

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

Container

  1. Install Docker or Podman (just replace docker with podman below)
  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

(a-help)

Returns void, prints help about using the arcadedb module.

Server Connection

a-server

(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

(a-clear)

Returns true after clearing internal parameters server and secret.

Server Information

a-ready?

(a-ready?)

Returns boolean answering if server is ready.

a-version

(a-version)

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

Server Databases

a-list

(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?

(a-exist? db)

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

Database Management

a-new

(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

(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.

Database Connection

a-use

(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

(a-using)

Returns symbol naming current database; returns #f if no database is connected.

Database Interaction

a-query

(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

(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.

Database Macros

a-config

(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

(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

(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

(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

(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

(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

(a-backup)

Returns boolean that is true if backing-up current database succeded.

a-stats

(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

(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

(a-repair)

Returns boolean that is true if automatic repair succeeded.

a-metadata

(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)
(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.

Changelog

License

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

chicken-arcadedb's People

Contributors

gramian avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.