• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~
NDatabase —— 快速数据模型创建,强大的异步/同步API [1.7.X~1.21.X]

开源 前置/API NDatabase —— 快速数据模型创建,强大的异步/同步API [1.7.X~1.21.X] 1.5.4.8

版权类型
转载
插件中文名称
NDatabase
插件英文名称
NDatabase
原帖地址
https://www.spigotmc.org/resources/ndatabase-fast-data-model-creation-powerful-async-sync-api.107793/
支持的核心(服务端)
  1. Spigot
  2. Paper
  3. Purpur
  4. Leaves
  5. 其他核心
语言支持
English
适配版本(Java)
  1. 1.21
  2. 1.20
  3. 1.19
  4. 1.18
  5. 1.17
  6. 1.16
  7. 1.15
  8. 1.14
  9. 1.13
  10. 1.12
  11. 1.11
  12. 1.10
  13. 1.9
  14. 1.8
  15. 1.7

什么是 NDatabase API ?

  • NDatabase 是一个轻量级、易于使用的索引键值存储数据库框架,主要面向 Minecraft 服务器,并且支持多平台(当前支持 Bukkit / Spigot 服务器)。它可以作为插件使用,您只需安装一次,就可以在多个插件中复用,无需每次开发新插件时配置数据库和重复建立连接池。
  • 该 API 提供了一种流畅的方式来处理异步数据获取和服务器主线程回调,采用异步到同步的机制。NDatabase 支持多个数据库(目前支持 MySQL、SQLite 和 MongoDB 实现)。NDatabase 可以支持 Java 8 及以上版本,并兼容所有 Minecraft 服务器版本(已测试版本从 1.8 到 1.19+)。

使用 NDatabase 的优点

  • 使用简单:您无需编写任何 Repository 类或 SQL 语句。该框架的设计方式使得您只需创建数据模型对象(DTO),系统会自动生成一个完全可用的 Repository。请参考 NDatabase 安装与快速入门指南了解更多信息。
  • 一次安装,随处使用:显而易见,Minecraft 服务器通常有很多插件,其中大多数需要数据库。每个插件都需要重新实现并配置数据库,连接池的重复创建也消耗大量资源。而使用 NDatabase,您只需安装一次插件,就可以在每个插件中使用该 API,无需额外配置。
  • 索引键值存储:按设计,键值存储非常易于操作且速度快,但通常没有索引。在某些情况下,我们确实需要按字段值检索数据。NDatabase 为您提供了一个非常简单的方法来为某些字段创建索引,并进行数据查询。有关如何对键值存储进行索引的更多信息,请参见文档
  • 流畅的异步到同步 API:您可能知道,绝对不应在 Minecraft 主线程中进行数据库和 I/O 操作。NDatabase 原生提供了一个 API,可以用来异步获取数据,并在同步中进行使用。
  • 数据库类型无关:您只需使用 NDatabase 开发一次插件,通过相同的 API 即可支持多种数据库类型。如果您是插件开发者且出售插件,这非常方便,因为您无需关心您的客户使用的是 MongoDB、MySQL 等等。

创建一个 Repository

  • 当 NDatabase 在您的服务器上运行时,创建存储库非常简单,实际上只需一行代码即可完成。
Java:
Repository < UUID ,PlayerStatsDTO > storage = NDatabase.api ( ) . getOrCreateRepository ( PlayerStatsDTO.class ) ;

异步/同步使用您的 Repository

  • 您绝不应该在 Minecraft 主线程中进行 I/O 和数据库操作,这就是为什么 Repository 提供了一个流畅的 API,可以异步获取数据,并在需要时在主线程中执行回调。
Java:
// 异步到同步(异步获取数据并在主线程中使用它)
blockRepository.getAsync("id")
        .thenSync((bloc) -> {
            placeBlockInWorld(bloc);
        });

// 完全异步(异步获取数据并在同一个异步线程中使用它)
playerRepository.getAsync(joinedPlayer.getUUID())
        .thenAsync((playerDTO) -> {
            loadPlayer(playerDTO);
        });
  • 查询示例:积分大于等于 100 或特定 discord id 的玩家。
Java:
List<PlayerData> bestPlayers = repository.find(NQuery.predicate(
          "$.statistics.score >= 100 || $.discordId == 3432487284963298"
));

想试试吗?

  • 您可以使用 gradle 或 maven 来进行尝试。
  • 我们还建议您查看 github 页面来获取更多详细内容。
代码:
<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>1.0.0</version>
    <scope>provided</scope>
</dependency>
作者
PuddingKC
下载
290
查看
697
首次发布
最后更新

评分

0.00 星 0 次评分

PuddingKC 的其他资源

最新更新

  1. 更新至 1.5.4.8

    https://github.com/NivixX/NDatabase/releases
  2. 更新至 1.5.4.7

    更新
  3. 更新至 1.5.4.6

    修复一些问题和构建。
后退
顶部 底部