Skip to content
JNOSQLPublic

About

The Eclipse JNoSQL is a framework whose has the goal to help Java developers to create Jakarta EE applications with NoSQL

Resources

Stars

40 stars

Watchers

8 watching

Forks

Latest commit

 

History

1,230 Commits

Folders and files

Repository files navigation

JNoSQL examples code

Introduction

Java SE sample using NoSQL with Jakarta NoSQL.

This project contains several projects with the primary goal of exploring the Jakarta NoSQL on several databases.

Key-Value

Redis

Redis

Redis is an in-memory data structure store, used as a distributed, in-memory key–value database, cache and message broker, with optional durability. Redis supports different kinds of abstract data structures, such as strings, lists, maps, sets, sorted sets, HyperLogLogs, bitmaps, streams, and spatial indices.

How to install with Docker
  1. Install docker: https://www.docker.com/

  2. https://hub.docker.com/_/redis

  3. Run docker command:

docker run --name redis-instance -p 6379:6379 -d redis
Projects

Valkey

Valkey

Valkey is an open-source in-memory key–value database, used as a distributed cache and message broker, with optional durability. Because it holds all data in memory and because of its design, Valkey offers low-latency reads and writes, making it particularly suitable for use cases that require a cache.

How to install with Docker
docker run --name valkey-instance -p 6379:6379 -d valkey/valkey:latest
Projects

Hazelcast

Hazelcast

Hazelcast:In computing, Hazelcast is an open source in-memory data grid based on Java.

Projects

Memcached

Memcached

Memcached is a general-purpose distributed memory-caching system. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source must be read. Memcached is free and open-source software, licensed under the Revised BSD license.

How to install with Docker
  1. Install docker: https://www.docker.com/

  2. https://hub.docker.com/_/memcached

  3. Run docker command:

docker run -d --name memcached-instance -p 11211:11211 memcached:latest
Projects

Column

Cassandra

Cassandra

Cassandra: Apache Cassandra is a free and open-source distributed database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure.

How to install with Docker
  1. Install docker: https://www.docker.com/

  2. https://hub.docker.com/_/cassandra

  3. Run docker command:

docker run -d --name casandra-instance -p 9042:9042 cassandra
Projects

Scylla

ScyllaDB

ScyllaDB is an open-source distributed NoSQL wide-column data store. It was designed to be compatible with Apache Cassandra while achieving significantly higher throughputs and lower latencies.

How to install with Docker
docker run -d --name scylladb-instance -p 9042:9042 scylladb/scylla
Projects

Document

ArangoDB

ArangoDB: ArangoDB is a native multi-model database system developed by triAGENS GmbH. The database system supports three important data models (key/value, documents, graphs) with one database core and a unified query language AQL (ArangoDB Query Language). The query language is declarative and allows the combination of different data access patterns in a single query. ArangoDB is a NoSQL database system but AQL is similar in many ways to SQL.

How to install with Docker
docker run -e ARANGO_NO_AUTH=1 -d --name arangodb-instance -p 8529:8529 -d arangodb/arangodb

MongoDB

MongoDB

Mongodb: MongoDB is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemas.

How to install with Docker
  1. Install docker: https://www.docker.com/

  2. https://hub.docker.com/_/mongo

  3. Run docker command:

docker run -d --name mongodb-instance -p 27017:27017 mongo

Oracle NoSQL

Oracle NoSQL

Oracle NoSQL: Oracle NoSQL Database is a NoSQL-type distributed key-value and document database from Oracle Corporation. It provides transactional semantics for data manipulation, horizontal scalability, and simple administration and monitoring.

How to install with Docker
  1. Install docker: https://www.docker.com/

  2. Run docker command:

docker run -d --name oracle-instance -p 8080:8080 ghcr.io/oracle/nosql:latest-ce

CouchDB

CouchDB

Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang. CouchDB uses multiple formats and protocols to store, transfer, and process its data. It uses JSON to store data, JavaScript as its query language using MapReduce, and HTTP for an API.

How to install with Docker
  1. Install docker: https://www.docker.com/

  2. https://hub.docker.com/_/couchdb

  3. Run docker command:

docker run -p 5984:5984 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password -d couchdb
  1. Follow the instructions: https://hub.docker.com/_/couchdb

  2. Create heroes as bucket name

  3. Create Hero and Villain as collections

  4. Create primary query to Hero

Projects

Couchbase

Couchbase

Couchbase Server, originally known as Membase, is an open-source, distributed multi-model NoSQL document-oriented database software package optimized for interactive applications. These applications may serve many concurrent users by creating, storing, retrieving, aggregating, manipulating and presenting data.

How to install with Docker
docker run -d --name db -p 8091-8097:8091-8097 -p 9123:9123 -p 11207:11207 -p 11210:11210 -p 11280:11280 -p 18091-18097:18091-18097 couchbase
  1. Access: http://localhost:8091/ui/index.html

  2. Select the option "Setup New Cluster"

  3. Define "root" as Admin username

  4. Define "123456" as Password

  5. Define "localhost" as Cluster Name

  6. Accept the terms and conditions

  7. Go to "Buckets" session

  8. Create Bucket "heroes" using the "Add Bucket" Option

  9. Click at "heroes"

  10. Add "Hero" and "Villain" as Collection

  11. Go to Query session and execute:

CREATE PRIMARY INDEX `#primary` ON `heroes`.`_default`.`Hero`
Projects

Elasticsearch

ES

Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.

How to install with Docker
docker run -p 9200:9200 -p 9300:9300 \
  -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
  -e "xpack.security.enabled=false" \
  -e "discovery.type=single-node" \
  elasticsearch:8.7.1

Time Series

The time-series samples also include TemporalQueryApp, which demonstrates the temporal operations of TimeSeriesTemplate (Eclipse JNoSQL 1.1.21-SNAPSHOT). The temporal reference is the entity attribute annotated with @Id:

  • latest(n) / earliest(n): the n newest / oldest observations

  • since(t) / until(t): observations at or after / at or before t

  • last(duration): observations within a period relative to the execution time

They compose with where(…​), e.g. select(Entity.class).where("sensor").eq("s1").since(start).until(end).latest(3).

Note
These samples use the 1.1.21-SNAPSHOT artifacts, resolved from the Central Portal snapshots repository declared in each project’s pom.xml.

InfluxDB

InfluxDB

InfluxDB is a time-series database designed to store and query data that changes over time.

How to install with Docker
  1. Install Docker: https://www.docker.com/

  2. Run InfluxDB 3 Core:

docker run -d --name influxdb-instance -p 8181:8181 influxdb:3.11.0-core influxdb3 serve --node-id jnosql --object-store memory --without-auth
  1. Create the metrics database:

docker exec influxdb-instance influxdb3 create database --host http://localhost:8181 metrics
  1. Configure Eclipse JNoSQL:

jnosql.timeseries.database=metrics
jnosql.influxdb.url=http://localhost:8181
jnosql.influxdb.token=jnosql-influxdb-test-token
Note
This tutorial starts InfluxDB with --without-auth to keep the local setup simple. Therefore, no authentication token needs to be generated. The token property is provided as a placeholder for the InfluxDB driver configuration.
Optional: Explore the data in the browser

InfluxDB 3 Explorer provides a browser-based interface for querying and visualizing data stored in InfluxDB 3 Core.

docker run -d --name influxdb3-explorer -p 8888:8080 influxdata/influxdb3-ui:1.9.0

Open:

http://localhost:8888

Configure Explorer to connect to:

http://host.docker.internal:8181

and use the metrics database.

Projects
  • InfluxDB Time Series sample

  • Run the temporal query sample: mvn -f influxdb/pom.xml compile exec:java -Dexec.mainClass=org.jnosql.demo.se.TemporalQueryApp

Apache IoTDB

Apache IoTDB

Apache IoTDB is a time-series database designed for IoT data management and analysis.

How to install with Docker
  1. Install Docker: https://www.docker.com/

  2. Run Apache IoTDB:

docker run -d --name iotdb-instance -p 6667:6667 -e dn_rpc_address=0.0.0.0 apache/iotdb:2.0.11-standalone
  1. Create the jnosql database:

docker exec -it iotdb-instance \
  /iotdb/sbin/start-cli.sh \
  -h 127.0.0.1 \
  -p 6667 \
  -u root \
  -pw root \
  -sql_dialect table \
  -e "CREATE DATABASE IF NOT EXISTS jnosql"

Apache IoTDB will be available through its native RPC endpoint at:

localhost:6667
MicroProfile Config

Configure Eclipse JNoSQL using microprofile-config.properties:

jnosql.timeseries.database=jnosql
jnosql.iotdb.host=localhost
jnosql.iotdb.port=6667
jnosql.iotdb.username=root
jnosql.iotdb.password=root
jnosql.iotdb.enable.redirection=false
Note
For the Docker-based tutorial, jnosql.iotdb.enable.redirection=false is recommended because the address advertised by the container may not be reachable through the mapped host port.
Projects
  • Apache IoTDB Time Series sample

  • Run the temporal query sample: mvn -f iotbd/pom.xml compile exec:java -Dexec.mainClass=org.jnosql.demo.se.TemporalQueryApp

QuestDB

QuestDB

QuestDB is a high-performance time-series database designed for fast ingestion and SQL analytics over time-oriented data.

This sample demonstrates Eclipse JNoSQL Time Series support with QuestDB using both:

  • TimeSeriesTemplate

  • Jakarta Data repository support

How to install with Docker
  1. Install Docker: https://www.docker.com/

  2. Run QuestDB:

docker run -d \
  --name questdb-instance \
  -p 9000:9000 \
  questdb/questdb:10.0.1

QuestDB exposes its Web Console and HTTP services on port 9000. The Eclipse JNoSQL driver also connects through this endpoint.

Open the QuestDB Web Console in your browser:

http://localhost:9000

No database creation step is required for this sample.

MicroProfile Config

Configure Eclipse JNoSQL using microprofile-config.properties:

jnosql.timeseries.database=qdb
jnosql.questdb.url=ws::addr=localhost:9000;

The jnosql.timeseries.database property defines the logical database used by the Time Series manager.

The QuestDB connection URL follows the QuestDB client format:

ws::addr=localhost:9000;

The JNoSQL QuestDB test configuration uses this same URL format and the qdb database.

Explore the data in the browser

QuestDB includes its own Web Console, so no additional container is required.

Open:

http://localhost:9000

From the SQL editor, you can inspect the sensor data written by Eclipse JNoSQL.

For example:

SELECT *
FROM SensorReading
ORDER BY id DESC;

Or retrieve the latest reading for a specific sensor:

SELECT *
FROM SensorReading
WHERE sensor = 'sensor-01'
ORDER BY id DESC
LIMIT 1;
Projects
  • QuestDB Time Series sample

  • Run the temporal query sample: mvn -f questdb/pom.xml compile exec:java -Dexec.mainClass=org.jnosql.demo.se.TemporalQueryApp

Graph

Neo4J

Neo4J

Neo4j is a graph database management system developed by Neo4j, Inc. The data elements Neo4j stores are nodes, edges connecting them, and attributes of nodes and edges.

How to install with Docker
  1. Install docker: https://www.docker.com/

  2. https://hub.docker.com/_/neo4j

  3. Run docker command:

docker run --publish=7474:7474 --publish=7687:7687 --env NEO4J_AUTH=neo4j/admin123 neo4j:5.26.3
Projects

JanusGraph

JanusGraph

JanusGraph is an open source, distributed graph database under The Linux Foundation. JanusGraph is available under the Apache License 2.0. The project is supported by IBM, Google, Hortonworks and Grakn Labs. JanusGraph supports various storage backends.

Vector

The vector samples (qdrant-vector, milvus-vector and weaviate-vector) use Eclipse JNoSQL Vector support (VectorTemplate) and share the same Product catalog, ProductType, TextEmbedder and three executable classes, so the databases can be compared directly.

Embeddings are generated locally and in-process by the Java application with LangChain4j’s ONNX AllMiniLmL6V2QuantizedEmbeddingModel (used only for embeddings). No external AI API, API key, cloud account or database-side vectorizer is required.

Qdrant

Qdrant

Qdrant is an open-source, production-grade vector database and similarity search engine designed to store, index, and query high-dimensional embeddings alongside structured JSON metadata.

How to install with Docker
docker run --name qdrant-instance -p 6333:6333 -p 6334:6334 -d qdrant/qdrant
Projects

Milvus

Milvus

Milvus is an open-source, highly scalable vector database designed to store, index, and manage massive datasets of high-dimensional vector embeddings generated by artificial intelligence models.

How to install with Docker
  1. Install docker: https://www.docker.com/

  2. https://hub.docker.com/r/milvusdb/milvus

  3. Run docker command (a single container, using the embedded etcd and local storage):

docker run -d --name milvus-standalone -p 19530:19530 -p 9091:9091 \
  -e DEPLOY_MODE=STANDALONE -e ETCD_USE_EMBED=true \
  -e ETCD_DATA_DIR=/var/lib/milvus/etcd -e COMMON_STORAGETYPE=local \
  milvusdb/milvus:v3.0.4 milvus run standalone
Projects

Weaviate

Weaviate

Weaviate is an open-source, AI-native vector database designed to store both data objects and their corresponding high-dimensional embeddings, allowing you to run hybrid, semantic, and keyword searches out of the box.

How to install with Docker
docker run -d --name weaviate-instance -p 8080:8080 -p 50051:50051 \
  -e AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true \
  -e PERSISTENCE_DATA_PATH=/var/lib/weaviate \
  -e DEFAULT_VECTORIZER_MODULE=none \
  semitechnologies/weaviate:1.38.21
Projects

About

The Eclipse JNoSQL is a framework whose has the goal to help Java developers to create Jakarta EE applications with NoSQL

Resources

Stars

40 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages