/jnosql-communication-driver

This project contains drivers of Jakarta NoSQL Communication

Primary LanguageJavaOtherNOASSERTION

Communications Driver API

The Eclipse JNoSQL Communications API is a collection of implementations from the Jakarta NoSQL specification.

In the NoSQL communication layer, you can make an analogy with JDBC.

ArangoDB

Arangodb Project

ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.

This API offers support for Document and Key-Value types. The Graph is possible through Apache TinkerPop.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>arangodb-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the ArangoDBConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.jnosql.arangodb.host

The database host, where you need to put the port split by colons. E.g.: jnosql.jnosql.arangodb.host=localhost:8529

jnosql.arangodb.user

The user’s userID.

jnosql.arangodb.password

The user’s password

jnosql.arangodb.timeout

The connection and request timeout in milliseconds.

jnosql.arangodb.chuck.size

The chunk size when Protocol is used.

jnosql.arangodb.userSsl

The true SSL will be used when connecting to an ArangoDB server.

jnosql.arangodb.load.balancing.strategy

The com.arangodb.entity.LoadBalancingStrategy as String.

jnosql.arangodb.protocol

The com.arangodb.Protocol as String

jnosql.arangodb.connections.max

The maximum number of connections the built in connection pool will open per host.

jnosql.arangodb.acquire.host.list

Set hosts split by comma

This is an example using ArangoDB’s Document API with MicroProfile Config.

jnosql.document.provider=org.eclipse.jnosql.communication.arangodb.document.ArangoDBDocumentConfiguration
jnosql.document.database=heroes

This is an example using ArangoDB’s Key-Value API with MicroProfile Config.

jnosql.keyvalue.database=heroes
jnosql.keyvalue.provider=org.eclipse.jnosql.communication.arangodb.keyvalue.ArangoDBKeyValueConfiguration

Cassandra

Apache 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

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>cassandra-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the CassandraConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.cassandra.user

The user’s userID.

jnosql.cassandra.password

The user’s password

jnosql.cassandra.host

Database’s host. It is a prefix to enumerate hosts. E.g.: jnosql.cassandra.host.1=localhost

jnosql.cassandra.name

The name of the application using the created session.

jnosql.cassandra.port

The cassandra’s port

jnosql.cassandra.query

The Cassandra CQL to execute when the configuration starts. It uses as a prefix. E.g.: jnosql.cassandra.query.1=<CQL>

jnosql.cassandra.data.center

The datacenter that is considered "local" by the load balancing policy.

This is an example using Cassandra with MicroProfile Config.

jnosql.column.provider=org.eclipse.jnosql.communication.cassandra.column.CassandraConfiguration
jnosql.column.database=developers
jnosql.cassandra.query-1=<CQL-QUERY>
jnosql.cassandra.query.2=<CQL-QUERY-2>

Couchbase

Couchbase Project

The Couchbase driver provides an API integration between Java and the database through a standard communication level.

This driver has support for two NoSQL API types: Document and Key-Value.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>couchbase-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the CouchbaseConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.couchbase.host

The host at the database.

jnosql.couchbase.user

The user’s userID.

jnosql.couchbase.password

The user’s password

jnosql.couchbase.scope

The scope to use at couchbase otherwise, it will use the default.

jnosql.couchbase.collections

couchbase collection split by a comma. At the start-up of a CouchbaseConfiguration, there is this option to check if these collections exist; if not, it will create using the default settings.

jnosql.couchbase.collection

A default couchbase collection. When it is not defined the default value comes from Bucket.

jnosql.couchbase.index

A couchbase collection index. At the start-up of a {@link CouchbaseConfiguration}, it will read this property to check if the index does exist, if not it will create combined by scope and the database.

This is an example using Couchbase’s Document API with MicroProfile Config.

jnosql.document.provider=org.eclipse.jnosql.communication.couchbase.document.CouchbaseDocumentConfiguration
jnosql.document.database=heroes
jnosql.couchbase.host.1=localhost
jnosql.couchbase.user=root
jnosql.couchbase.password=123456

This is an example using Couchbase’s Key-Value API with MicroProfile Config.

jnosql.keyvalue.database=heroes
jnosql.keyvalue.provider=org.eclipse.jnosql.communication.couchbase.keyvalue.CouchbaseKeyValueConfiguration
jnosql.couchbase.host.1=localhost
jnosql.couchbase.user=root
jnosql.couchbase.password=123456

CouchDB

CouchDB

The CouchDB driver provides an API integration between Java and the database through a standard communication level.

This driver provides support for the Document NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>couchdb-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the CouchDBConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.couchdb.port

The port connection to a client connect. The default value is "5984"

jnosql.couchdb.max.connections

The max of connection that the couchdb client have. The default value is "20"

jnosql.couchdb.connection.timeout

The timeout in milliseconds used when requesting a connection. The default value is "1000".

jnosql.couchdb.socket.timeout

The socket timeout in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets). The default value is "10000".

jnosql.couchdb.max.object.size.bytes

The current maximum response body size that will be cached. The value is "8192".

jnosql.couchdb.max.cache.entries

The maximum number of cache entries the cache will retain. The default value is "1000".

jnosql.couchdb.host

The host at the database.

jnosql.couchdb.username

The user’s userID.

jnosql.couchdb.password

The user’s password

jnosql.couchdb.enable.ssl

If the request use a https or a http.

jnosql.couchdb.compression

Determines whether compressed entities should be decompressed automatically.

This is an example using CouchDB’s Document API with MicroProfile Config.

jnosql.document.provider=org.eclipse.jnosql.communication.couchdb.document.CouchDBDocumentConfiguration
jnosql.document.database=heroes
jnosql.couchdb.host=localhost
jnosql.couchdb.username=admin
jnosql.couchdb.password=password

Elasticsearch

Elasticsearch Project

Elasticsearch is a search engine based on Lucene. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is developed in Java and is released as open source under the terms of the Apache License. Elasticsearch is the most popular enterprise search engine followed by Apache Solr, also based on Lucene.

This driver provides support for the Document NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>elasticsearch-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the ElasticsearchConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.elasticsearch.host

Database’s host. It is a prefix to enumerate hosts. E.g.: jnosql.elasticsearch.host.1=172.17.0.2:1234

jnosql.elasticsearch.user

The user’s userID.

jnosql.elasticsearch.password

The user’s password

This is an example using Elasticsearch’s Document API with MicroProfile Config.

jnosql.document.provider=org.eclipse.jnosql.communication.elasticsearch.document.ElasticsearchDocumentConfiguration
jnosql.document.database=developers

Hazelcast

Hazelcast Project

Hazelcast is an open source in-memory data grid based on Java.

This driver provides support for the Key-Value NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>hazelcast-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the HazelcastConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.hazelcast.instance.name

The instance name uniquely identifying the hazelcast instance created by this configuration. This name is used in different scenarios, such as identifying the hazelcast instance when running multiple instances in the same JVM.

jnosql.hazelcast.host

Database’s host. It is a prefix to enumerate hosts. E.g.: jnosql.hazelcast.host.1=localhost

jnosql.hazelcast.port

The database port

jnosql.hazelcast.port.count

The maximum number of ports allowed to use.

jnosql.hazelcast.port.auto.increment

Sets if a Hazelcast member is allowed to find a free port by incrementing the port number when it encounters an occupied port.

jnosql.hazelcast.multicast.enable

Enables or disables the multicast discovery mechanism

jnosql.hazelcast.tcp.ip.join

Enables or disables the Tcp/Ip join mechanism.

This is an example using Hazelcast’s Key-Value API with MicroProfile Config.

jnosql.keyvalue.provider=org.eclipse.jnosql.communication.hazelcast.keyvalue.HazelcastKeyValueConfiguration
jnosql.keyvalue.database=heroes

HBase

Hbase Project

HBase is an open source, non-relational, distributed database modeled after Google’s BigTable and is written in Java.

This driver provides support for the Column Family NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>hbase-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the HbaseConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.hbase.family

The Column family prefixes. E.g.: jnosql.hbase.family.1=<FAMILY>

This is an example using HBase’s Column Family NoSQL API with MicroProfile Config.

jnosql.document.provider=org.eclipse.jnosql.communication.hbase.column.HBaseColumnConfiguration
jnosql.column.database=heroes

Infinispan

Infinista Project

Infinispan is a distributed in-memory key/value data store with optional schema, available under the Apache License 2.0.

This driver provides support for the Key-Value NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>infinispan-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the InfinispanConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.infinispan.host

Database’s host. It is a prefix to enumerate hosts. E.g.: jnosql.infinispan.host.1=HOST

jnosql.infinispan.config

The Infinispan configuration path. E.g.: jnosql.infinispan.config=infinispan.xml

This is an example using Infinispan’s Key-Value API with MicroProfile Config.

jnosql.keyvalue.provider=org.eclipse.jnosql.communication.infinispan.keyvalue.InfinispanKeyValueConfiguration
jnosql.keyvalue.database=heroes
jnosql.infinispan.config=infinispan.xml

Memcached

Memcached Project

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 (such as a database or API) must be read. Memcached is free and open-source software, licensed under the Revised BSD license. Memcached runs on Unix-like operating systems (at least Linux and OS X) and on Microsoft Windows.

This driver provides support for the Key-Value NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>memcached-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the MemcachedConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.memcached.daemon

The daemon state of the IO thread (defaults to true).

jnosql.memcached.reconnect.delay

The maximum reconnect delay

jnosql.memcached.protocol

The protocol type net.spy.memcached.ConnectionFactoryBuilder.Protocol

jnosql.memcached.locator

The locator type net.spy.memcached.ConnectionFactoryBuilder.Locator

jnosql.memcached.auth.wait.time

Custom wait time for the authentication on connect/reconnect.

jnosql.memcached.max.block.time

The maximum amount of time (in milliseconds) a client is willing to wait for space to become available in an output queue.

`jnosql.memcached.timeout

The default operation timeout in milliseconds.

jnosql.memcached.read.buffer.size

The read buffer size.

jnosql.memcached.should.optimize

The default operation optimization is not desirable.

jnosql.memcached.timeout.threshold

The maximum timeout exception threshold.

jnosql.memcached.nagle.algorithm

Enable the Nagle algorithm.

jnosql.memcached.user

The user’s userID

jnosql.memcached.password

The user’s password.

jnosql.memcached.host

Database’s host. It is a prefix to enumerate hosts. E.g.: jnosql.memcached.host.1=localhost:11211

This is an example using Memcached’s Document API with MicroProfile Config.

jnosql.keyvalue.provider=org.eclipse.jnosql.communication.memcached.keyvalue.MemcachedKeyValueConfiguration
jnosql.keyvalue.database=heroes
jnosql.memcached.host.1=localhost:11211

MongoDB

MongoDB Project

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.

This driver provides support for the Document NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>mongodb-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the MongoDBDocumentConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.mongodb.host

The database host as prefix. E.g.: mongodb.host.1=localhost:27017

jnosql.mongodb.user

The user’s userID.

jnosql.mongodb.url

MongoDB’s connection string

jnosql.mongodb.password

The user’s password

jnosql.mongodb.authentication.source

The source where the user is defined.

jnosql.mongodb.authentication.mechanism

Authentication mechanisms com.mongodb.AuthenticationMechanism

This is an example using Mongodb’s Document API with MicroProfile Config.

jnosql.document.database=olympus
jnosql.mongodb.host=localhost:27017
jnosql.document.provider=org.eclipse.jnosql.communication.mongodb.document.MongoDBDocumentConfiguration

OrientDB

Orient Project

OrientDB is an open source NoSQL database management system written in Java. It is a multi-model database, supporting graph, document, key/value, and object models, but the relationships are managed as in graph databases with direct connections between records. It supports schema-less, schema-full and schema-mixed modes. It has a strong security profiling system based on users and roles and supports querying with Gremlin along with SQL extended for graph traversal.

This driver provides support for the Document NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>orientdb-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the OrientDBDocumentConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.orientdb.host

The database host

jnosql.orientdb.user

The user’s userID.

jnosql.orientdb.password

The user’s password

jnosql.orientdb.storage.type

The storage type com.orientechnologies.orient.core.db.ODatabaseType

This is an example using OrientDB’s Document API with MicroProfile Config.

jnosql.document.provider=org.eclipse.jnosql.communication.orientdb.document.OrientDBDocumentConfiguration
jnosql.document.database=heroes
jnosql.orientdb.host=localhost:27017
jnosql.orientdb.user=root
jnosql.orientdb.password=rootpwd
jnosql.orientdb.storageType=plocal

RavenDB

RavenDB Project

RavenDB is a fully Transactional Open Source NoSQL Document Database. Easy to use, rapidly scalable, offers high availability, and takes your Business into the Next Generation of Data Performance.

This driver provides support for the Document NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>ravendb-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the RavenDBConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.ravendb.host

The database host

This is an example using RavenDB’s Document API with MicroProfile Config.

jnosql.document.provider=org.eclipse.jnosql.communication.ravendb.document.RavenDBDocumentConfiguration
jnosql.document.database=heroes

Redis

Redis Project

Redis is a software project that implements data structure servers. It is open-source, networked, in-memory, and stores keys with optional durability.

This driver provides support for the Key-Value NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>redis-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the RedisConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.redis.host

The database host

jnosql.redis.port

The database port

jnosql.redis.timeout

The redis timeout, the default value 2000 on milliseconds

jnosql.redis.password

The user’s password

jnosql.redis.database

The redis database number, the default value is 0

jnosql.redis.client.name

The client’s name

jnosql.redis.max.total

The value for the maxTotal configuration attribute for pools created with this configuration instance, the default value 1000.

jnosql.redis.max.idle

The value for the maxIdle configuration attribute for pools created with this configuration instance, the default value 10.

jnosql.redis.min.idle

The value for the minIdle configuration attribute for pools created with this configuration instance, the default value 1.

jnosql.redis.max.wait.millis

The value for the maxWait configuration attribute for pools created with this configuration instance, the default value 3000.

This is an example using Redis’s Key-Value API with MicroProfile Config.

jnosql.keyvalue.provider=org.eclipse.jnosql.communication.redis.keyvalue.RedisConfiguration
jnosql.keyvalue.database=heroes

Riak

Riak Project

Riak (pronounced "ree-ack") is a distributed NoSQL key-value data store that offers high availability, fault tolerance, operational simplicity, and scalability. In addition to the open-source version, it comes in a supported enterprise version and a cloud storage version.

This driver provides support for the Key-Value NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>redis-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the RiakConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.riak.host

The database host

This is an example using Riak’s Key-Value API with MicroProfile Config.

jnosql.keyvalue.provider=org.eclipse.jnosql.communication.riak.keyvalue.RiakKeyValueConfiguration
jnosql.keyvalue.database=heroes

Solr

Apache Solr Project

Solr is an open-source enterprise-search platform, written in Java, from the Apache Lucene project. Its major features include full-text search, hit highlighting, faceted search, real-time indexing, dynamic clustering, database integration, NoSQL features and rich document (e.g., Word, PDF) handling. Providing distributed search and index replication, Solr is designed for scalability and fault tolerance. Solr is widely used for enterprise search and analytics use cases and has an active development community and regular releases.

This driver provides support for the Document NoSQL API.

How To Install

You can use either the Maven or Gradle dependencies:

<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>solr-driver</artifactId>
  <version>1.0.0-b4</version>
</dependency>

Configuration

This API provides the SolrDocumentConfigurations class to programmatically establish the credentials. Please note that you can establish properties using the MicroProfile Config specification.

Configuration property Description

jnosql.solr.host

Database’s host. It is a prefix to enumerate hosts. E.g.: jnosql.solr.host.1=HOST

jnosql.solr.user

The user’s userID.

jnosql.solr.password

The user’s password

jnosql.solr.automatic.commit

Define if each operation Apache Solr will commit automatically, true by default.

This is an example using Solr’s Document API with MicroProfile Config.

jnosql.document.provider=org.eclipse.jnosql.communication.solr.document.SolrDocumentConfiguration
jnosql.document.database=heroes

Want to Contribute a New Driver?

As an open-source project, you’re free to create any driver, and you’re welcome to join and participate in the process. To add a new driver, we have a few requirements:

  • Run Java 11 and Java 17

  • Include the documentation driver in the README file.

  • Cover the driver with tests and preferences with TestContainer.

  • Please pay attention to the documentation. This includes JavaDoc

  • Include a class to represent and contain the properties.

    • A nomenclature is the <DATABASE>Configurations, e.g., CassandraConfigurations, MongoDBConfigurations

Graph Drivers

Eclipse JNoSQL uses Apache Tinkerpop for Graph API. Using this API gives support to over twenty fives databases.