Deno KV
#Deno #SQLite #FoundationDB #KVS #Deno_Deploy
概要
Deno v1.32で実装されたKVS (https://deno.com/kv)
code:kv.js
// :memory:を指定すると、インメモリでデータが管理されます (Deno CLIではSQLiteがバックエンドとして使用されます。)
const kv = await Deno.openKv(":memory:");
// エントリの作成
await kv.set("users", 1, "foo");
// エントリの検索
const result = await kv.get("users", 1);
assert(result.key.length === 2);
assert(result.key0 === "users");
assert(result.key1 === 1);
assert(result.value == "foo");
assert(result.versionstamp != null);
特徴
Deno (CLI)とDeno Deployで同様のAPIが提供されています
Deno (CLI)ではSQLite、Deno DeployではFoundationDBがバックエンドとして使用されています
データの問い合わせ時に結果整合、強整合のいずれかを選べます
JavaScriptの様々なデータ型を柔軟に保存できます
各キーに対して生存期間を設定可能です
Deno Queuesにより、メッセージキューとしての利用が可能です
Deno.KV#watch()によりPub/Sub用途として利用が可能です
セルフホスティング
SQLiteベースのバックエンドやDockerイメージ, CLIの実装などがdenoland/denokvリポジトリで提供されています。
Announcing self-hosted Deno KV, continuous backups, and replicas
ライブラリ
@deno/kv-utils - Deno公式のユーティリティー (元々は以下のkv-toolboxで提供されていた機能の一部が移植されています)
kv-toolbox - Deno KVのユーティリティライブラリ (作者はOakの開発者であるkitsonkさん)
kv-utils - Deno KVのユーティリティ
deno_kv_oauth - Deno KVをベースにOAuthのアクセストークンやセッションなどの管理を行ってくれるモジュール (Deno公式)
kv_api - Deno KVのデータをREST API経由で管理できるようにしてくれるDenoの公式モジュール。FreshやOak(予定)などをサポート
pentagon - PrismaライクなAPIを提供するDeno KVのラッパー
Otama - TypeScriptで定義したスキーマを元により型安全にDeno KVを利用できるようにするためのラッパーライブラリ
kvdex - Deno KVのラッパーでインデックスなどをサポート
thoth - Deno KVをベースに全文検索機能を提供してくれるjsrパッケージ
Fedify - ActivityPub向けのフレームワーク
@divy/mcp-deno-kv
GUIクライアント
kview - Freshで実装されたDeno KVクライアント (ウェブサイト)
kivi - vscode拡張
使用例
kv-notepad - Deno KVベースのメモアプリ
LumeCMS
denoland/chatspace - Real-time, collaborative GPT frontend built with Deno KV
Node.js/Bunサポート
Deno公式でnpmパッケージが公開されています (@deno/kv)
バックエンド
denokv_lmdb - Implementation of an LMDB-backed event store for Deno KV.
記事
Announcing Deno KV
How We Built Deno KV using FoundationDB
Deno v1.32でKVストアが実装されました
Deno KV ベータ版発表!cloudflare KVとcloudflare D1のいいとこ取り?
Global database comparison
Build Real-time Applications with the new "watch" API in Deno KV
Deno KV internals: building a database for the modern web
関連ページ
Deno Queues
Deno Cron
Deno Deploy
サーバーサイドSQLite