R2D1 / 模块化 JAVA 持久化

面向 Java 的文档存储与索引查询。

选择一个 DocumentStore 保存完整文档,再选择一个 IndexStore 进行索引查找。无论使用哪种后端或集成方式,R2D1 都保持相同的集合 API。

R2D1一个集合 API
支持的后端

先选择两个部分。

R2D1 将一个 DocumentStore 与一个 IndexStore 组合起来。分别从两列选择后端,按照设置指南配置,然后使用共享的集合 API。

文档存储

完整文档

负责权威序列化内容、按标识读取以及文档列表。

R2

CLOUDFLARE

通过异步 AWS SDK 客户端使用 Cloudflare R2。

R2 设置 →
索引存储

索引查找

负责过滤和排序所需的文档标识与显式索引字段。

D1

CLOUDFLARE

通过 Java 异步 REST 客户端使用 Cloudflare D1。

D1 设置 →

JDBC

H2 / HSQLDB / SQLITE

由应用拥有的 DataSource 和 JDBC 执行边界。

JDBC 设置 →
通用 API

配置一次,使用相同的 API。

配置两个后端后,所有组合都使用相同的注解、集合生命周期、写入方法和索引查询构建器。

@Document("users")
record User(@Id String id, @Index String country, @Index long score) {}

R2D1 database = R2D1.builder()
    .collectionFactory(new PersistenceCollectionFactory(
        documentStore, indexStore, documentCodec, indexStore::initialize))
    .build();

R2D1Collection<User> users = database.collection(User.class);
users.put(new User("user-123", "NZ", 42));

Page<User> page = users.query()
    .where("country").eq("NZ")
    .sortBy("score", SortDirection.DESC)
    .limit(20)
    .fetch();

完整的设置、适配器选择和生命周期规则请参阅 开始使用.

公开模块

一组模块,一个集合 API。

核心 artifact 提供通用 API 和 Cloudflare 后端。需要本地文件、JDBC 索引或 Micronaut wiring 时,只添加对应模块。

CORE + CLOUDFLARE

R2D1

dev.nexcraft:r2d1

通用集合 API,以及 R2 DocumentStore 和 D1 IndexStore 适配器。

模块设置 →
INDEX STORE

R2D1-JDBC

dev.nexcraft:r2d1-jdbc

通过应用拥有的 DataSource 支持 H2、HSQLDB 和本地 SQLite 索引。

JDBC 设置 →
DOCUMENT STORE

R2D1-FILESYSTEM

dev.nexcraft:r2d1-filesystem

具有原子替换和显式 executor 所有权的规范本地文档文件。

Filesystem 设置 →
FRAMEWORK INTEGRATION

R2D1-MICRONAUT

dev.nexcraft:r2d1-micronaut

围绕相同框架无关集合 API 的 Micronaut 5 bean 配置。

Micronaut 设置 →

选择后端,然后使用一个 API。

设置一个文档存储和一个索引存储,定义元数据,然后打开集合。

阅读开始使用