Skip to content

Commit b227fd6

Browse files
committed
Add sync-upstream script to manage upstream changes while preserving fork-specific customizations
1 parent dfd18d5 commit b227fd6

3 files changed

Lines changed: 348 additions & 158 deletions

File tree

.gitattributes

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
package/src/main/scripts/console.bat eol=crlf
22
package/src/main/scripts/server.bat eol=crlf
3+
4+
# Fork-specific paths - automatically prefer our version during upstream sync
5+
# See ./sync-upstream.sh for sync workflow
6+
/README.md merge=ours
7+
.github/workflows/** merge=ours
8+
bindings/python/** merge=ours

README.md

Lines changed: 138 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -1,193 +1,173 @@
1-
# ![ArcadeDB](https://arcadedb.com/assets/images/arcadedb-logo.png)
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-
&nbsp;
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-
&nbsp;
10-
<a href="https://docs.oracle.org/en/java/21/"><img src="https://img.shields.io/badge/Java-%3D21-green.svg"></a>
11-
&nbsp;
12-
<a href="https://docs.oracle.org/en/java/17/"><img src="https://img.shields.io/badge/Java-%3D17-green.svg"></a>
13-
&nbsp;
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-
&nbsp;
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-
&nbsp;
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-
&nbsp;
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-
&nbsp;
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-
&nbsp;
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-
&nbsp;
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-
&nbsp;
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-
&nbsp;
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-
&nbsp;
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-
&nbsp;
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-
&nbsp;
49-
<a href="https://discord.gg/w2Npx2B7hZ"><img height="25" src="studio/src/main/resources/static/images/social/discord.svg" alt="Discord"></a>
50-
&nbsp;
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-
&nbsp;
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
972

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.
1034
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+
[![PyPI - Headless](https://img.shields.io/badge/PyPI-headless-blue)](https://pypi.org/project/arcadedb-embedded-headless/)
6+
[![PyPI - Minimal](https://img.shields.io/badge/PyPI-minimal-blue)](https://pypi.org/project/arcadedb-embedded-minimal/)
7+
[![PyPI - Full](https://img.shields.io/badge/PyPI-full-blue)](https://pypi.org/project/arcadedb-embedded/)
8+
[![Tests](https://img.shields.io/badge/tests-44%2F44%20passing-brightgreen)](https://github.com/humemai/arcadedb-embedded-python/actions)
9+
[![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](LICENSE)
10610

107-
![ArcadeDB Studio](https://arcadedb.com/assets/images/openbeer-demo-graph.png)
11+
**📖 [Documentation](https://humemai.github.io/arcadedb-embedded-python/) | 🐛 [Issues](https://github.com/humemai/arcadedb-embedded-python/issues)**
10812

109-
ArcadeDB is cloud-ready with [Docker](https://docs.arcadedb.com/#Docker) and [Kubernetes](https://docs.arcadedb.com/#Kubernetes) support.
13+
---
11014

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
11216

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+
```
11424

115-
There are three variants of (about monthly) releases:
25+
**Requirements:** Python 3.8+ and [Java 21+](https://adoptium.net/) (JRE)
11626

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

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)
12230

123-
### Java Versions
31+
```python
32+
import arcadedb_embedded as arcadedb
12433

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:
12636

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")
12839

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+
""")
13048

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')}")
13253

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'")
14861
```
14962

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+
```
15185

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+
""")
154113
```
155114

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/)**
157116

158-
Join our growing community around the world, for ideas, discussions and help regarding ArcadeDB.
117+
---
159118

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
167120

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
169128

170-
For security issues kindly email us at support@arcadedb.com instead of posting a public issue on GitHub.
129+
---
171130

172-
### License
131+
## Distribution Comparison
173132

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 |
177138

178-
### Thanks To
139+
All distributions use the same import: `import arcadedb_embedded as arcadedb`
179140

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
181151

182-
### Contributing
152+
This fork provides **embedded Python bindings** using JPype to bridge Python and the Java-based ArcadeDB engine.
183153

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)
186159

187-
Have fun with data!
160+
---
161+
162+
## Contributing
188163

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)
190166

191167
---
192168

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

Comments
 (0)