コンテンツにスキップ

Key-Value Store の制約と注意点

このページではCraft Key-Value Store(Craft KVS)の制約と、利用時の注意点について説明します。

制約

1 valueあたりの最大サイズ

1 valueあたりの最大サイズは、1,048,572バイト(約1MB)です。

※ 2025年10月以前からKARTE Craftをご利用いただいているプロジェクトでは、1 valueあたりの最大サイズが1KBに制限されている場合があります。

処理力の目安

Key-Value Storeには、安定して実行できる処理力の目安があります。 これを超える負荷がかかると、処理の遅延だけでなく、タイムアウトやエラーの増加も起こりえます。

目安は次の通りです。

  • 秒間処理数: 〜 3000(読み込み・書き込みなどすべての操作の合計)
    • ※ 有効期限の到来によるレコードの自動削除は、この目安には含まれません

同じキーへのアクセスが集中する場合は、一時的にパフォーマンス低下することがあります。ホットスポットの発生によるパフォーマンス低下 もあわせてご確認ください。

次の点にご注意ください。

  • これは目安であり、保証値ではありません。
  • 急激に負荷が増えた場合は、目安内であっても一時的にエラーが増えやすくなります(徐々に負荷を増やすことを推奨します)。
  • KVSの目安の範囲内であっても、呼び出し元のファンクションの 処理力の目安 を超える場合は、ファンクション側で先に上限となります。

目安を超える規模での利用が見込まれる場合は、事前にご相談ください。利用状況に応じて、安定して処理できるよう環境を調整できる場合があります。

注意点

ホットスポットの発生によるパフォーマンス低下

keyの辞書順が近いレコード群に対して頻繁に読み取りや書き込みを行うと、ホットスポットの発生により一時的にパフォーマンス低下することがあります。

この問題は、keyに対して辞書順をばらけさせるためのprefixを付与することで軽減できる可能性があります。

// keyにホットスポット回避用のprefixを付与する実装の例
import crypto from 'crypto';
function generateHashPrefix(id) {
const hashBase64Url = crypto.createHash('sha256').update(id).digest('base64url');
// 辞書順を分散させるためハッシュ値の5〜12文字目を使用
const prefix = hashBase64Url.substring(4, 12);
return prefix;
}
function kvsKey(id) {
const hash = generateHashPrefix(id);
return `${hash}-${id}`;
}