|
1 | | -#  |
2 | | - |
3 | | -<h2 align="center">Multi Model DBMS Built for Extreme Performance</h2> |
4 | | - |
5 | | -<p align="center"> |
6 | | - <a href="https://github.com/ArcadeData/arcadedb/releases"><img src="https://img.shields.io/github/v/release/arcadedata/arcadedb?color=%23ff00a0&include_prereleases&label=version&sort=semver"></a> |
7 | | - |
8 | | - <a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-green.svg"></a> |
9 | | - |
10 | | - <a href="https://docs.oracle.org/en/java/21/"><img src="https://img.shields.io/badge/Java-%3D21-green.svg"></a> |
11 | | - |
12 | | - <a href="https://docs.oracle.org/en/java/17/"><img src="https://img.shields.io/badge/Java-%3D17-green.svg"></a> |
13 | | - |
14 | | - <a href="https://api.reuse.software/info/github.com/ArcadeData/arcadedb"><img src="https://api.reuse.software/badge/github.com/ArcadeData/arcadedb"></a> |
15 | | - |
16 | | - <a href="https://maven-badges.herokuapp.com/maven-central/com.arcadedb/arcadedb-parent"><img src="https://maven-badges.herokuapp.com/maven-central/com.arcadedb/arcadedb-parent/badge.svg"></a> |
17 | | - |
18 | | - <a href="https://hub.docker.com/repository/docker/arcadedata/arcadedb/general"><img src="https://img.shields.io/docker/pulls/arcadedata/arcadedb"></a> |
19 | | - <a href="https://deepwiki.com/ArcadeData/arcadedb"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a> |
20 | | -</p> |
21 | | - |
22 | | -<p align="center"> |
23 | | - <a href="https://github.com/ArcadeData/arcadedb/actions/workflows/mvn-deploy.yml"><img src="https://github.com/ArcadeData/arcadedb/actions/workflows/mvn-deploy.yml/badge.svg"></a> |
24 | | - |
25 | | - <a href="https://www.codacy.com/gh/ArcadeData/arcadedb/dashboard?utm_source=github.com&utm_medium=referral&utm_content=ArcadeData/arcadedb&utm_campaign=Badge_Coverage"><img src="https://app.codacy.com/project/badge/Coverage/1f971260db1e46638bd3fd91e3ebf668"></a> |
26 | | - |
27 | | - <a href="https://app.codacy.com/gh/ArcadeData/arcadedb?utm_source=github.com&utm_medium=referral&utm_content=ArcadeData/arcadedb&utm_campaign=Badge_Grade_Settings"><img src="https://api.codacy.com/project/badge/Grade/d40cc721f39b49eb81408307960f145b"></a> |
28 | | - |
29 | | - <a href="https://www.meterian.io/report/gh/ArcadeData/arcadedb"><img src="https://www.meterian.io/badge/gh/ArcadeData/arcadedb/security?branch=main"></a> |
30 | | - |
31 | | - <a href="https://www.meterian.io/report/gh/ArcadeData/arcadedb"><img src="https://www.meterian.io/badge/gh/ArcadeData/arcadedb/stability?branch=main"></a> |
32 | | -</p> |
33 | | - |
34 | | -<p align="center"> |
35 | | - <a href="https://discord.gg/w2Npx2B7hZ"><img width="208" height="97" src="https://arcadedb.com/assets/images/discord_button.png" alt="Join Discord"></a> |
36 | | -</p> |
37 | | - |
38 | | -<p align="center"> |
39 | | - <a href="https://github.com/arcadedata/arcadedb"><img height="25" src="studio/src/main/resources/static/images/social/github.svg" alt="Github"></a> |
40 | | - |
41 | | - <a href="https://www.linkedin.com/company/arcadedb/"><img height="25" src="studio/src/main/resources/static/images/social/linkedin.svg" alt="LinkedIn"></a> |
42 | | - |
43 | | - <a href="https://bsky.app/profile/arcadedb.bsky.social"><img height="25" src="studio/src/main/resources/static/images/social/bluesky.svg" alt="Bluesky"></a> |
44 | | - |
45 | | - <a href="https://twitter.com/arcade_db"><img height="25" src="studio/src/main/resources/static/images/social/twitter.svg" alt="Twitter"></a> |
46 | | - |
47 | | - <a href="https://www.youtube.com/@ArcadeDB"><img height="25" src="studio/src/main/resources/static/images/social/youtube.svg" alt="Youtube"></a> |
48 | | - |
49 | | - <a href="https://discord.gg/w2Npx2B7hZ"><img height="25" src="studio/src/main/resources/static/images/social/discord.svg" alt="Discord"></a> |
50 | | - |
51 | | - <a href="https://stackoverflow.com/questions/tagged/arcadedb"><img height="25" src="studio/src/main/resources/static/images/social/stack-overflow.svg" alt="StackOverflow"></a> |
52 | | - |
53 | | - <a href="https://blog.arcadedb.com/"><img height="25" src="studio/src/main/resources/static/images/social/blog.svg" alt="Blog"></a> |
54 | | -</p> |
55 | | - |
56 | | -ArcadeDB is a Multi-Model DBMS (created originally as a fork |
57 | | -from [OrientDB Open Source project](https://github.com/orientechnologies/orientdb) after the acquisition by SAP) with a brand-new |
58 | | -engine made of Alien Technology, able to crunch millions of records per second on common hardware with the usage of |
59 | | -minimal resources. ArcadeDB is written in LLJ: Low Level Java. It's still Java21+ but only using low level API to use advanced |
60 | | -mechanical sympathy techniques and a reduced pressure of the Garbage Collector. It's highly optimized for extreme performance. Runs |
61 | | -from a Raspberry Pi to multiple servers on the cloud. |
62 | | - |
63 | | -ArcadeDB is fully transactional DBMS with support for ACID transactions, structured and unstructured data, native graph engine (no |
64 | | -joins but links between records), full-text indexing, geospatial querying, and advanced security. |
65 | | - |
66 | | -ArcadeDB supports the following models: |
67 | | - |
68 | | -- [Graph Database](https://docs.arcadedb.com#Graph-Model) (compatible with Neo4j Cypher, Apache Tinkerpop Gremlin and OrientDB SQL) |
69 | | -- [Document Database](https://docs.arcadedb.com#Document-Model) (compatible with the MongoDB driver + MongoDB queries and OrientDB |
70 | | - SQL) |
71 | | -- [Key/Value](https://docs.arcadedb.com#KeyValue-Model) (compatible with the Redis driver) |
72 | | -- [Search Engine](https://docs.arcadedb.com/#SearchEngine-Model) |
73 | | -- [Time Series](https://docs.arcadedb.com#TimeSeries-Model) |
74 | | -- [Vector Embedding](https://docs.arcadedb.com/#VectorEmbedding-Model) |
75 | | - |
76 | | -ArcadeDB understands multiple languages: |
77 | | - |
78 | | -- [SQL](https://docs.arcadedb.com#SQL) (from OrientDB SQL) |
79 | | -- Neo4j [Cypher (Open Cypher)](https://docs.arcadedb.com#Cypher) |
80 | | -- [Apache Gremlin (Apache Tinkerpop v3.7.x)](https://docs.arcadedb.com#Gremlin-API) |
81 | | -- [GraphQL Language](https://docs.arcadedb.com#GraphQL) |
82 | | -- [MongoDB Query Language](https://docs.arcadedb.com#MongoDB-API) |
83 | | - |
84 | | -ArcadeDB can be used as: |
85 | | - |
86 | | -- Embedded from any language on top of the Java Virtual Machine |
87 | | -- Remotely by using [HTTP/JSON](https://docs.arcadedb.com#HTTP-API) |
88 | | -- Remotely by using a [Postgres driver](https://docs.arcadedb.com#Postgres-Driver) (ArcadeDB implements Postgres Wire protocol) |
89 | | -- Remotely by using a [Redis driver](https://docs.arcadedb.com#Redis-API) (only a subset of the operations are implemented) |
90 | | -- Remotely by using a [MongoDB driver](https://docs.arcadedb.com#MongoDB-API) (only a subset of the operations are implemented) |
91 | | - |
92 | | -For more information, see the [documentation](https://docs.arcadedb.com). |
93 | | - |
94 | | -### Getting started in 5 minutes |
95 | | - |
96 | | -Start ArcadeDB Server with Docker: |
| 1 | +# ArcadeDB Python Bindings |
97 | 2 |
|
98 | | -``` |
99 | | -docker run --rm -p 2480:2480 -p 2424:2424 \ |
100 | | - -e JAVA_OPTS="-Darcadedb.server.rootPassword=playwithdata -Darcadedb.server.defaultDatabases=Imported[root]{import:https://github.com/ArcadeData/arcadedb-datasets/raw/main/orientdb/OpenBeer.gz}" \ |
101 | | - arcadedata/arcadedb:latest |
102 | | -``` |
| 3 | +> **Python bindings for [ArcadeDB](https://github.com/ArcadeData/arcadedb)** - A multi-model database supporting Graph, Document, Key/Value, Vector, and Time Series models with extreme performance. |
103 | 4 |
|
104 | | -Now open your browser on http://localhost:2480 and play with [ArcadeDB Studio](https://docs.arcadedb.com/#_studio) and the |
105 | | -imported `OpenBeer` database to find your favorite beer. |
| 5 | +[](https://pypi.org/project/arcadedb-embedded-headless/) |
| 6 | +[](https://pypi.org/project/arcadedb-embedded-minimal/) |
| 7 | +[](https://pypi.org/project/arcadedb-embedded/) |
| 8 | +[](https://github.com/humemai/arcadedb-embedded-python/actions) |
| 9 | +[](LICENSE) |
106 | 10 |
|
107 | | - |
| 11 | +**📖 [Documentation](https://humemai.github.io/arcadedb-embedded-python/) | 🐛 [Issues](https://github.com/humemai/arcadedb-embedded-python/issues)** |
108 | 12 |
|
109 | | -ArcadeDB is cloud-ready with [Docker](https://docs.arcadedb.com/#Docker) and [Kubernetes](https://docs.arcadedb.com/#Kubernetes) support. |
| 13 | +--- |
110 | 14 |
|
111 | | -You can also [download the latest release](https://github.com/ArcadeData/arcadedb/releases), unpack it on your local hard drive and start the server with `bin/server.sh` or `bin/server.bat` for Windows. |
| 15 | +## Quick Start |
112 | 16 |
|
113 | | -### Releases |
| 17 | +### Installation |
| 18 | + |
| 19 | +```bash |
| 20 | +pip install arcadedb-embedded-headless # Recommended for production |
| 21 | +pip install arcadedb-embedded-minimal # With Studio UI for development |
| 22 | +pip install arcadedb-embedded # With Gremlin + GraphQL |
| 23 | +``` |
114 | 24 |
|
115 | | -There are three variants of (about monthly) releases: |
| 25 | +**Requirements:** Python 3.8+ and [Java 21+](https://adoptium.net/) (JRE) |
116 | 26 |
|
117 | | -- `full` - this is the complete package of including all modules |
118 | | -- `minimal` - this package excludes the `gremlin`, `redisw`, `mongodbw`, `graphql` modules |
119 | | -- `headless` - this package excludes the `gremlin`, `redisw`, `mongodbw`, `graphql`, `studio` modules |
| 27 | +**Technology:** Uses [JPype](https://jpype.readthedocs.io/) to bridge Python and Java, providing direct access to ArcadeDB's embedded engine with minimal overhead. |
120 | 28 |
|
121 | | -The nightly builds of the repository head can be found [here](https://central.sonatype.com/service/rest/repository/browse/maven-snapshots/com/arcadedb/arcadedb-package/). |
| 29 | +### Basic Usage (CRUD) |
122 | 30 |
|
123 | | -### Java Versions |
| 31 | +```python |
| 32 | +import arcadedb_embedded as arcadedb |
124 | 33 |
|
125 | | -Starting from ArcadeDB 24.4.1 code is compatible with Java 21. |
| 34 | +# Create database |
| 35 | +with arcadedb.create_database("/tmp/mydb") as db: |
126 | 36 |
|
127 | | -Java 21 packages are available on [Maven central](https://repo.maven.apache.org/maven2/com/arcadedb/) and docker images on [Docker Hub](https://hub.docker.com/r/arcadedata/arcadedb). |
| 37 | + # CREATE: Define schema |
| 38 | + db.command("sql", "CREATE DOCUMENT TYPE Person") |
128 | 39 |
|
129 | | -We also support Java 17 on a separate branch `java17` for those who cannot upgrade to Java 21 yet through GitHub packages. |
| 40 | + # CREATE: Insert data (requires transaction) |
| 41 | + with db.transaction(): |
| 42 | + db.command("sql", """ |
| 43 | + INSERT INTO Person SET name = 'Alice', age = 30, city = 'NYC' |
| 44 | + """) |
| 45 | + db.command("sql", """ |
| 46 | + INSERT INTO Person SET name = 'Bob', age = 25, city = 'LA' |
| 47 | + """) |
130 | 48 |
|
131 | | -To use Java 17 inside your project, add the repository to your `pom.xml` and reference dependencies as follows: |
| 49 | + # READ: Query data |
| 50 | + result = db.query("sql", "SELECT FROM Person WHERE age > 20") |
| 51 | + for record in result: |
| 52 | + print(f"{record.get_property('name')} - {record.get_property('age')}") |
132 | 53 |
|
133 | | -```xml |
134 | | - <repositories> |
135 | | - <repository> |
136 | | - <name>github</name> |
137 | | - <id>github</id> |
138 | | - <url>https://maven.pkg.github.com/ArcadeData/arcadedb</url> |
139 | | - </repository> |
140 | | - </repositories> |
141 | | - <dependencies> |
142 | | - <dependency> |
143 | | - <groupId>com.arcadedb</groupId> |
144 | | - <artifactId>arcadedb-engine</artifactId> |
145 | | - <version>25.5.1-java17</version> |
146 | | - </dependency> |
147 | | - </dependencies> |
| 54 | + # UPDATE: Modify records |
| 55 | + with db.transaction(): |
| 56 | + db.command("sql", "UPDATE Person SET age = 31 WHERE name = 'Alice'") |
| 57 | + |
| 58 | + # DELETE: Remove records |
| 59 | + with db.transaction(): |
| 60 | + db.command("sql", "DELETE FROM Person WHERE name = 'Bob'") |
148 | 61 | ``` |
149 | 62 |
|
150 | | -Docker images are available on ghcr.io too: |
| 63 | +### Graph Example |
| 64 | + |
| 65 | +```python |
| 66 | +# Create graph schema |
| 67 | +db.command("sql", "CREATE VERTEX TYPE User") |
| 68 | +db.command("sql", "CREATE EDGE TYPE Follows") |
| 69 | + |
| 70 | +# Insert vertices and edges |
| 71 | +with db.transaction(): |
| 72 | + db.command("sql", "CREATE VERTEX User SET name = 'Alice'") |
| 73 | + db.command("sql", "CREATE VERTEX User SET name = 'Bob'") |
| 74 | + db.command("sql", """ |
| 75 | + CREATE EDGE Follows |
| 76 | + FROM (SELECT FROM User WHERE name = 'Alice') |
| 77 | + TO (SELECT FROM User WHERE name = 'Bob') |
| 78 | + """) |
| 79 | + |
| 80 | +# Query graph |
| 81 | +result = db.query("sql", """ |
| 82 | + SELECT expand(out('Follows')) FROM User WHERE name = 'Alice' |
| 83 | +""") |
| 84 | +``` |
151 | 85 |
|
152 | | -```shell |
153 | | -docker pull ghcr.io/arcadedata/arcadedb:25.5.1-java17 |
| 86 | +### Vector Search Example |
| 87 | + |
| 88 | +```python |
| 89 | +# Create vector index |
| 90 | +db.command("sql", "CREATE VERTEX TYPE Document") |
| 91 | +db.command("sql", """ |
| 92 | + CREATE PROPERTY Document.embedding ARRAY OF DOUBLE |
| 93 | +""") |
| 94 | +db.command("sql", """ |
| 95 | + CREATE VECTOR INDEX Document_embedding |
| 96 | + ON Document(embedding) |
| 97 | + HNSW M 16, EF_CONSTRUCTION 128 |
| 98 | +""") |
| 99 | + |
| 100 | +# Insert vectors |
| 101 | +with db.transaction(): |
| 102 | + db.command("sql", """ |
| 103 | + CREATE VERTEX Document |
| 104 | + SET text = 'Hello world', embedding = [0.1, 0.2, 0.3] |
| 105 | + """) |
| 106 | + |
| 107 | +# Search by vector similarity |
| 108 | +result = db.query("sql", """ |
| 109 | + SELECT FROM Document |
| 110 | + ORDER BY embedding <-> [0.1, 0.2, 0.4] |
| 111 | + LIMIT 5 |
| 112 | +""") |
154 | 113 | ``` |
155 | 114 |
|
156 | | -### Community |
| 115 | +**📚 [More Examples](https://humemai.github.io/arcadedb-embedded-python/latest/examples/) | [Full Tutorial](https://humemai.github.io/arcadedb-embedded-python/latest/getting-started/quickstart/)** |
157 | 116 |
|
158 | | -Join our growing community around the world, for ideas, discussions and help regarding ArcadeDB. |
| 117 | +--- |
159 | 118 |
|
160 | | -- Chat live with us on [Discord](https://discord.gg/w2Npx2B7hZ) |
161 | | -- Follow us on [Twitter](https://twitter.com/arcade_db) |
162 | | -- or on [Bluesky](https://bsky.app/profile/arcadedb.bsky.social) |
163 | | -- Connect with us on [LinkedIn](https://www.linkedin.com/products/arcadedb) |
164 | | -- or on [Facebook](https://www.facebook.com/arcadedb) |
165 | | -- Questions tagged `#arcadedb` on [Stack Overflow](https://stackoverflow.com/questions/tagged/arcadedb) |
166 | | -- View our official [Blog](https://blog.arcadedb.com/) |
| 119 | +## Features |
167 | 120 |
|
168 | | -### Security |
| 121 | +✅ **Embedded Mode** - Runs in your Python process (no server needed) |
| 122 | +✅ **Multi-Model** - Graph, Document, Key/Value, Vector, Time Series |
| 123 | +✅ **Query Languages** - SQL, Cypher, Gremlin (full distribution), MongoDB |
| 124 | +✅ **ACID Transactions** - Full transactional support |
| 125 | +✅ **Vector Search** - HNSW indexing for embeddings |
| 126 | +✅ **Self-Contained** - All JARs bundled, no external dependencies |
| 127 | +✅ **Production Ready** - 44/44 tests passing, actively maintained |
169 | 128 |
|
170 | | -For security issues kindly email us at support@arcadedb.com instead of posting a public issue on GitHub. |
| 129 | +--- |
171 | 130 |
|
172 | | -### License |
| 131 | +## Distribution Comparison |
173 | 132 |
|
174 | | -ArcadeDB is Free for any usage and licensed under the liberal [Open Source Apache 2 license](LICENSE). If you need commercial |
175 | | -support, or you need to have an issue fixed ASAP, check our [GitHub Sponsor page](https://github.com/sponsors/ArcadeData) on both |
176 | | -Recurrent and One-Time tiers. All the sponsorship received will be distributed to the active contributors of this project. |
| 133 | +| Distribution | Size | Studio UI | Gremlin | Use Case | |
| 134 | +|-------------|------|-----------|---------|----------| |
| 135 | +| **Headless** | ~94MB | ❌ | ❌ | Production, CI/CD | |
| 136 | +| **Minimal** | ~97MB | ✅ | ❌ | Development with UI | |
| 137 | +| **Full** | ~158MB | ✅ | ✅ | All features | |
177 | 138 |
|
178 | | -### Thanks To |
| 139 | +All distributions use the same import: `import arcadedb_embedded as arcadedb` |
179 | 140 |
|
180 | | -<a href="https://www.yourkit.com"><img src="https://www.yourkit.com/images/yklogo.png"></a> for providing YourKit Profiler to our committers. |
| 141 | +--- |
| 142 | + |
| 143 | +## About ArcadeDB |
| 144 | + |
| 145 | +**[ArcadeDB](https://github.com/ArcadeData/arcadedb)** is a high-performance multi-model database that supports: |
| 146 | + |
| 147 | +- **Data Models:** Graph, Document, Key/Value, Vector, Time Series |
| 148 | +- **Query Languages:** SQL, Cypher, Gremlin, MongoDB, GraphQL |
| 149 | +- **Architecture:** ACID transactions, native graph engine, full-text search |
| 150 | +- **Performance:** Millions of records/second with minimal resources |
181 | 151 |
|
182 | | -### Contributing |
| 152 | +This fork provides **embedded Python bindings** using JPype to bridge Python and the Java-based ArcadeDB engine. |
183 | 153 |
|
184 | | -We would love for you to get involved with ArcadeDB project. |
185 | | -If you wish to help, you can learn more about how you can contribute to this project in the [contribution guide](CONTRIBUTING.md). |
| 154 | +**Main ArcadeDB Resources:** |
| 155 | +- 📖 [Official Documentation](https://docs.arcadedb.com) |
| 156 | +- 🐳 [Docker Images](https://hub.docker.com/r/arcadedata/arcadedb) |
| 157 | +- 💬 [Community Discord](https://discord.gg/w2Npx2B7hZ) |
| 158 | +- 🔧 [Upstream Repository](https://github.com/ArcadeData/arcadedb) |
186 | 159 |
|
187 | | -Have fun with data! |
| 160 | +--- |
| 161 | + |
| 162 | +## Contributing |
188 | 163 |
|
189 | | -The ArcadeDB Team |
| 164 | +**Python Bindings:** Issues and PRs welcome at [this repository](https://github.com/humemai/arcadedb-embedded-python/issues) |
| 165 | +**Main ArcadeDB:** Contribute to the [upstream project](https://github.com/ArcadeData/arcadedb) |
190 | 166 |
|
191 | 167 | --- |
192 | 168 |
|
193 | | -#### TL;DR: [ArcadeDB](https://arcadedb.com) is an open-source multi-model NoSQL database systems. |
| 169 | +## License |
| 170 | + |
| 171 | +Apache License 2.0 - See [LICENSE](LICENSE) |
| 172 | + |
| 173 | +Built on [ArcadeDB](https://arcadedb.com) | Python bindings by [HumemAI](https://github.com/humemai) |
0 commit comments