データストアのエラーコードと制限

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

データストアへのリクエストは、接続が不良であったり、その他の問題により失敗することがあります。エラーを処理し、エラーコードを含むメッセージを返すには、データストア関数を pcall() でラップします。

UpdateAsync() のような失敗した書き込み呼び出しは、ゲームサーバーが成功した応答を受け取らなかったことを意味します。バックエンドの書き込みが行われなかったことを常に保証するものではありません。いくつかの失敗シナリオでは、最終的な書き込み状態は、キャッシュなしでフォローアップの読み取りで確認されるまで呼び出し元には不明です。

エラーコードの参照

エラーコードエラー名エラー メッセージノート
101KeyNameEmptyキー名は空にできません。データストア関数に入力されたキーが空の文字列でないか確認してください。
102KeyNameLimitキー名が50文字の制限を超えています。データストア関数に入力されたキーが50文字を超えていないか確認してください。
103ValueNotAllowedDataStoreX を許可できません。不正な更新関数が X 型の値を返しました。
104CantStoreValueDataStoreX を保存できません。更新関数がシリアライズできない X 型の値を返しました。
105ValueTooLargeシリアライズされた値が X 制限を超えています。SetAsync() または UpdateAsync() で値を設定する場合、値のシリアライズされた長さは X を超えてはいけません。データのシリアライズされた長さを確認するには、JSONEncode() を使用してください。
106MaxValueInvalidMaxValue は整数でなければなりません。GetSortedAsync() に最大値を渡す場合、それは整数でなければなりません。
106MinValueInvalidMinValue は整数でなければなりません。GetSortedAsync() に最小値を渡す場合、それは整数でなければなりません。
106PageSizeGreaterPageSize は事前定義された範囲内でなければなりません。OrderedDataStore の最小ページサイズは1です。
106PageSizeLesserPageSize は事前定義された範囲内でなければなりません。OrderedDataStore の最大ページサイズは100です。
107MinMaxOrderInvalidMaxValueMinValue 以上でなければなりません。最大値は GetSortedAsync() の最小値以上でなければなりません。
301GetAsyncThrottleGetAsync リクエストがドロップされました。リクエストはスロットリングされましたが、キューが満杯でした。GetAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
302SetAsyncThrottleSetAsync リクエストがドロップされました。リクエストはスロットリングされましたが、キューが満杯でした。SetAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
303IncreAsyncThrottleIncrementAsync リクエストがドロップされました。リクエストはスロットリングされましたが、キューが満杯でした。IncrementAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
304UpdateAsyncThrottleUpdateAsync リクエストがドロップされました。リクエストはスロットリングされましたが、キューが満杯でした。UpdateAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
304TransformThrottleUpdateAsync リクエストがドロップされました。リクエストはスロットリングされましたが、キューが満杯でした。UpdateAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
305GetSortedThrottleGetSorted リクエストがドロップされました。リクエストはスロットリングされましたが、キューが満杯でした。GetSortedAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
306RemoveAsyncThrottleRemoveAsync リクエストがドロップされました。リクエストはスロットリングされましたが、キューが満杯でした。RemoveAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
401DataModelNoAccessリクエストが失敗しました。DataModel は体験がシャットダウンしている間はアクセスできません。DataModel は体験がシャットダウンしているため初期化されていません。
402LuaWebSrvsNoAccessリクエストが失敗しました。LuaWebService は体験がシャットダウンしている間はアクセスできません。LuaWebService は体験がシャットダウンしているため初期化されていません。
403StudioAccessToApisNotAllowedAPI アクセスが有効になっていないため、Studio から DataStore に書き込むことはできません。Studio でデータストアを使用するには、API アクセスを有効にする必要があります。
404InternalErrorOrderedDataStore が存在しません。このリクエストに関連付けられた OrderedDataStore が見つかりませんでした。これはデータの破損の兆候かもしれません。後でもう一度試してください。
501InternalErrorデータが破損している可能性があるため、応答を解析できません。サーバーはリクエストに対する応答を解析できませんでした。これはデータの破損の兆候かもしれません。後でもう一度試してください。
502RequestRejectedAPI サービスがエラー X でリクエストを拒否しました。Roblox サーバーで処理中にエラー X が発生しました。後でもう一度試してください。
503InternalErrorデータストアリクエストは成功しましたが、キーが見つかりませんでした。リクエストされたキーがデータストアに見つかりませんでした。これはデータの破損の兆候かもしれません。後でもう一度試してください。
504InternalErrorデータストアリクエストは成功しましたが、応答が正しくフォーマットされていませんでした。サーバーはリクエストに対する応答を解析できませんでした。これはデータの破損の兆候かもしれません。後でもう一度試してください。
505InternalErrorOrderedDataStore リクエストは成功しましたが、応答が正しくフォーマットされていませんでした。サーバーは OrderedDataStore リクエストに対する応答を解析できませんでした。これはデータの破損の兆候かもしれません。後でもう一度試してください。
509OperationNotAllowedデータストア操作は、データの破損を防ぐためにパーソナル RCC で実行中はブロックされています。プライベート RCC チャンネルではデータストアの書き込みがブロックされています。
511AttributeSizeTooLargeメタデータ属性のサイズが X 制限を超えています。シリアライズされたメタデータのサイズが X の制限を超えています。値 X は動的です。サイズが変更されると、値も変更されます。
512UserIdLimitExceededUserID サイズが X 制限を超えています。ユーザーによって提供されたユーザー ID の配列の長さが X の制限を超えています。
513AttributeFormatError属性 userId の形式が無効です。提供されたユーザー ID は数値ではありません。
513AttributeFormatError属性メタデータの形式が無効です。メタデータはテーブルではありません。
GetVersionAsyncThrottleGetVersionAsync リクエストがドロップされました。リクエストはスロットリングされました。GetVersionAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
GetVersionAtTimeAsyncThrottleGetVersionAtTimeAsync リクエストがドロップされました。リクエストはスロットリングされました。GetVersionAtTimeAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
ListDataStoresAsyncThrottleListDataStoresAsync リクエストがドロップされました。リクエストはスロットリングされました。ListDataStoresAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
ListKeysAsyncThrottleListKeysAsync リクエストがドロップされました。リクエストはスロットリングされました。ListKeysAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
ListVersionsAsyncThrottleListVersionsAsync リクエストがドロップされました。リクエストはスロットリングされました。ListVersionsAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
RemoveVersionAsyncThrottleRemoveVersionAsync リクエストがドロップされました。リクエストはスロットリングされました。RemoveVersionAsync() リクエストが最大キューサイズを超え、Roblox は現在のスループットでリクエストを処理できません。
InvalidTimestampタイムスタンプは正であり、未来の10分を超えてはいけません。GetVersionAtTimeAsync() に提供されたタイムスタンプは無効でした。
StandardReadExperienceThrottledStandardRead リクエストが体験の制限によりスロットリングされました。GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), または標準データストアの UpdateAsync() の読み取りが StandardRead 体験レベルのレート制限を超えました。
StandardWriteExperienceThrottledStandardWrite リクエストが体験の制限によりスロットリングされました。SetAsync(), IncrementAsync(), または標準データストアの UpdateAsync() の書き込みが StandardWrite 体験レベルのレート制限を超えました。
StandardListExperienceThrottledStandardList リクエストが体験の制限によりスロットリングされました。ListKeysAsync(), ListVersionsAsync(), または標準データストアの ListDataStoresAsync() に対するリクエストが StandardList 体験レベルのレート制限を超えました。
StandardRemoveExperienceThrottledStandardRemove リクエストが体験の制限によりスロットリングされました。標準データストアの RemoveAsync() に対するリクエストが StandardRemove 体験レベルのレート制限を超えました。
OrderedReadExperienceThrottledOrderedRead リクエストが体験の制限によりスロットリングされました。GetAsync(), BatchGetAsync(), または順序付きデータストアの UpdateAsync() の読み取りが OrderedRead 体験レベルのレート制限を超えました。
OrderedWriteExperienceThrottledOrderedWrite リクエストが体験の制限によりスロットリングされました。SetAsync(), IncrementAsync(), または順序付きデータストアの UpdateAsync() の書き込みが OrderedWrite 体験レベルのレート制限を超えました。
OrderedListExperienceThrottledOrderedList リクエストが体験の制限によりスロットリングされました。GetSortedAsync() に対するリクエストが順序付きデータストアの OrderedList 体験レベルのレート制限を超えました。
OrderedRemoveExperienceThrottledOrderedRemove リクエストが体験の制限によりスロットリングされました。RemoveAsync() に対するリクエストが順序付きデータストアの OrderedRemove 体験レベルのレート制限を超えました。
StandardReadGameServerThrottledStandardRead リクエストがゲームサーバーの制限によりスロットリングされるか、リクエストキューが満杯でした。GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), または標準データストアの UpdateAsync() の読み取りが StandardRead ゲームサーバーレベルのレート制限を超えました。
StandardWriteGameServerThrottledStandardWrite リクエストがゲームサーバーの制限によりスロットリングされるか、リクエストキューが満杯でした。SetAsync(), IncrementAsync(), または標準データストアの UpdateAsync() の書き込みが StandardWrite ゲームサーバーレベルのレート制限を超えました。
StandardListGameServerThrottledStandardList リクエストがゲームサーバーの制限によりスロットリングされるか、リクエストキューが満杯でした。ListKeysAsync(), ListVersionsAsync(), または標準データストアの ListDataStoresAsync() に対するリクエストが StandardList ゲームサーバーレベルのレート制限を超えました。
StandardRemoveGameServerThrottledStandardRemove リクエストがゲームサーバーの制限によりスロットリングされるか、リクエストキューが満杯でした。RemoveAsync() に対するリクエストが標準データストアの StandardRemove ゲームサーバーレベルのレート制限を超えました。
OrderedReadGameServerThrottledOrderedRead リクエストがゲームサーバーの制限によりスロットリングされるか、リクエストキューが満杯でした。GetAsync(), BatchGetAsync(), または順序付きデータストアの UpdateAsync() の読み取りが OrderedRead ゲームサーバーレベルのレート制限を超えました。
OrderedWriteGameServerThrottledOrderedWrite リクエストがゲームサーバーの制限によりスロットリングされるか、リクエストキューが満杯でした。SetAsync(), IncrementAsync(), または順序付きデータストアの UpdateAsync() の書き込みが OrderedWrite ゲームサーバーレベルのレート制限を超えました。
OrderedListGameServerThrottledOrderedList リクエストがゲームサーバーの制限によりスロットリングされるか、リクエストキューが満杯でした。GetSortedAsync() に対するリクエストが順序付きデータストアの OrderedList ゲームサーバーレベルのレート制限を超えました。
OrderedRemoveGameServerThrottledOrderedRemove リクエストがゲームサーバーの制限によりスロットリングされるか、リクエストキューが満杯でした。RemoveAsync() に対するリクエストが順序付きデータストアの OrderedRemove ゲームサーバーレベルのレート制限を超えました。

サーバーエラーコード

エラー名エラー メッセージノート
DatastoreDeletedデータストアは削除されています。データストアが以前に削除されたため、データストアに対する操作を実行できませんでした。
DatastoreThrottledリクエストレートが datastore の許可された最大値を超えています。単一のデータストアに対して送信されたリクエストが多すぎます。
InternalServerError内部サーバーエラーが発生しました。Roblox サーバーでの偶発的なエラーです。再試行してください。理想的には指数バックオフを使用してください。
InvalidExclusiveStartKey提供された排他的開始キーが無効です。ListKeysAsync() のようなリスト操作に提供された排他的開始キー(カーソル)が無効です。
InvalidPlace提供された場所が無効です。場所に対する一致するユニバース ID がありません。後でもう一度試してください。
InvalidTarget提供されたターゲットが無効です。順序付きデータストアのキー名が50文字の制限を超えています。
InvalidUniverse提供されたユニバースが無効です。ユニバースに対する一致するプレース ID がありません。後でもう一度試してください。
InvalidUserIds提供されたユーザー ID の形式が無効です。ユーザー ID の解析に失敗しました。
KeyThrottledリクエストレートがキーの許可された最大値を超えています。単一のキーに対する最大許可リクエストレートを超えています。
KeyNotFoundリクエストされたキーは存在しません。キーは存在しません。
N/A進むページがありません。最後のページで Pages:AdvanceToNextPageAsync() を呼び出すとこのエラーが発生します。
StandardReadExperienceThrottled標準読み取りリクエストレートが体験の許可された最大値を超えています。GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), または標準データストアの UpdateAsync() の読み取りが StandardRead 体験レベルのレート制限を超えました。
StandardWriteExperienceThrottled標準書き込みリクエストレートが体験の許可された最大値を超えています。SetAsync(), IncrementAsync(), または標準データストアの UpdateAsync() の書き込みが StandardWrite 体験レベルのレート制限を超えました。
StandardListExperienceThrottled標準リストリクエストレートが体験の許可された最大値を超えています。ListKeysAsync(), ListVersionsAsync(), または標準データストアの ListDataStoresAsync() に対するリクエストが StandardList 体験レベルのレート制限を超えました。
StandardRemoveExperienceThrottled標準削除リクエストレートが体験の許可された最大値を超えています。標準データストアの RemoveAsync() に対するリクエストが StandardRemove 体験レベルのレート制限を超えました。
OrderedReadExperienceThrottled順序付き読み取りリクエストレートが体験の許可された最大値を超えています。GetAsync(), BatchGetAsync(), または順序付きデータストアの UpdateAsync() の読み取りが OrderedRead 体験レベルのレート制限を超えました。
OrderedWriteExperienceThrottled順序付き書き込みリクエストレートが体験の許可された最大値を超えています。SetAsync(), IncrementAsync(), または順序付きデータストアの UpdateAsync() の書き込みが OrderedWrite 体験レベルのレート制限を超えました。
OrderedListExperienceThrottled順序付きリストリクエストレートが体験の許可された最大値を超えています。GetSortedAsync() に対するリクエストが順序付きデータストアの OrderedList 体験レベルのレート制限を超えました。
OrderedRemoveExperienceThrottled順序付き削除リクエストレートが体験の許可された最大値を超えています。RemoveAsync() に対するリクエストが順序付きデータストアの OrderedRemove 体験レベルのレート制限を超えました。

制限

データモデルには 制限 があります。体験がこれらの制限を超えると、サービスは自動的に体験のデータストアの使用をスロットリングし、将来のリクエストを次のいずれかのキューに配置します。

  • セット
  • 順序付きセット
  • 取得
  • 順序付き取得

キュー内のリクエストは、受信した順序で処理されます。呼び出された関数は、リクエストがまだキューにある限り、引き続き待機します。データストアキー自体がスロットリングされている場合、リクエストはキューに配置されますが、一時的にスキップされます。

各キューには30リクエストの制限があります。キューの制限に達すると、リクエストは301-306の範囲のエラーコードで失敗し、リクエストが完全にドロップされたことを示します。

アクセス制限

データストアは 体験およびサーバーレベルの制限 の対象です。体験レベルの制限は、体験全体の同時ユーザー数に応じてスケールし、サーバーレベルの制限は構成可能で、クリエイターがツールとして使用することを目的としています。

体験制限

各体験には、データストアの種類、リクエストの種類、および同時ユーザー数に基づいて、特定の数のデータストアリクエストが許可されています。各データストアの種類とリクエストの種類ごとに、制限はすべてのリストされた関数で共有されます。

  • UpdateAsync() は、読み取りおよび書き込みリクエストの予算の両方から消費します。単一の呼び出しは両方の制限を減少させます。
  • ゲームサーバーとオープンクラウドは 共有 予算を持っています。オープンクラウドのトラフィックは、体験内の使用によってスロットリングされる可能性があります(その逆も同様です)。詳細なガイダンスについては レート制限の制御 を参照してください。
標準データストア
リクエストの種類ゲームサーバー APIオープンクラウド API共有制限(分あたりのリクエスト数)
読み取りGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
UpdateAsync()
データストアエントリを取得300 + concurrentUsers × 40
書き込みSetAsync()
IncrementAsync()
UpdateAsync()
データストアエントリを作成、更新、増加300 + concurrentUsers × 20
リストListDataStoresAsync()
ListKeysAsync()
ListVersionsAsync()
データストアのリスト、データストアエントリのリスト、データストアエントリのリビジョンのリスト300 + concurrentUsers × 2
削除RemoveAsync()データストアエントリを削除、データストアを削除、データストアを復元300 + concurrentUsers × 40
順序付きデータストア
リクエストの種類ゲームサーバー APIオープンクラウド API共有制限(分あたりのリクエスト数)
読み取りGetAsync()
BatchGetAsync()
UpdateAsync()
順序付きデータストアエントリを取得300 + concurrentUsers × 40
書き込みSetAsync()
IncrementAsync()
UpdateAsync()
順序付きデータストアエントリを作成、更新、増加300 + concurrentUsers × 20
リストGetSortedAsync()順序付きデータストアエントリのリスト300 + concurrentUsers × 2
削除RemoveAsync()順序付きデータストアエントリを削除300 + concurrentUsers × 40
レート制限の制御

オープンクラウドとゲームサーバーのリクエストは共有されるため、それぞれが予算からどれだけ消費できるかを独立して制御することが重要です。

ゲームサーバー

個々のサーバーには、上記のように組み込みの制限があります。SetRateLimitForRequestType()GetRequestBudgetForRequestType() の組み合わせを使用して、個々のサーバーの総予算への貢献を細かく制御します。

オープンクラウド

オープンクラウドリクエストには、外部のレート制限ソリューションが必要です。以下のアプローチのいずれかをお勧めします。

  • (シンプル)各リクエストの後に短いタイムアウトを追加します。特に同じ API を連続ループで呼び出す場合は、これを行います。このタイムアウトは、60 / (希望する予算消費量/分) 秒に等しく、上限として設定します。このアプローチでは、リクエストをバーストで送信することはできません。
  • (堅牢)漏れバケツ戦略を使用してローカルレートリミッターを実装します。

以下の Node.js コードサンプルには、参照実装が含まれています。

const apiKey = process.env.API_KEY;
if (!apiKey) {
throw new Error('API_KEY 環境変数が設定されていません。');
}
const apiHeaderKey = 'x-api-key';
const universeId = '';
const dataStoreId = 'Inventory';
const baseUrl = 'https://apis.roblox.com/cloud/v2/';
// --- 操作ごとのレート制限設定(分あたりのリクエスト数) ---
const LIST_RATE_PER_MIN = 60;
const GET_RATE_PER_MIN = 120;
const UPDATE_RATE_PER_MIN = 60;
// 操作ごとの上限間隔: 60 / (リクエスト数/分) 秒。
const LIST_INTERVAL_MS = (60 / LIST_RATE_PER_MIN) * 1000;
const GET_INTERVAL_MS = (60 / GET_RATE_PER_MIN) * 1000;
const UPDATE_INTERVAL_MS = (60 / UPDATE_RATE_PER_MIN) * 1000;
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
// リクエストを実行し、その後この操作の間隔を待機してから返します。
async function throttledFetch(url, options, intervalMs) {
const response = await fetch(url, options);
await sleep(intervalMs);
return response;
}
async function listEntries(universe, dataStore) {
const listPath = `universes/${universe}/data-stores/${dataStore}/entries`;
const url = baseUrl + listPath;
const response = await throttledFetch(url, {
headers: { [apiHeaderKey]: apiKey }
}, LIST_INTERVAL_MS);
return response.json();
}
async function getEntry(path) {
const url = baseUrl + path;
const response = await throttledFetch(url, {
headers: { [apiHeaderKey]: apiKey }
}, GET_INTERVAL_MS);
return response.json();
}
async function updateEntry(path, payload) {
const url = baseUrl + path;
const response = await throttledFetch(url, {
method: 'PATCH',
headers: {
[apiHeaderKey]: apiKey,
'Content-Type': 'application/json'
},
body: JSON.stringify(payload) // 本文は文字列でなければなりません
}, UPDATE_INTERVAL_MS);
return response;
}
(async () => {
try {
const entries = await listEntries(universeId, dataStoreId);
for (const entry of entries.dataStoreEntries) {
const path = entry.path;
console.log(`\nエントリを処理中: ${path}`);
const currentData = await getEntry(path);
currentData.value.currency += 10;
const payload = { value: currentData.value };
const updateResponse = await updateEntry(path, payload);
console.log(`ステータス: ${updateResponse.status}`);
console.log(`応答: ${await updateResponse.text()}`);
}
} catch (error) {
console.error('実行中にエラーが発生しました:', error);
}
})();

サーバー制限

各サーバーには、そのサーバー内のプレイヤー数に基づいて、各リクエストタイプの構成可能なレート制限があります。サーバーは、最初に作成されたときに追加のリクエスト予算の一時的なバーストを受け取ります。GetRequestBudgetForRequestType() を使用して、現在のサーバーがいつでも行えるデータストアリクエストの数を確認します。

これらの制限は クリエイターによって構成可能 であり、SetRateLimitForRequestType() API を使用して、クリエイターは各リクエストタイプのデータストアのレート制限を構成できます。

API が呼び出されない場合、以下の デフォルトのレート制限 が適用されます。

標準データストア
リクエストの種類DataStoreRequestType 列挙型ゲームサーバー API分あたりのリクエスト数
読み取りStandardReadGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
UpdateAsync()
60 + numPlayers × 40
書き込みStandardWriteSetAsync()
IncrementAsync()
UpdateAsync()
60 + numPlayers × 40
リストStandardListListDataStoresAsync()
ListKeysAsync()
ListVersionsAsync()
5 + numPlayers × 2
削除StandardRemoveRemoveAsync()60 + numPlayers × 40
RemoveVersion (非推奨)RemoveVersionAsyncRemoveVersionAsync()5 + numPlayers × 2
順序付きデータストア
リクエストの種類DataStoreRequestType 列挙型ゲームサーバー API分あたりのリクエスト数
読み取りOrderedReadGetAsync()
BatchGetAsync()
UpdateAsync()
60 + numPlayers × 40
書き込みOrderedWriteSetAsync()
IncrementAsync()
UpdateAsync()
30 + numPlayers × 5
リストOrderedListGetSortedAsync()5 + numPlayers × 2
削除OrderedRemoveRemoveAsync()30 + numPlayers × 5

データ制限

データストアは、エントリごとに使用できるデータの量を制限します。

データストア名、キー名、および スコープ はすべて特定の文字数制限内でなければなりません。string.len() を使用してその長さを確認してください。

データ(キー値)も、初期の型に関係なく文字列として保存されます。データのサイズは、Luau データをシリアライズされた JSON テーブルに変換する JSONEncode() 関数を使用して確認できます。

コンポーネント最大文字数
データストア名50
キー名50
スコープ50
データ(キー値)4,194,304 per key

メタデータ制限

ユーザー定義メタデータの文字数に対する制限。

コンポーネント最大文字数
キー名50
250
キー-値ペア300

スループット制限

キーごとのスループット制限は、Roblox サーバーでのパフォーマンスが最適であることを保証します。各制限は、体験内のすべてのサーバーにわたってすべてのキーに適用され、時間とともにリフレッシュされます。

Roblox は、キーに関連付けられたクォータの使用状況を過去60秒間調べます。使用状況がスループット制限内であれば、リクエストは承認されます。使用状況が制限を超えると、リクエストは拒否されます。

リクエストの種類ゲームサーバー APIオープンクラウド API制限
読み取りGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
ListVersionsAsync()
UpdateAsync()
データストアエントリを取得25 MB per minute
書き込みSetAsync()
IncrementAsync()
UpdateAsync()
RemoveAsync()
データストアエントリを作成、更新、増加、削除4 MB per minute

上記のスループット制限に加えて、Robloxは内部スキーマに基づいてデータをパーティションに整理します。その結果、バックエンドサーバーが同じデータストアへの高ボリュームのリクエストを受け取ると、さらなるスロットリングが発生する可能性があります。原因に関係なく、スロットリングは、スループット制限が単一のデータストアまたはキーに対して超過したかどうかに応じて、DatastoreThrottledまたはKeyThrottledエラーとして現れます。これらのエラーメッセージは、順序付きデータストアと標準データストアの両方に適用されます。

ストレージ制限

ストレージを安定かつスケーラブルに保つために、データストアはストレージ使用量に対してゲームレベルの制限を使用します。

この制限は、各ゲームに対する基本割り当てと、ライフタイムユーザーの数に基づく追加割り当てで構成されています。ライフタイムユーザーとは、あなたのゲームに少なくとも一度参加したユーザーのことです。

ストレージ制限は、次の式を使用して計算されます 最新バージョンのストレージ制限合計 = 500 MB + 1 MB × ライフタイムユーザー数

ストレージ使用量は、各キーの最新バージョンの圧縮サイズを使用して測定されます。データストアはストレージ前に自動的にデータを圧縮するため、事前に圧縮することは避けてください。事前圧縮は不必要なCPUオーバーヘッドを追加し、データストアの組み込み圧縮の効果を減少させる可能性があります。未圧縮データを保存することで、Robloxの圧縮アルゴリズムや将来のスキーマベースの最適化の改善の恩恵を自動的に受けることができます。

各キーの最新バージョンのみがストレージ使用量にカウントされます。削除されたキーや置き換えられたバージョンは、保持期間中にバージョンAPIを通じてアクセス可能ですが、ストレージ使用量にはカウントされません。ただし、Open CloudのDeleteDataStoreメソッドを通じて削除されたデータストアは、永久に削除されるまでの30日間の削除処理期間中はストレージ使用量にカウントされ続けます。

©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。