Robloxは、データストレージのためのいくつかのオプションを提供しています。各ストレージオプションには利点と欠点があり、さまざまなユースケースに適しています。この表は、利用可能なオプションをまとめ、標準的なウェブサービスとの最も近い比較ポイントを提供します。
| サービス | 永続性 | スコープ | ゲーム内アクセス | クラウド比較 |
|---|---|---|---|---|
| データストア | 永続的 | クロスサーバー | 読み書き | NoSQLデータベース |
| メモリストア | 最大45日 | クロスサーバー | 読み書き | インメモリキャッシュ |
| コンフィグ | 永続的 | クロスサーバー | 読み取り専用 | アプリケーション設定および機能フラグ |
| シークレットストア | 永続的 | クロスサーバー | 読み取り専用 | シークレット管理 |
| Luau インメモリ | セッション期間 | シングルサーバー | 読み書き | サーバーRAM |
データストアを使用するタイミング
DataStoreServiceは、セッション間で持続する必要のある長期データ(ユーザーの進行状況やインベントリアイテムなど)を保存します。データストアはゲームごとに一貫しているため、ゲーム内のすべての場所のすべてのサーバーが同じデータにアクセスし、変更することができます。データストアには、標準と順序付きの2種類があります。
標準データストアは、ランク付けやソートの必要がない数値、文字列、テーブルなどのデータを保存できます。データはキーと値のペアとして保存されます; 各エントリは、そのデータストア内で一意のキーの下に保存され、取得、更新、または削除することができます。詳細については、データストアを参照してください。
順序付きデータストアは、数値のみを保存できます。各エントリは、そのデータストア内で一意のキーの下に保存され、取得、更新、または削除することができます。このデータは数値的にランク付けおよびソートでき、保存された数値に基づいて昇順または降順で取得できます。詳細については、順序付きデータストアを参照してください。
| 標準データストア | 順序付きデータストア | |
|---|---|---|
| データタイプ | 数字、文字列、ブール値、およびテーブル。 | 数値のみ。 |
| 一般的なユースケース | ユーザーの進行状況、インベントリアイテム、およびゲーム設定。 | 全時代の永続的なランキングシステムとリーダーボード。メモリストアのリーダーボードと異なり、このリーダーボードデータは永続的です。 |
| 過去のバージョンバックアップ | データの以前のバージョンを自動的に30日間管理します。 | データの以前のバージョンは管理しません。 |
メモリストアを使用するタイミング
MemoryStoreServiceは、高スループットで低レイテンシのサービスで、頻繁に更新またはアクセスする必要がある一時データ(グローバルリーダーボードやマッチメイキングキューなど)を保存します。メモリストアを使用すると、ゲーム内のすべての場所のすべてのサーバーが同じデータに迅速かつ頻繁にアクセスして変更できます。メモリストア内のデータは、最大45日間の一定の期間後に期限切れとなります。
すべてのサーバーで少数の値をすばやく読み取る必要がある場合は、コンフィグの方が良い選択肢です。メモリストアは、単一のキーまたはパーティションに頻繁にアクセスする場合、コンフィグほどパフォーマンスは良くありません。
メモリストアは一時データを保存しますが、グローバルマーケットプレイスのような永続的な機能もサポートしています。マーケットプレイスは永続的ですが、その中の販売アイテムには有効期限があります。
| メモリストア | |
|---|---|
| データタイプ | 45日以上永続する必要のない数字、文字列、ブール値、およびテーブル。 |
| 一般的なユースケース | スキルベースのマッチメイキング、マルチプレイヤーゲームのマッチ状態。 |
| 日次および月次リーダーボード。 |
コンフィグを使用するタイミング
コンフィグは、サーバーを再起動することなくゲーム内の変数をリアルタイムで更新できるようにします。これは、機能フラグや、調整したいゲーム内の値、または実験に最適です。
- コンフィグはゲーム内からは読み取り専用です—Creator HubやRoblox Studioで変更するため、データストアやメモリストアと同じユースケースを提供しません。
- コンフィグへの変更は5分間で展開されます; データおよびメモリストアへの変更はより瞬時です。
| コンフィグ | |
|---|---|
| データタイプ | 数字、文字列、ブール値、JSONオブジェクト。 |
| 一般的なユースケース | 新しいダンジョンの有効化、期間限定ゲームモードの無効化、ホリデーイベントの開始。 |
| 敵の健康、武器のダメージ、アイテムの価格、ゲームの倍数、ウェルカムメッセージ。 |
シークレットストアを使用するタイミング
ゲームのためにシークレットストアを使用して、外部サービスに対して認証するために使用するAPIキー、パスワード、およびアクセストークンを保存します。これらの値をデータストアに保存することは、不必要なセキュリティリスクをもたらします。
| シークレットストア | |
|---|---|
| データタイプ | 文字列。 |
| 一般的なユースケース | 分析や音楽サービスのためのAPIキー、パスワード、アクセストークン。 |
Luauでのインメモリストレージを使用するタイミング
Luauでインメモリストレージを使用して、外部サービスの呼び出しコストなしで、最小レイテンシでアクセスする必要がある一時データを保存します。このストレージはLuauに組み込まれており、設定は必要ありません。
| Luauでのインメモリストレージ | |
|---|---|
| データタイプ | 数字、文字列、ブール値、およびテーブル。 |
| 一般的なユースケース | 単一のサーバーセッションにのみ関連し、永続する必要がないデータ(状態効果やユーザーがゲームを離れたときにリセットされる一時的なポイントなど)。 |
| カウンタ、タイマー、状態フラグまたはヘルスバーのように、頻繁に変わる値。 | |
| ゲームロジックを駆動するデータであり、瞬時にアクセスする必要があるデータ(一時的な変数や敵の現在の健康など)。 |