NDatabase - Fast data model creation - Powerful Async / Sync
1.5.4.8Lightweight opensource and easy to use INDEXED key-value database multi-platform framework
1.5.4.8latestJan 5, 2025 1.5.4.7Dec 26, 2024 Update master1.5.4.6Dec 16, 2024 Few fixes & build1.5.4.5Dec 12, 2024 Optimisations1.5.4.4Dec 10, 2024 fix build1.5.4.3Nov 28, 2024 1.5.4.2Nov 28, 2024 SQLite driver1.5.4.1Nov 27, 2024 Optimisations1.5.41.5.4 - SQLITE async & performancesNov 26, 2024 · Fixed connection issue during concurrent access of SQLite · Improved SQLite performances with HikariCP1.5.3.4Nov 25, 2024 Fix build1.5.3.3Nov 24, 2024 Fix NEntity1.5.3.2Nov 23, 2024 Update SQLite1.5.3.1Nov 22, 2024 Fixed build1.5.31.5.3 - Fix SQLite queriesNov 22, 2024 Fixed query when using NEntity that haven't indexed field1.5.2.9Nov 19, 2024 fixes in sqlite queries1.5.2.8Nov 18, 2024 1.5.2.7Nov 16, 2024 Packaging changes1.5.2.6Nov 14, 2024 Update Libby for drivers1.5.2.5Nov 13, 2024 Sponge detection fixes1.5.2.4Nov 12, 2024 Jar shading detection improvements1.5.2.3Nov 12, 2024 Reduced jar file1.5.2.2Nov 9, 2024 Previous 1.5.2 jar was not correct1.5.21.5.2 - Update SQLITE DriverNov 5, 2024 Update SQLITE driver to the latest (3.47.0.0)1.5.1https://github.com/NivixX/NDatabase/releases/tag/1.5.1Nov 4, 2024 MySQL Connector 8.0.30 update1.5.01.5.0 - LibraryManager & SpongeOct 30, 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 smaller1.4.21.4.2 - Shading DetectionOct 29, 2024 Tracking if NDatabase is shaded1.4.11.4.1 - Better Platform LoggingOct 28, 2024 Added logging and enforcement on platform load1.4.01.4.0 - Multi-module DBMSOct 26, 2024 All DBMS are packaged from different modules for more flexibility1.3.21.3.2 - Add connection validationOct 22, 2024 Validate if connection is valid with basic query on platform load1.3.1Cleanup & better coverageOct 21, 2024 add coverage for NQuery1.3.01.3.0 - Adapter for legacy MySQL versionApr 23, 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 #141.2.11.2.1 - Potential fixes for Google Guice compatibility issuesMar 24, 2024 Some servers may have Google Guice issues, it should fix some of them (that cause null resolved instances)1.2.01.2.0 - Support embedded external objectsFeb 23, 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;1.1.91.1.9 - Better APIJan 15, 2024 Better api accesses and documentation1.1.81.1.8 - Improve index creationDec 17, 2023 Changed the way how the single node path construct the full path for @ Indexed fields1.1.71.1.7 - Better SQLite error handlingDec 12, 2023 SQLite throw exception earlier if the JDBC sqlite driver is not found.1.1.61.1.6 - Fix ON CONFLICT SQLiteApr 4, 2023 The ON CONFLICT clause didn't worked in some specific sqlite driver versions.1.1.51.1.5 - fix SQLite upsert when not indexedMar 30, 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 NEntity1.1.41.1.4 - fix index for non-modern sqlite versionMar 27, 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.1.1.31.1.3 - fix MariaDB denormalisationMar 22, 2023 1.1.21.1.2 - Fixed MongoDB Credential config didn't workedMar 5, 2023 Don't affect other databases1.1.11.1.1 - Better exception handling & code styleMar 4, 2023 Any schema modification related to indexing which fail will throw a DatabaseCreationException and details the issue.1.1.01.1.0 - add MariaDB & fix indexed columnsMar 3, 2023 · MariaDB is now supported ! see new config : https://github.com/NivixX/NDatabase/blob/1.1.0/ndatabase-… · fixed bug with denormalization (for indexing)1.0.01.0.0 - Auto indexesMar 2, 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 v10.5.20.5.2 - fix exception handling & mongodb decodingFeb 22, 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.0.5.10.5.1 - Better loadingFeb 21, 2023 Test the database at startup (fail faster at the plugin loading and not at the first interaction)0.5.00.5.0 - add compute TOP KFeb 18, 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 } ) ;0.4.10.4.1 - fix loggingFeb 16, 2023 Fix logging in debug mode and added logging for MongoDB0.4.00.4.0 - add MongoDB implementationFeb 16, 2023 MongoDB is now supported ! Use the following config : https://github.com/NivixX/NDatabase/blob/0.4.0/ndatabase-…0.3.0 (beta)0.3.0 - Support SQLiteFeb 10, 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-…0.2.0 (beta)exception handling improvements & APFeb 7, 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>0.1.6 (beta)0.1.6 - Fix reflection for some Java versionFeb 7, 2023 NDatabase use reflection to instantiate your data model, some Java version didn't worked.0.1.5 (beta)Support java 17+ & bukkit 1.19+Feb 6, 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 / 180.1.4 (beta)0.1.4 - Error management improvementFeb 5, 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.0.1.3 (beta)0.1.3 - Thread pool & improvementsFeb 4, 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: 30.1.2 (beta)Rename field id to keyFeb 3, 2023 As it's a key-value store the field name "key" make more sense0.1.1 (beta)First usable versionFeb 3, 2023 this is the first usable version2023-02-03Feb 3, 2023
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta