NDatabase - Fast data model creation - Powerful Async / Sync API icon

NDatabase - Fast data model creation - Powerful Async / Sync API -----

Lightweight opensource and easy to use INDEXED key-value database multi-platform framework




Few fixes & build
----------, Dec 16, 2024

Optimisations
----------, Dec 12, 2024

fix build
----------, Dec 10, 2024


SQLite driver
----------, Nov 28, 2024

Optimisations
----------, Nov 27, 2024

  • Fixed connection issue during concurrent access of SQLite
  • Improved SQLite performances with HikariCP
----------, Nov 26, 2024

Fix build
----------, Nov 25, 2024

Fix NEntity
----------, Nov 24, 2024

Update SQLite
----------, Nov 23, 2024

Fixed build
----------, Nov 22, 2024

Fixed query when using NEntity that haven't indexed field
----------, Nov 22, 2024

fixes in sqlite queries
----------, Nov 19, 2024


Packaging changes
----------, Nov 16, 2024

Update Libby for drivers
----------, Nov 14, 2024

Sponge detection fixes
----------, Nov 13, 2024

Jar shading detection improvements
----------, Nov 12, 2024

Reduced jar file
----------, Nov 12, 2024

full changelog on github
----------, Nov 10, 2024

Previous 1.5.2 jar was not correct
----------, Nov 9, 2024

Update SQLITE driver to the latest (3.47.0.0)
----------, Nov 5, 2024


Quite a big update:

  • MySQL / SQLite drivers are now provided by NDatabase and not your minecraft server software
  • These drivers are modern version and may improve performances
  • Driver are installed only if needed during runtime (if you use SQLite, the MySQL driver won't be downloaded)
  • Added platform Sponge (that doesn't have drivers by default, that's why we now use runtime driver installation
  • Since needed drivers are loaded on runtime, the size of NDatabase jar is smaller
----------, Oct 30, 2024

Tracking if NDatabase is shaded
----------, Oct 29, 2024

Added logging and enforcement on platform load
----------, Oct 28, 2024

All DBMS are packaged from different modules for more flexibility
----------, Oct 26, 2024

Validate if connection is valid with basic query on platform load
----------, Oct 22, 2024

add coverage for NQuery
----------, Oct 21, 2024

Added adapter at DAO level that will adapt the query depending on the MySQL version.
SQLite adapter has also been implemented.
In future update, more adapter for different MariaDB version will also be added.

Fix the issue for #14
----------, Apr 23, 2024

Some servers may have Google Guice issues, it should fix some of them (that cause null resolved instances)
----------, Mar 24, 2024

You are now able to save external objects inside your NEntity such as Bukkit domain related objects.
The serialization can be done using Jackson mappers

Code (Text):
@JsonSerialize(using = LocationSerializer.class)
@JsonDeserialize(using = LocationDeserializer.class)
private Location location;
----------, Feb 23, 2024

Better api accesses and documentation
----------, Jan 15, 2024

Changed the way how the single node path construct the full path for @ Indexed fields
----------, Dec 17, 2023

SQLite throw exception earlier if the JDBC sqlite driver is not found.
----------, Dec 12, 2023

The ON CONFLICT clause didn't worked in some specific sqlite driver versions.
----------, Apr 4, 2023

SQL formatting issue was introduced with the last update (for the upsert method).
Only SQLITE is concerned about that in the case were you didn't used the Indexed annotation on your NEntity
----------, Mar 30, 2023

Only affect SQLITE (for more robust performences I recommend using MongoDB or MySQL).

Initially, I was using GENERATED COLUMN with JSON operators to do the denormalization for the indexing.
But it looks like most of minecraft servers software have a sqlite driver bellow 3.38.0 (2022-02-22).
As the sqlite driver is loaded as a native library (.dll) it's not possible to load a new one.

So I implemented the denormalization in another way. It's a bit less performant than the original solution.
----------, Mar 27, 2023



Any schema modification related to indexing which fail will throw a DatabaseCreationException and details the issue.
----------, Mar 4, 2023

----------, Mar 3, 2023

First NDatabase release !
You have now the possibility to index some field of your Key-value store and query it using NQuery

read more in the wiki page
https://github.com/NivixX/NDatabase/wiki

API change from v0 to v1
----------, Mar 2, 2023

  • Exception handling fix: if your async callback throw an exception, nothing was printed to the console and it failed silently
  • MongoDB decoding didn't worked for embedded objects and some specific types.
----------, Feb 22, 2023

Test the database at startup (fail faster at the plugin loading and not at the first interaction)
----------, Feb 21, 2023

In this version, a new method is now available in order to generate a top K.
Very useful if you want to display a ranking !

example :

Code (Java):
Comparator <PlayerEntity > comparator = (o1, o2 ) -> o2. getScore ( ) - o1. getScore ( ) ;
repository. computeTopAsync ( 3, comparator )
        . thenAsync ( (playerEntities ) -> {
            playerEntities. get ( 0 ) ; // TOP 1
            playerEntities. get ( 1 ) ; // TOP 2
            playerEntities. get ( 2 ) ; // TOP 3
        } ) ;
----------, Feb 18, 2023

Fix logging in debug mode and added logging for MongoDB
----------, Feb 16, 2023


This version add the support with SQLite, I also added the javadoc within the api, so feel free to update the api


New config file, you can copy paste it if you want to use sqlite:

https://github.com/NivixX/NDatabase/blob/0.3.0/ndatabase-packaging-jar/src/main/resources/config.yml
----------, Feb 10, 2023

The API has been documented with some clean-up, note that I probably won't break the API even at the 1.0.0 release.

There is no breaking changes so you can pull the new version

Code (Text):
allprojects {
   repositories {
       ...
       maven { url 'https://jitpack.io' }
   }
}
dependencies {
       implementation 'com.github.NivixX.NDatabase:ndatabase-api:0.2.0'
}
Code (Text):
<repositories>
   <repository>
       <id>jitpack.io</id>
       <url>https://jitpack.io</url>
   </repository>
</repositories>

<dependency>
   <groupId>com.github.NivixX.NDatabase</groupId>
   <artifactId>ndatabase-api</artifactId>
   <version>0.2.0</version>
</dependency>
----------, Feb 7, 2023

NDatabase use reflection to instantiate your data model, some Java version didn't worked.
----------, Feb 7, 2023

This version fix plugin loading error for modern version of minecraft and java.
As I intend to support Spigot 1.8 from 1.19 and java 8 from Java 18+ I had to shade the guava library inside the plugin because every spigot server use different guava versions.

Note: tested with spigot 1.8 / 1.19 and java 8 / 18
----------, Feb 6, 2023

You have 2 version of a promise's callback

Code (Text):
thenAsync(returnedEntity -> )
thenAsync((returnedEntity, throwable) -> )
If an exception occurred, throwable will not be null. Now, if you decide to not handle de exception and a exception actually occured, NDatabase will catch it and warn you where in your code you didn't handled the exception.
----------, Feb 5, 2023

this pre-release introduce the usage of a thread pool for async database operations.
Using thread pool will improve performances as there is no need to recreate thread on the fly as we can reuse one from the pool

Configure the threadpool in the config :

Code (Text):

# The number of thread that will be used for your async database call
# If you are using MySQL, I would advice to set the same number as "minimum idle connection"
# In the case were you have more than 3 running operation, extra thread will be created temporarily
idle-thread-pool-size: 3
 
----------, Feb 4, 2023

As it's a key-value store the field name "key" make more sense
----------, Feb 3, 2023

this is the first usable version
----------, Feb 3, 2023

Resource Information
Author:
----------
Total Downloads: 1,070
First Release: Feb 3, 2023
Last Update: Dec 16, 2024
Category: ---------------
All-Time Rating:
4 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings