ArcadeDB Documentation

repository·main·Indexed 21 days ago

https://github.com/arcadedata/arcadedb

A high-performance, multi-model DBMS supporting Graph, Document, Key/Value, Search, Time Series, Vector, and Geospatial models. Features include a transactional engine using 'Low Level Java' (LLJ) techniques, support for SQL, OpenCypher, and MongoDB query languages, and native Python bindings via the arcadedb-embedded package.

Tokens
280.1K
Snippets
638
Records
1.1K
Agent score
74%

What's inside ArcadeDB

  1. Overview of the e2e-python Bolt Conformance Suite

    main

    The Bolt Conformance Suite is a testing implementation designed to certify the official neo4j Python driver against ArcadeDB's Bolt protocol implementation. It aims to implement all 39 scenarios defined in the bolt/conformance/spec.yaml specification as pytest tests.

    Key Technical Details:

    • Target File: e2e-python/tests/test_bolt.py
    • Test Framework: pytest
    • Driver: neo4j (official Python driver) >=6.2.0
    • Infrastructure: testcontainers for managing database instances.
    • Protocol Support: Tests include both TLS-disabled and TLS-mode scenarios.
    • Python Requirements: Python >=3.10 (Python 3.13 used in CI).
  2. Overview of ArcadeDB Models and Languages

    main

    ArcadeDB is a multi-model DBMS supporting several data models and query languages:

    Supported Models

    • Graph Database: Compatible with Neo4j Cypher, Apache Tinkerpop Gremlin, and OrientDB SQL.
    • Document Database: Compatible with MongoDB driver, MongoDB queries, and OrientDB SQL.
    • Key/Value: Compatible with the Redis driver.
    • Search Engine
    • Time Series: Supports InfluxDB Line Protocol, Prometheus (remote_write/read), and PromQL.
    • Vector Embedding
    • Geospatial

    Supported Query Languages

    • SQL (from OrientDB SQL)
    • Cypher (Open Cypher)
    • Apache Gremlin (Apache Tinkerpop v3.7.x)
    • GraphQL Language
    • MongoDB Query Language
  3. Overview of the Bolt (Java) Conformance Certification Plan

    main

    The Bolt (Java) Conformance Certification plan aims to expand the Java Bolt certification from 4 smoke tests to the full 39-scenario A1 conformance specification. This is achieved by driving tests using the real neo4j-java-driver to ensure ArcadeDB's Java compatibility matrix is comparable to the JS and Go implementations.

    Architecture

    The certification uses two layers:

    1. e2e layer: Expands RemoteBoltDatabaseIT (using JUnit 5 and @Nested structures) against the arcadedata/arcadedb:latest Testcontainer.
    2. bolt-module layer: Adds or extends narrow Integration Tests (ITs) for scenarios that the shared container cannot express, such as specific TLS modes or wire-level type serialization.

    A helper assertExpectedFailure is used to reproduce documented gaps (e.g., issue #4890) without causing build failures, similar to the JS it.failing pattern.

  4. Overview of e2e-js test suites

    main

    The e2e-js directory contains the following test suites:

    • src/js-bolt-conformance.test.js: Implements Bolt conformance scenarios against the official neo4j-driver. It covers 39 scenarios including connection, auth, transactions, and data types.
    • src/js-bolt-e2e.test.js: Focuses on Bolt variable-length-path regression.
    • src/js-pg-e2e.test.js: A smoke test for the PostgreSQL wire protocol.

    Note on Driver Versions: This suite currently pins neo4j-driver version ^6.0.1.

  5. Overview of the e2e-go Bolt Conformance Suite

    main

    The e2e-go module is a standalone Go-based testing suite designed to certify the neo4j-go-driver/v5 against the official Bolt conformance specification. It mirrors the functionality of the existing e2e-python and e2e-csharp suites, ensuring ArcadeDB's Bolt protocol implementation meets industry standards across 39 specific scenarios.

    Key Architecture Details

    • Standalone Module: It resides in the e2e-go/ directory at the repository root and is not part of the Maven reactor.
    • Container Management: Uses testcontainers-go to manage ArcadeDB instances. A shared container handles ~37 non-TLS scenarios, while two lazy-loaded containers handle TLS-specific scenarios (CONN-002 and CONN-005).
    • Data Seeding: All database setup (creating databases, loading type matrices) is performed via HTTP on port 2480. Data is never seeded over the Bolt protocol.
    • Handling Known Gaps: Known protocol gaps are managed using a strict-xfail helper (similar to KnownGapAssertions in C#) to ensure expected failures are explicitly asserted.
  6. Understand the e2e-js Bolt conformance suite design

    main

    The e2e-js Bolt conformance suite is a Jest-based testing framework designed to certify the neo4j-driver (npm) against the ArcadeDB Bolt protocol. It implements 39 scenarios defined in the shared bolt/conformance/spec.yaml.

    Key characteristics:

    • Official Driver Only: Uses the standard neo4j-driver (^6.0.1) without mocks.
    • Traceability: Every test is prefixed with its spec ID (e.g., [TYPE-011]) for easy coverage auditing.
    • Gap Documentation: Known protocol gaps are documented using Jest's it.failing() (the equivalent of xfail(strict=True)), which ensures the test fails as expected and alerts developers if the gap is ever fixed.
    • Polyglot Parity: The suite mirrors the fixture and seeding strategies used in the Python, Go, and C# conformance suites to ensure comparable results across languages.
  7. HA Raft Server Command Propagation Implementation Plan

    main

    This implementation plan outlines the process for propagating destructive and administrative commands—such as drop database, restore database, import database, create user, and drop user—from a Raft leader to all replicas.

    Core Architecture:

    • New Log Entry Types: DROP_DATABASE_ENTRY and SECURITY_USERS_ENTRY are introduced to the Raft log.
    • Extended Entry: INSTALL_DATABASE_ENTRY is extended to include a forceSnapshot flag.
    • Raft-First Semantics: Destructive mutations are only applied by the ArcadeStateMachine once the entry has been committed via RaftGroupCommitter.submitAndWait.
    • User Replication: Users (stored in server-users.jsonl) are replicated using a HAServerPlugin.replicateSecurityUsers(String) hook, which carries the full JSON content through the log. New peers are seeded with current users via PostAddPeerHandler.
  8. Core features of arcadedb-embedded

    main

    The arcadedb-embedded package provides several key capabilities for Python developers:

    • Embedded Mode: Direct database access within the Python process (no network required). For client-server deployments, use the official ArcadeDB server.
    • Multi-model Support: Graph, Document, Key/Value, Vector, and Time Series.
    • Multiple Query Languages: SQL, OpenCypher, and MongoDB.
    • Vector Storage: Store and query vector embeddings with HNSW (JVector) indexing.
    • ACID Transactions: Full transaction support via context managers.
    • No Java Required: Includes a bundled JRE (~63MB uncompressed).
    • High Performance: Direct JVM integration via JPype.
  9. Implementation Plan for e2e-js Bolt conformance suite

    main

    The e2e-js package is being extended to include a Bolt conformance suite. The goal is to validate ArcadeDB against all 39 scenarios defined in the bolt/conformance/spec.yaml using the official neo4j-driver.

    Architecture

    • Test Runner: Jest 30.
    • Test File: A new file e2e-js/src/js-bolt-conformance.test.js is used to boot an ArcadeDB testcontainer.
    • Database Seeding: The database is seeded over HTTP using /api/v1/server or /api/v1/command/beer to ensure the Bolt serialization path remains isolated from the seeding process.
    • Scenario Execution: Each scenario is executed as a discrete it() block named with its bracketed spec ID (e.g., [TYPE-011] duration round-trip).
    • Handling Gaps/Unavailable Infra:
      • Known server gaps use Jest's it.failing().
      • Infrastructure-unavailable scenarios use it.skip().
    • TLS Support: TLS scenarios utilize a self-signed certificate generated via JDK keytool and baked into a derived Docker image at test time.

    Tech Stack

    • Runtime: Node 24
    • Test Framework: Jest 30, jest-junit ^17
    • Driver: neo4j-driver ^6.0.1
    • Containerization: testcontainers ^12
    • Security: JDK keytool (for TLS)
  10. Review the e2e-js Bolt conformance suite implementation plan

    main

    The implementation plan for the e2e-js Bolt conformance suite ensures that every scenario defined in spec.yaml is mapped to a specific task. The suite covers the following functional areas:

    • Connection: (T1/T10)
    • Auth: (T2)
    • Transactions: (T3)
    • Causal + Multi-DB: (T4)
    • Result Handling: (T5)
    • Type Roundtrip: (T6/T7)
    • Errors: (T8)
    • Protocol: (T9)
    • README + Coverage Proof: (T11)

    Implementation details include using it.failing for known gaps, it.skip for intentional skips, and specific strategies for fixture management, image resolution, and HTTP-only seeding while maintaining an untouched-regression constraint.

  11. Overview of ArcadeDB Native Image (Experimental)

    main

    ArcadeDB offers an experimental native-image build via GraalVM. This provides a self-contained native binary designed for fast cold starts and a low memory footprint. It is delivered as an experimental add-on and does not replace the standard JVM distribution or existing Docker images.

    Included Features

    • Core Engine: engine, network, server (HTTP/REST + Studio), ha-raft, metrics, console, graphql.
    • Wire Protocols: postgresw, redisw, mongodbw, bolt, grpcw.
    • Query Languages: SQL and Cypher are fully supported.

    Excluded/Conditional Features

    • Gremlin: Removed from the native binary due to its large dynamic-reflection surface.
    • OpenTelemetry tracing: Excluded to reduce reflection surface.
    • Polyglot JS: Support for JS user-defined SQL functions and the polyglot query engine is conditional. If not successfully implemented, users will receive a clear "JS scripting unavailable in native build" error when attempting to use it. SQL and Cypher remain unaffected.