打开文档导航
R2D1 / 文档

配置

先选择公开模块,再选择一个 DocumentStore 和一个 IndexStore。R2D1 支持四种后端组合,但只有一个 collection API。

公开模块

文档不假定 Maven Central 的发布 URL。请将下面的 coordinate 与应用程序使用的 version 一起添加。

模块Coordinate作用
R2D1dev.nexcraft:r2d1通用 API、R2 DocumentStore、D1 IndexStore
R2D1-FILESYSTEMdev.nexcraft:r2d1-filesystemFilesystem DocumentStore
R2D1-JDBCdev.nexcraft:r2d1-jdbcH2、HSQLDB、SQLite IndexStore
R2D1-MICRONAUTdev.nexcraft:r2d1-micronautMicronaut 5 bean 集成

选择 DocumentStore

权威完整文档可以保存到 R2 或 Filesystem。R2 使用异步 AWS SDK 客户端,Filesystem 在应用提供的 executor 上执行 blocking I/O。

选择 IndexStore

用于过滤和排序的 document identifier 以及 @Index projection 可以保存到 D1 或 JDBC。D1 使用 Java HttpClient 的 REST transport,JDBC 使用应用拥有的 DataSource 边界。

资源所有权

R2D1 adapter 不会随意关闭调用方提供的 DataSource、HttpClient、S3AsyncClient 或 Executor。只有 adapter 或 execution 对象直接创建的 resource 由它们拥有。

JDBC driver、connection pool、database server、Cloudflare account 和 credential 由应用和运行环境拥有。

四种组合

可以选择 R2 + D1、R2 + JDBC、Filesystem + D1、Filesystem + JDBC。将两个 store 和 DocumentCodec 传给 PersistenceCollectionFactory 后,通用 R2D1Collection 会协调它们。

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

R2D1Collection<User> users = database.collection(User.class);