All Projects → eclipse → Jnosql

eclipse / Jnosql

Licence: other
Eclipse JNoSQL is a framework which has the goal to help Java developers to create Jakarta EE applications with NoSQL.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Jnosql

Cog
A Persistent Embedded Graph Database for Python
Stars: ✭ 90 (-37.93%)
Mutual labels:  database, nosql, graph-database
Orientdb
OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text and Geospatial models in one Multi-Model product. OrientDB can run distributed (Multi-Master), supports SQL, ACID Transactions, Full-Text indexing and Reactive Queries. OrientDB Community Edition is Open Source using a liberal Apache 2 license.
Stars: ✭ 4,394 (+2930.34%)
Mutual labels:  database, nosql, graph-database
Pyarango
Python Driver for ArangoDB with built-in validation
Stars: ✭ 183 (+26.21%)
Mutual labels:  database, nosql, graph-database
Neo4j
Graphs for Everyone
Stars: ✭ 9,582 (+6508.28%)
Mutual labels:  database, nosql, graph-database
Kache
A simple in memory cache written using go
Stars: ✭ 349 (+140.69%)
Mutual labels:  database, nosql, flexible
Arangodb
🥑 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.
Stars: ✭ 11,880 (+8093.1%)
Mutual labels:  database, nosql, graph-database
Summitdb
In-memory NoSQL database with ACID transactions, Raft consensus, and Redis API
Stars: ✭ 1,295 (+793.1%)
Mutual labels:  database, nosql
Crux
General purpose bitemporal database for SQL, Datalog & graph queries
Stars: ✭ 1,296 (+793.79%)
Mutual labels:  database, graph-database
Homebase React
The React state management library for write-heavy applications
Stars: ✭ 101 (-30.34%)
Mutual labels:  database, graph-database
Gkvdb
[mirror] Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能高可用Key-Value嵌入式事务数据库。基于纯Go语言实现,具有优异的跨平台性,良好的高可用及文件IO复用设计,高效的底层数据库文件操作性能,支持原子操作、批量操作、事务操作、多表操作、多表事务、随机遍历等特性。
Stars: ✭ 109 (-24.83%)
Mutual labels:  database, nosql
Tupl
The Unnamed Persistence Library
Stars: ✭ 83 (-42.76%)
Mutual labels:  database, nosql
Griddb
GridDB is a next-generation open source database that makes time series IoT and big data fast,and easy.
Stars: ✭ 1,587 (+994.48%)
Mutual labels:  database, nosql
Bio4j
Bio4j abstract model and general entry point to the project
Stars: ✭ 113 (-22.07%)
Mutual labels:  database, graph-database
Redisgraph
A graph database as a Redis module
Stars: ✭ 1,292 (+791.03%)
Mutual labels:  nosql, graph-database
Bojack
🐴 The unreliable key-value store
Stars: ✭ 101 (-30.34%)
Mutual labels:  database, nosql
Terminusdb
Open source graph database and document store. Designed for collaboratively building data-intensive applications and knowledge graphs.
Stars: ✭ 1,250 (+762.07%)
Mutual labels:  database, graph-database
Unqlite
An Embedded NoSQL, Transactional Database Engine
Stars: ✭ 1,583 (+991.72%)
Mutual labels:  database, nosql
Dynein
DynamoDB CLI written in Rust.
Stars: ✭ 126 (-13.1%)
Mutual labels:  database, nosql
Databazel
The analytical and reporting solution for MongoDB
Stars: ✭ 118 (-18.62%)
Mutual labels:  database, nosql
Db Tutorial
💾 db-tutorial 是一个数据库教程。
Stars: ✭ 128 (-11.72%)
Mutual labels:  database, nosql

= Eclipse JNoSQL

Eclipse JNoSQL is a Java framework that streamlines the integration of Java applications with NoSQL databases. It defines a set of APIs and provides a standard implementation for most NoSQL databases. This clearly helps to achieve very low coupling with the underlying NoSQL technologies used in applications.

The project has two layers:

  1. Communication Layer: A set of APIs that defines communication with NoSQL databases. Compared with traditional the RDBMS world, they are like the JDBC API. It contains four modules, one for each NoSQL database type: Key-Value, Column Family, Document, and Graph.

  2. Mapping Layer: These APIs help developers to integrate their Java application with the NoSQL database. This layer is annotation-driven and uses technologies like CDI and Bean Validation, making it simple for developers to use. In the traditional RDBMS world, this layer can be compared to the Java Persistence API or object-relational mapping frameworks such as Hibernate.

image::http://www.jnosql.org/images/layers.png[Layers,align="center"]

== One Mapping API, multiples databases

Eclipse NoSQL has one API for each NoSQL database type. However, it uses the same annotations to map Java objects. Therefore, with just these annotations that look like JPA, there is support for more than twenty NoSQL databases.

[source,java]

@Entity public class God {

@Id
private String id;
@Column
private String name;
@Column
private String power;

//... }


Another example can be found in an article that demonstrates the same annotated entity used across different NoSQL databases: Redis, Cassandra, Couchbase, and Neo4J. The approach is "stick to the API": the developer can replace Redis with Hazelcast, as both implement the Key-Value API, thus avoiding vendor lock-in with one of these databases.

Vendor lock-in is one of the things any Java project needs to consider when choosing NoSQL databases. If there's a need for a switch, other considerations include: time spent on the change, the learning curve of a new API to use with this database, the code that will be lost, the persistence layer that needs to be replaced, etc. Eclipse JNoSQL avoids most of these issues through the Communication APIs. It also has template classes that apply the design pattern 'template method’ to databases operations. And the Repository interface allows Java developers to create and extend interfaces, with implementation automatically provided by Eclipse JNoSQL: support method queries built by developers will automatically be implemented for them.

[source,java]

public interface GodRepository extends Repository<God, String> {

Optional<God> findByName(String name);

}

GodRepository repository = ...; God diana = God.builder().withId("diana").withName("Diana").withPower("hunt").builder(); repository.save(diana); Optional idResult = repository.findById("diana"); Optional nameResult = repository.findByName("Diana");

== Beyond JPA

JPA is a good API for object-relationship mapping and it's already a standard in the Java world defined in JSRs. It would be great to use the same API for both SQL and NoSQL, but there are behaviors in NoSQL that SQL does not cover, such as time to live and asynchronous operations. JPA was simply not made to handle those features.

[source,java]

ColumnTemplateAsync templateAsync = …; ColumnTemplate template = …; God diana = God.builder().withId("diana").withName("Diana").withPower("hunt").builder(); Consumer callback = g -> System.out.println("Insert completed to: " + g); templateAsync.insert(diana, callback); Duration ttl = Duration.ofSeconds(1); template.insert(diana, Duration.ofSeconds(1));

== A Fluent API

Eclipse JNoSQL is a fluent API that makes it easier for Java developers create queries that either retrieve or delete information in a Document type, for example.

== Let's not reinvent the wheel: Graph

The Communication Layer defines three new APIs: Key-Value, Document and Column Family. It does not have new Graph API, because a very good one already exists. Apache TinkerPop is a graph computing framework for both graph databases (OLTP) and graph analytic systems (OLAP). Using Apache TinkerPop as Communication API for Graph databases, the Mapping API has a tight integration with it.

== Particular behavior matters in NoSQL database

Particular behavior matters. Even within the same type, each NoSQL database has a unique feature that is a considerable factor when choosing a database over another. This ‘’feature’’ might make it easier to develop, make it more scaleable or consistent from a configuration standpoint, have the desired consistency level or search engine, etc. Some examples are Cassandra and its Cassandra Query Language and consistency level, OrientDB with live queries, ArangoDB and its Arango Query Language, Couchbase with N1QL - the list goes on. Each NoSQL has a specific behavior and this behavior matters, so JNoSQL is extensible enough to capture this substantiality different feature elements.

Find out more information and get involved!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].