R2D1 / モジュール型 JAVA 永続化

Java のためのドキュメントストレージとインデックスクエリ。

完全なドキュメントには DocumentStore、インデックス検索には IndexStore を1つずつ選びます。R2D1 はバックエンドや統合方法に関係なく、同じコレクション API を保ちます。

Latest stable: 1.8.0

R2D11つのコレクション API
実装

実装を選びます。

Maven Central の Java ライブラリ、または Node.js と Cloudflare Workers 向けの TypeScript パッケージを使えます。

JAVA / MAVEN CENTRAL

Java

Cloudflare R2 と D1、ローカルストレージ、JDBC、フレームワーク統合向けの Java モジュールです。

Java ドキュメント →
TYPESCRIPT / NPM

TypeScript

Node.js と Cloudflare Workers 向けで、Java と互換性のあるストレージ契約を使う TypeScript パッケージです。

TypeScript の概要 →
対応バックエンド

まず2つの役割を選びます。

R2D1 は1つの DocumentStore と1つの IndexStore を組み合わせます。それぞれの列からバックエンドを選び、設定ガイドに従ったあと、共通のコレクション API を使います。

ドキュメントストア

完全なドキュメント

シリアライズされた内容、IDによる読み取り、ドキュメント一覧を管理します。

R2

CLOUDFLARE

非同期 AWS SDK クライアント経由の Cloudflare R2。

R2 の設定 →
インデックスストア

インデックス検索

フィルタとソートに使うドキュメント ID と明示的なインデックスフィールドを管理します。

D1

CLOUDFLARE

Java の非同期 REST クライアント経由の Cloudflare D1。

D1 の設定 →

JDBC

H2 / HSQLDB / SQLITE

アプリケーションが所有する DataSource と JDBC 実行境界。

JDBC の設定 →
共通 API

一度設定すれば、同じ API を使えます。

2つのバックエンドを設定したあとは、どの組み合わせでも同じアノテーション、コレクションのライフサイクル、更新メソッド、インデックスクエリビルダーを使います。

@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();

設定、アダプターの選択、ライフサイクルのルールは はじめに.

MODULES & INTEGRATIONS

モジュールとフレームワーク統合。

R2D1 1.8.0 には共通 API、ストレージ adapter、Micronaut・Spring Boot 統合とともに Quarkus 拡張が含まれます。

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 の設定 →
FRAMEWORK INTEGRATION

R2D1-SPRING-BOOT-STARTER

dev.nexcraft:r2d1-spring-boot-starter

Maven Central に公開された Spring Boot 4 starter と独立した auto-configuration。

Spring Boot の設定 →
FRAMEWORK INTEGRATION

R2D1-QUARKUS

dev.nexcraft:r2d1-quarkus

CDI 設定とアプリケーション所有リソースを提供する Quarkus 3.39.5 拡張。R2D1 1.8.0 に含まれます。

Quarkus の設定 →

バックエンドを選び、1つの API を使います。

ドキュメントストアとインデックスストアを設定し、メタデータを定義してコレクションを開きます。

はじめに読む