{"id":16479489,"url":"https://github.com/gramian/chicken-arcadedb","last_synced_at":"2026-03-18T19:56:30.900Z","repository":{"id":69872628,"uuid":"542315908","full_name":"gramian/chicken-arcadedb","owner":"gramian","description":"An ArcadeDB database driver for CHICKEN Scheme (in less than 256 lines of code).","archived":false,"fork":false,"pushed_at":"2024-03-12T21:04:36.000Z","size":45,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-12T09:50:57.435Z","etag":null,"topics":["arcadedb","arcadedb-driver","chicken-egg","chicken-scheme","database-client","database-driver","newsql","nosql","orientdb","osql","scheme","sql"],"latest_commit_sha":null,"homepage":"https://wiki.call-cc.org/eggref/5/arcadedb","language":"Scheme","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gramian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-27T22:43:24.000Z","updated_at":"2024-03-12T21:37:38.000Z","dependencies_parsed_at":"2023-03-11T07:28:22.999Z","dependency_job_id":"74b7f78f-1074-4a3d-80fd-1d849e084ec6","html_url":"https://github.com/gramian/chicken-arcadedb","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gramian%2Fchicken-arcadedb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gramian%2Fchicken-arcadedb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gramian%2Fchicken-arcadedb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gramian%2Fchicken-arcadedb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gramian","download_url":"https://codeload.github.com/gramian/chicken-arcadedb/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233456042,"owners_count":18678963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arcadedb","arcadedb-driver","chicken-egg","chicken-scheme","database-client","database-driver","newsql","nosql","orientdb","osql","scheme","sql"],"created_at":"2024-10-11T12:52:02.505Z","updated_at":"2026-03-06T04:34:48.177Z","avatar_url":"https://github.com/gramian.png","language":"Scheme","funding_links":[],"categories":[],"sub_categories":[],"readme":"arcadedb (v0)\n=============\n\n`arcadedb` is a CHICKEN Scheme egg module providing a driver or REPL\nfor the [**ArcadeDB**](https://arcadedb.com) database.\n\n## About **ArcadeDB**\n\n**ArcadeDB** is an open-source multi-model NoSQL database providing the models:\n\n* Key-Value,\n* Document,\n* Graph,\n* Time Series,\n* Vector,\n\nwhile supporting a range of data query languages, such as:\n\n* [SQL](https://docs.arcadedb.com/#SQL) (dialect),\n* [Cypher](https://opencypher.org/resources/),\n* [Gremlin](https://tinkerpop.apache.org/docs/current/),\n* [GraphQL](https://graphql.org/),\n* [MQL](https://www.mongodb.com/docs/manual/) (Mongo),\n\nas well as providing a JSON / REST-like / HTTP API.\n\n### SQL\n\nThe native query language of **ArcadeDB** is a dialect of SQL, closely related to\n_OrientDB_'s OSQL, which supports the [SQL command categories](https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/):\n\n* **DDL** - Data Definition Language, via `CREATE`, `DROP`, `ALTER`, `TRUNCATE` of `TYPE`s and `PROPERTY`s\n* **DQL** - Data Query Language, via `SELECT`, `TRAVERSE`, `MATCH`\n* **DML** - Data Manipulation Language, via `INSERT`, `UPDATE`, `DROP`, `CREATE VERTEX`, `CREATE EDGE`, `MOVE VERTEX`\n* **TCL** - Transaction Control Language, via `BEGIN`, `COMMIT`, `ROLLBACK`\n\nfor the remaining category holds:\n\n* **DCL** - Data Control Language, does not apply due to only [server level users](https://docs.arcadedb.com/#Security)\n\n\n## About `arcadedb`\n\nThe `arcadedb` module implements a driver and console for **ArcadeDB** in\n_CHICKEN Scheme_ with the functionality:\n\n* [Server Connection](#server-connection)\n* [Server Information](#server-information)\n* [Server Databases](#server-databases)\n* [Database Management](#database-management)\n* [Database Connection](#database-connection)\n* [Database Interaction](#database-interaction)\n* [Database Macros](#database-macros)\n\n### Runtime Dependencies\n\nNaturally, `arcadedb` requires a (running) remote or local **ArcadeDB** server:\n\n* [ArcadeDB](https://github.com/ArcadeData/arcadedb/releases/latest)\n\nwhich in turn requires a _Java_ distribution in version 17, i.e. _OpenJDK_ (headless).\nA local server setup is described below.\nFurthermore, the `arcadedb` module requires `wget` for the HTTP requests:\n\n* [wget](https://www.gnu.org/software/wget/)\n\nduring runtime, and imports the `medea` egg to decode JSON:\n\n* [medea](https://wiki.call-cc.org/eggref/5/medea)\n\n## Local Server Setup\n\nA local **ArcadeDB** server can be set up via [install](#install) or [container](#container).\n\n### Install\n\n1. Download package: [**ArcadeDB** package](https://github.com/ArcadeData/arcadedb/releases/latest)\n2. Extract package: `tar -xf arcadedb-latest.tar.gz`\n3. Start server: `bin/server.sh -Darcadedb.server.rootPassword=mypassword \u0026` \n4. Exit server: ``kill `cat bin/arcade.pid` ``\n\n### Container\n\n0. Install [Docker](https://www.docker.com/) or [Podman](https://podman.io/) (just replace `docker` with `podman` below)\n1. Download container: `docker pull arcadedata/arcadedb`\n2. Start container: `docker run --rm -d -p 2480:2480 -e JAVA_OPTS=\"-Darcadedb.server.rootPassword=mypassword --name arcadedb0 arcadedata/arcadedb`\n3. Stop container: `docker stop arcadedb0`\n\n## Procedures\n\n### Help Message\n\n#### a-help\n```\n(a-help)\n```\nReturns **void**, prints help about using the `arcadedb` module.\n\n### Server Connection\n\n#### a-server\n```\n(a-server user pass host . port)\n```\nReturns **alist** with single entry if connection to server using **string**s\n`user`, `pass`, `host`, and optionally **number** `port`, succeded;\nreturns `#f` if a server error occurs or no response is received.\n\n#### a-clear\n```\n(a-clear)\n```\n\nReturns `true` after clearing internal parameters `server` and `secret`.\n\n### Server Information\n\n#### a-ready?\n```\n(a-ready?)\n```\nReturns **boolean** answering if server is ready.\n\n#### a-version\n```\n(a-version)\n```\nReturns **string** version number of the server;\nreturns `#f` if a server error occurs or no response is received.\n\n### Server Databases\n\n#### a-list\n```\n(a-list)\n```\nReturns **list** of **symbol**s holding available databases of the server;\nreturns `#f` if a server error occurs or no response is received.\n\n#### a-exist?\n```\n(a-exist? db)\n```\nReturns **boolean** answering if database **symbol** `db` exists on the server.\n\n### Database Management\n\n#### a-new\n```\n(a-new db)\n```\nReturns **boolean** that is true if creating new database **symbol** `db` succeded;\nreturns `#f` if a server error occurs or no response is received.\n\nThis command can only be executed by the root or admin user.\n\n#### a-delete\n```\n(a-delete db)\n```\nReturns **boolean** that is true if deleting database **symbol** `db` succeded;\nreturns `#f` if a server error occurs or no response is received.\n\nThis command can only be executed by the root or admin user.\n\n### Database Connection\n\n#### a-use\n```\n(a-use db)\n```\nReturns **boolean** that is true if database **symbol** `db` is connected;\nreturns `#f` if a server error occurs or no response is received.\n\n#### a-using\n```\n(a-using)\n```\nReturns **symbol** naming current database;\nreturns `#f` if no database is connected.\n\n### Database Interaction\n\n#### a-query\n```\n(a-query lang query)\n```\nReturns **list** holding the result of **string** `query` in language **symbol** `lang` on current database;\nreturns `#f` if a server error occurs or no response is received.\n\nValid `lang` **symbols** are: `sql`, `sqlscript`, `cypher`, `gremlin`, `graphql`, `mongo`.\n\n#### a-command\n```\n(a-command lang cmd)\n```\nReturns **list** holding the result of **string** `cmd` in language **symbol** `lang` on current database;\nreturns `#f` if a server error occurs or no response is received.\n\nValid `lang` **symbols** are: `sql`, `sqlscript`, `cypher`, `gremlin`, `graphql`, `mongo`.\n\n### Database Macros\n\n#### a-config\n```\n(a-config)\n```\nReturns **alist** of type descriptions for current database infos;\nreturns `#f` if a server error occurs or no response is received.\n\n#### a-schema\n```\n(a-schema)\n```\nReturns **alist** of type descriptions for current database schema;\nreturns `#f` if a server error occurs or no response is received.\n\nThis function emulates the SQL `DESCRIBE` statement.\n\n#### a-script\n```\n(a-script path)\n```\nReturns **list** holding the result of the last statement of SQL script in **string** `path` executed on current  database;\nreturns `#f` if a server error occurs or no response is received.\n\nA SQL script file has to have the file extension `.sql`.\n\n#### a-upload\n```\n(a-upload path type)\n```\nReturns **boolean** that is true if uploading _JSON_ file at **string** `path`\ninto current database as **symbol** `type` succeded;\nreturns `#f` if a server error occurs or no response is received.\n\nA JSON script file has to have the file extension `.json`.\n\n#### a-ingest\n```\n(a-ingest url)\n```\nReturns **boolean** that is true if importing from **string** `url` into current database succeded;\nreturns `#f` if a server error occurs or no response is received.\n\nThis function can be a minimalistic ETL (Extract-Transform-Load) tool:\nIf one needs to import data from another database with a HTTP API\nand the query can be encoded ([as for **ArcadeDB**](https://docs.arcadedb.com/#HTTP-API)) in the URL,\nthe extraction and transformation is performed in the remote query,\nwhile the loading corresponds to the import of the query result.\nThe supported formats are [OrientDB, Neo4J, GraphML, GraphSON, XML, CSV, JSON, RDF](https://docs.arcadedb.com/#Importer).\n\n#### a-jaccard\n```\n(a-jaccard type x y)\n```\nReturns **flonum** being the [Jaccard similarity index](https://en.wikipedia.org/wiki/Jaccard_index),\ngiven a **symbol** `type` and two **symbol** arguments `x` and `y`.\n\n#### a-backup\n```\n(a-backup)\n```\nReturns **boolean** that is true if backing-up current database succeded.\n\n#### a-stats\n```\n(a-stats)\n```\nReturns **list**-of-**alist**s reporting statistics on current database;\nreturns `#f` if a server error occurs or no response is received.\n\n#### a-health\n```\n(a-health)\n```\nReturns **list**-of-**alist**s reporting health of current database;\nreturns `#f` if a server error occurs or no response is received.\n\n#### a-repair\n```\n(a-repair)\n```\nReturns **boolean** that is true if automatic repair succeeded.\n\n#### a-metadata\n```\n(a-metadata id key . value)\n```\nReturns the value of the custom attribute with **symbol** `key` of type or property **symbol** `id`,\nif `value` is not passed.\nReturns **boolean** that is true if setting custom attribute **symbol** `key`\nwith **string** or **number** `value` succeded.\n\n#### a-comment\n```\n(a-comment)\n(a-comment . msg)\n```\nReturns **string** being database comment of current database, if **string** `msg` is not passed.\nReturns **boolean** that is true if setting database comment **string** `msg` succeded.\n\nThis function emulates the SQL `COMMENT ON DATABASE` statement,\nby creating a type `sys` and upserting or reading the first `comment` property.\n\n## Changelog\n\n* `0.1` [Initial Release](https://github.com/gramian/chicken-arcadedb) (2022-11-15)\n* `0.2` [Minor Update](https://github.com/gramian/chicken-arcadedb) (2022-11-16)\n* `0.3` [Major Update](https://github.com/gramian/chicken-arcadedb) (2022-12-09)\n* `0.4` [Minor Update](https://github.com/gramian/chicken-arcadedb) (2023-01-16)\n* `0.5` [Major Update](https://github.com/gramian/chicken-arcadedb) (2023-03-01)\n* `0.6` [Major Update](https://github.com/gramian/chicken-arcadedb) (2023-05-05)\n* `0.7` [Minor Update](https://github.com/gramian/chicken-arcadedb) (2023-09-29)\n* `0.8` [Major Update](https://github.com/gramian/chicken-arcadedb) (2024-03-12)\n\n## License\n\nCopyright (c) 2022 _Christian Himpe_ under [zlib-acknowledgement](https://spdx.org/licenses/zlib-acknowledgement.html) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgramian%2Fchicken-arcadedb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgramian%2Fchicken-arcadedb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgramian%2Fchicken-arcadedb/lists"}