Permintaan yang Anda buat ke penyimpanan data dapat gagal karena konektivitas yang buruk atau masalah lainnya. Untuk menangani kesalahan dan mengembalikan pesan dengan kode kesalahan, bungkus fungsi penyimpanan data dalam pcall().
Panggilan tulis yang gagal, seperti UpdateAsync(), berarti server game tidak menerima respons yang berhasil. Ini tidak selalu menjamin bahwa penulisan backend tidak terjadi. Dalam beberapa skenario kegagalan, status penulisan terakhir mungkin tidak diketahui oleh pemanggil hingga diverifikasi dengan pembacaan lanjutan tanpa cache.
Referensi kode kesalahan
| Kode kesalahan | Nama kesalahan | Pesan kesalahan | Catatan | |
|---|---|---|---|---|
| 101 | KeyNameEmpty | Nama kunci tidak boleh kosong. | Periksa apakah kunci yang dimasukkan ke dalam fungsi penyimpanan data adalah string kosong. | |
| 102 | KeyNameLimit | Nama kunci melebihi batas 50 karakter. | Periksa apakah kunci yang dimasukkan ke dalam fungsi penyimpanan data melebihi panjang 50. | |
| 103 | ValueNotAllowed | Tidak dapat mengizinkan X dalam DataStore. | Fungsi pembaruan yang buruk mengembalikan nilai bertipe X. | |
| 104 | CantStoreValue | Tidak dapat menyimpan X dalam DataStore. | Fungsi pembaruan mengembalikan nilai bertipe X yang tidak dapat diserialisasi. | |
| 105 | ValueTooLarge | Nilai yang diserialisasi melebihi batas X. | Jika Anda mengatur nilai dengan SetAsync() atau UpdateAsync(), panjang yang diserialisasi dari nilai tidak boleh melebihi ukuran X. Untuk memeriksa panjang yang diserialisasi dari data, gunakan JSONEncode(). | |
| 106 | MaxValueInvalid | MaxValue harus berupa integer. | Jika Anda melewatkan nilai maksimum ke GetSortedAsync() untuk OrderedDataStore, itu harus berupa integer. | |
| 106 | MinValueInvalid | MinValue harus berupa integer. | Jika Anda melewatkan nilai minimum ke GetSortedAsync() untuk OrderedDataStore, itu harus berupa integer. | |
| 106 | PageSizeGreater | PageSize harus dalam rentang yang telah ditentukan. | Ukuran halaman minimum untuk OrderedDataStore adalah 1. | |
| 106 | PageSizeLesser | PageSize harus dalam rentang yang telah ditentukan. | Ukuran halaman maksimum untuk OrderedDataStore adalah 100. | |
| 107 | MinMaxOrderInvalid | MaxValue harus lebih besar dari atau sama dengan MinValue. | Nilai maksimum harus lebih besar dari atau sama dengan nilai minimum untuk GetSortedAsync(). | |
| 301 | GetAsyncThrottle | Permintaan GetAsync dibatalkan. Permintaan mengalami throttling tetapi antrean sudah penuh. | Permintaan GetAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | |
| 302 | SetAsyncThrottle | Permintaan SetAsync dibatalkan. Permintaan mengalami throttling tetapi antrean sudah penuh. | Permintaan SetAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | |
| 303 | IncreAsyncThrottle | Permintaan IncrementAsync dibatalkan. Permintaan mengalami throttling tetapi antrean sudah penuh. | Permintaan IncrementAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | |
| 304 | UpdateAsyncThrottle | Permintaan UpdateAsync dibatalkan. Permintaan mengalami throttling tetapi antrean sudah penuh. | Permintaan UpdateAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | |
| 304 | TransformThrottle | Permintaan UpdateAsync dibatalkan. Permintaan mengalami throttling tetapi antrean sudah penuh. | Permintaan UpdateAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | |
| 305 | GetSortedThrottle | Permintaan GetSorted dibatalkan. Permintaan mengalami throttling tetapi antrean sudah penuh. | Permintaan GetSortedAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | |
| 306 | RemoveAsyncThrottle | Permintaan RemoveAsync dibatalkan. Permintaan mengalami throttling tetapi antrean sudah penuh. | Permintaan RemoveAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | |
| 401 | DataModelNoAccess | Permintaan gagal. DataModel tidak dapat diakses saat pengalaman sedang ditutup. | DataModel tidak terinisialisasi karena pengalaman sedang ditutup. | |
| 402 | LuaWebSrvsNoAccess | Permintaan gagal. LuaWebService tidak dapat diakses saat pengalaman sedang ditutup. | LuaWebService tidak terinisialisasi karena pengalaman sedang ditutup. | |
| 403 | StudioAccessToApisNotAllowed | Tidak dapat menulis ke DataStore dari Studio karena akses API tidak diizinkan. | Akses API harus aktif agar dapat menggunakan penyimpanan data di Studio. | |
| 404 | InternalError | OrderedDataStore tidak ada. | OrderedDataStore yang terkait dengan permintaan ini tidak ditemukan. Ini mungkin merupakan tanda adanya kerusakan data. Coba lagi nanti. | |
| 501 | InternalError | Tidak dapat mengurai respons karena data mungkin telah rusak. | Server tidak dapat mengurai respons untuk permintaan Anda. Ini mungkin merupakan tanda adanya kerusakan data. Coba lagi nanti. | |
| 502 | RequestRejected | Layanan API menolak permintaan dengan kesalahan X. | Kesalahan X terjadi saat pemrosesan di server Roblox. Coba lagi nanti. | |
| 503 | InternalError | Permintaan penyimpanan data berhasil tetapi kunci tidak ditemukan. | Kunci yang diminta tidak ditemukan dalam penyimpanan data. Ini mungkin merupakan tanda adanya kerusakan data. Coba lagi nanti. | |
| 504 | InternalError | Permintaan penyimpanan data berhasil tetapi respons tidak diformat dengan benar. | Server tidak dapat mengurai respons untuk permintaan Anda. Ini mungkin merupakan tanda adanya kerusakan data. Coba lagi nanti. | |
| 505 | InternalError | Permintaan OrderedDataStore berhasil tetapi respons tidak diformat dengan benar. | Server tidak dapat mengurai respons untuk permintaan OrderedDataStore Anda. Ini mungkin merupakan tanda adanya kerusakan data. Coba lagi nanti. | |
| 509 | OperationNotAllowed | Operasi penyimpanan data diblokir saat berjalan di RCC Pribadi untuk mencegah kemungkinan kerusakan data. | Tulisan penyimpanan data diblokir di saluran RCC privat. | |
| 511 | AttributeSizeTooLarge | Ukuran atribut metadata melebihi batas X. | Ukuran metadata yang diserialisasi melebihi batas X. Nilai X adalah dinamis. Jika ukuran berubah, nilainya juga berubah. | |
| 512 | UserIdLimitExceeded | Ukuran UserID melebihi batas X. | Panjang array ID pengguna yang diberikan oleh pengguna melebihi batas X. | |
| 513 | AttributeFormatError | Format atribut userId tidak valid. | ID pengguna yang diberikan bukan angka. | |
| 513 | AttributeFormatError | Format metadata atribut tidak valid. | Metadata bukan tabel. | |
| GetVersionAsyncThrottle | Permintaan GetVersionAsync dibatalkan. Permintaan mengalami throttling. | Permintaan GetVersionAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | ||
| GetVersionAtTimeAsyncThrottle | Permintaan GetVersionAtTimeAsync dibatalkan. Permintaan mengalami throttling. | Permintaan GetVersionAtTimeAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | ||
| ListDataStoresAsyncThrottle | Permintaan ListDataStoresAsync dibatalkan. Permintaan mengalami throttling. | Permintaan ListDataStoresAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | ||
| ListKeysAsyncThrottle | Permintaan ListKeysAsync dibatalkan. Permintaan mengalami throttling. | Permintaan ListKeysAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | ||
| ListVersionsAsyncThrottle | Permintaan ListVersionsAsync dibatalkan. Permintaan mengalami throttling. | Permintaan ListVersionsAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | ||
| RemoveVersionAsyncThrottle | Permintaan RemoveVersionAsync dibatalkan. Permintaan mengalami throttling. | Permintaan RemoveVersionAsync() telah melebihi ukuran antrean maksimum dan Roblox tidak dapat memproses permintaan pada throughput saat ini. | ||
| InvalidTimestamp | Timestamp harus positif dan tidak lebih dari sepuluh menit di masa depan. | Timestamp yang diberikan ke GetVersionAtTimeAsync() tidak valid. | ||
| StandardReadExperienceThrottled | Permintaan StandardRead dibatalkan oleh batasan pengalaman. | Sebuah permintaan ke GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), atau pembacaan dari UpdateAsync() pada penyimpanan data standar melebihi batas tingkat pengalaman StandardRead. | ||
| StandardWriteExperienceThrottled | Permintaan StandardWrite dibatalkan oleh batasan pengalaman. | Sebuah permintaan ke SetAsync(), IncrementAsync(), atau penulisan dari UpdateAsync() pada penyimpanan data standar melebihi batas tingkat pengalaman StandardWrite. | ||
| StandardListExperienceThrottled | Permintaan StandardList dibatalkan oleh batasan pengalaman. | Sebuah permintaan ke ListKeysAsync(), ListVersionsAsync(), atau ListDataStoresAsync() pada penyimpanan data standar melebihi batas tingkat pengalaman StandardList. | ||
| StandardRemoveExperienceThrottled | Permintaan StandardRemove dibatalkan oleh batasan pengalaman. | Sebuah permintaan ke RemoveAsync() pada penyimpanan data standar melebihi batas tingkat pengalaman StandardRemove. | ||
| OrderedReadExperienceThrottled | Permintaan OrderedRead dibatalkan oleh batasan pengalaman. | Sebuah permintaan ke GetAsync() atau pembacaan dari UpdateAsync() pada penyimpanan data terurut melebihi batas tingkat pengalaman OrderedRead. | ||
| OrderedWriteExperienceThrottled | Permintaan OrderedWrite dibatalkan oleh batasan pengalaman. | Sebuah permintaan ke SetAsync(), IncrementAsync(), atau penulisan dari UpdateAsync() pada penyimpanan data terurut melebihi batas tingkat pengalaman OrderedWrite. | ||
| OrderedListExperienceThrottled | Permintaan OrderedList dibatalkan oleh batasan pengalaman. | Sebuah permintaan ke GetSortedAsync() pada penyimpanan data terurut melebihi batas tingkat pengalaman OrderedList. | ||
| OrderedRemoveExperienceThrottled | Permintaan OrderedRemove dibatalkan oleh batasan pengalaman. | Sebuah permintaan ke RemoveAsync() pada penyimpanan data terurut melebihi batas tingkat pengalaman OrderedRemove. | ||
| StandardReadGameServerThrottled | Permintaan StandardRead dibatalkan oleh batasan server game atau antrean permintaan penuh. | Sebuah permintaan ke GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), atau pembacaan dari UpdateAsync() pada penyimpanan data standar melebihi batas tingkat server game StandardRead. | ||
| StandardWriteGameServerThrottled | Permintaan StandardWrite dibatalkan oleh batasan server game atau antrean permintaan penuh. | Sebuah permintaan ke SetAsync(), IncrementAsync(), atau penulisan dari UpdateAsync() pada penyimpanan data standar melebihi batas tingkat server game StandardWrite. | ||
| StandardListGameServerThrottled | Permintaan StandardList dibatalkan oleh batasan server game atau antrean permintaan penuh. | Sebuah permintaan ke ListKeysAsync(), ListVersionsAsync(), atau ListDataStoresAsync() pada penyimpanan data standar melebihi batas tingkat server game StandardList. | ||
| StandardRemoveGameServerThrottled | Permintaan StandardRemove dibatalkan oleh batasan server game atau antrean permintaan penuh. | Sebuah permintaan ke RemoveAsync() pada penyimpanan data standar melebihi batas tingkat server game StandardRemove. | ||
| OrderedReadGameServerThrottled | Permintaan OrderedRead dibatalkan oleh batasan server game atau antrean permintaan penuh. | Sebuah permintaan ke GetAsync() atau pembacaan dari UpdateAsync() pada penyimpanan data terurut melebihi batas tingkat server game OrderedRead. | ||
| OrderedWriteGameServerThrottled | Permintaan OrderedWrite dibatalkan oleh batasan server game atau antrean permintaan penuh. | Sebuah permintaan ke SetAsync(), IncrementAsync(), atau penulisan dari UpdateAsync() pada penyimpanan data terurut melebihi batas tingkat server game OrderedWrite. | ||
| OrderedListGameServerThrottled | Permintaan OrderedList dibatalkan oleh batasan server game atau antrean permintaan penuh. | Sebuah permintaan ke GetSortedAsync() pada penyimpanan data terurut melebihi batas tingkat server game OrderedList. | ||
| OrderedRemoveGameServerThrottled | Permintaan OrderedRemove dibatalkan oleh batasan server game atau antrean permintaan penuh. | Sebuah permintaan ke RemoveAsync() pada penyimpanan data terurut melebihi batas tingkat server game OrderedRemove. |
Kode kesalahan server
| Nama kesalahan | Pesan kesalahan | Catatan |
|---|---|---|
| DatastoreDeleted | Penyimpanan data telah dihapus. | Sebuah operasi pada penyimpanan data tidak dapat terjadi karena penyimpanan data sebelumnya telah dihapus. |
| DatastoreThrottled | Kecepatan permintaan melebihi maksimum yang diizinkan untuk datastore. | Terlalu banyak permintaan yang dikirim ke satu penyimpanan data. |
| InternalServerError | Kesalahan server internal terjadi. | Kesalahan sporadis di server Roblox. Coba lagi, sebaiknya dengan exponential backoff. |
| InvalidExclusiveStartKey | Kunci mulai eksklusif yang diberikan tidak valid. | Kunci mulai eksklusif (cursor) yang diberikan untuk operasi daftar seperti ListKeysAsync() tidak valid. |
| InvalidPlace | Tempat yang diberikan tidak valid. | Tidak ada ID Universe yang cocok untuk tempat tersebut. Coba lagi nanti. |
| InvalidTarget | Target yang diberikan tidak valid. | Nama kunci penyimpanan data terurut melebihi batas 50 karakter. |
| InvalidUniverse | Universe yang diberikan tidak valid. | Tidak ada ID Tempat yang cocok untuk universe tersebut. Coba lagi nanti. |
| InvalidUserIds | ID pengguna yang diberikan memiliki format yang tidak valid. | Gagal mengurai ID pengguna. |
| KeyThrottled | Kecepatan permintaan melebihi maksimum yang diizinkan untuk kunci tersebut. | Kecepatan permintaan melebihi kecepatan permintaan maksimum yang diizinkan untuk kunci tunggal. |
| KeyNotFound | Kunci yang diminta tidak ada. | Kunci tersebut tidak ada. |
| N/A | Tidak ada halaman untuk dilanjutkan. | Kesalahan ini terjadi ketika Anda memanggil Pages:AdvanceToNextPageAsync() pada halaman terakhir. |
| StandardReadExperienceThrottled | Kecepatan permintaan baca standar melebihi maksimum yang diizinkan untuk pengalaman tersebut. | Sebuah permintaan ke GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), atau pembacaan dari UpdateAsync() pada penyimpanan data standar melebihi batas tingkat pengalaman StandardRead. |
| StandardWriteExperienceThrottled | Kecepatan permintaan tulis standar melebihi maksimum yang diizinkan untuk pengalaman tersebut. | Sebuah permintaan ke SetAsync(), IncrementAsync(), atau penulisan dari UpdateAsync() pada penyimpanan data standar melebihi batas tingkat pengalaman StandardWrite. |
| StandardListExperienceThrottled | Kecepatan permintaan daftar standar melebihi maksimum yang diizinkan untuk pengalaman tersebut. | Sebuah permintaan ke ListKeysAsync(), ListVersionsAsync(), atau ListDataStoresAsync() pada penyimpanan data standar melebihi batas tingkat pengalaman StandardList. |
| StandardRemoveExperienceThrottled | Kecepatan permintaan hapus standar melebihi maksimum yang diizinkan untuk pengalaman tersebut. | Sebuah permintaan ke RemoveAsync() pada penyimpanan data standar melebihi batas tingkat pengalaman StandardRemove. |
| OrderedReadExperienceThrottled | Kecepatan permintaan baca terurut melebihi maksimum yang diizinkan untuk pengalaman tersebut. | Sebuah permintaan ke GetAsync() atau pembacaan dari UpdateAsync() pada penyimpanan data terurut melebihi batas tingkat pengalaman OrderedRead. |
| OrderedWriteExperienceThrottled | Kecepatan permintaan tulis terurut melebihi maksimum yang diizinkan untuk pengalaman tersebut. | Sebuah permintaan ke SetAsync(), IncrementAsync(), atau penulisan dari UpdateAsync() pada penyimpanan data terurut melebihi batas tingkat pengalaman OrderedWrite. |
| OrderedListExperienceThrottled | Kecepatan permintaan daftar terurut melebihi maksimum yang diizinkan untuk pengalaman tersebut. | Sebuah permintaan ke GetSortedAsync() pada penyimpanan data terurut melebihi batas tingkat pengalaman OrderedList. |
| OrderedRemoveExperienceThrottled | Kecepatan permintaan hapus terurut melebihi maksimum yang diizinkan untuk pengalaman tersebut. | Sebuah permintaan ke RemoveAsync() pada penyimpanan data terurut melebihi batas tingkat pengalaman OrderedRemove. |
Batasan
Model data memiliki batasan. Jika pengalaman melebihi batasan ini, layanan secara otomatis me-throttle penggunaan penyimpanan data pengalaman dan menyebabkan permintaan mendatang ditempatkan dalam salah satu antrean berikut:
- Set
- Set terurut
- Dapatkan
- Dapatkan terurut
Permintaan dalam antrean ditangani dalam urutan mereka diterima. Fungsi yang dipanggil terus beryield selama permintaannya masih dalam antrean. Jika kunci penyimpanan data itu sendiri dibatasi, permintaan ditempatkan dalam antrean tetapi sementara diabaikan.
Setiap antrean memiliki batas 30 permintaan. Ketika batas antrean tercapai, permintaan gagal dengan kode kesalahan dalam rentang 301-306, yang menunjukkan bahwa permintaan telah sepenuhnya dibatalkan.
Batasan akses
Penyimpanan data tunduk pada batasan tingkat pengalaman dan server. Batasan tingkat pengalaman skala dengan total pengguna simultan di seluruh pengalaman, sedangkan batasan tingkat server dapat dikonfigurasi dan dimaksudkan untuk digunakan sebagai alat oleh pembuat.
Batasan pengalaman
Setiap pengalaman diizinkan sejumlah permintaan penyimpanan data tertentu berdasarkan jenis penyimpanan data, jenis permintaan, dan jumlah pengguna simultan. Untuk setiap jenis penyimpanan data dan jenis permintaan, batasan dibagikan di antara semua fungsi yang terdaftar.
Perhatikan bahwa UpdateAsync() mengkonsumsi dari anggaran permintaan baca dan tulis. Panggilan tunggal akan mengurangi kedua batasan tersebut.
Penyimpanan data standar
| Jenis permintaan | Fungsi | Permintaan per menit |
|---|---|---|
| Baca | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 250 + concurrentUsers × 40 |
| Tulis | SetAsync() IncrementAsync() UpdateAsync() | 250 + concurrentUsers × 20 |
| Daftar | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 10 + concurrentUsers × 2 |
| Hapus | RemoveAsync() | 100 + concurrentUsers × 40 |
Penyimpanan data terurut
| Jenis permintaan | Fungsi | Permintaan per menit |
|---|---|---|
| Baca | GetAsync() UpdateAsync() | 250 + concurrentUsers × 40 |
| Tulis | SetAsync() IncrementAsync() UpdateAsync() | 250 + concurrentUsers × 20 |
| Daftar | GetSortedAsync() | 100 + concurrentUsers × 2 |
| Hapus | RemoveAsync() | 100 + concurrentUsers × 40 |
Batasan server
Setiap server memiliki batas kecepatan yang dapat dikonfigurasi untuk setiap jenis permintaan, berdasarkan jumlah pemain di server tersebut. Server menerima lonjakan anggaran permintaan tambahan sekali saat pertama kali dibuat. Gunakan GetRequestBudgetForRequestType() untuk mengonfirmasi jumlah permintaan penyimpanan data yang dapat dilakukan server saat ini pada waktu tertentu.
Batasan ini dapat dikonfigurasi oleh pembuat menggunakan SetRateLimitForRequestType() API. Menggunakan API ini, seorang pembuat dapat mengonfigurasi batasan kecepatan penyimpanan data mereka sendiri untuk setiap jenis permintaan.
Batasan default berikut ini berlaku jika API tidak dipanggil:
Penyimpanan data standar
| Jenis permintaan | DataStoreRequestType Enum | Fungsi | Permintaan per menit |
|---|---|---|---|
| Baca | StandardRead | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 60 + numPlayers × 40 |
| Tulis | StandardWrite | SetAsync() IncrementAsync() UpdateAsync() | 60 + numPlayers × 40 |
| Daftar | StandardList | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 5 + numPlayers × 2 |
| Hapus | StandardRemove | RemoveAsync() | 60 + numPlayers × 40 |
| Hapus versi (Deprecated) | RemoveVersionAsync | RemoveVersionAsync() | 5 + numPlayers × 2 |
Penyimpanan data terurut
| Jenis permintaan | DataStoreRequestType Enum | Fungsi | Permintaan per menit |
|---|---|---|---|
| Baca | OrderedRead | GetAsync() UpdateAsync() | 60 + numPlayers × 40 |
| Tulis | OrderedWrite | SetAsync() IncrementAsync() UpdateAsync() | 30 + numPlayers × 5 |
| Daftar | OrderedList | GetSortedAsync() | 5 + numPlayers × 2 |
| Hapus | OrderedRemove | RemoveAsync() | 30 + numPlayers × 5 |
Batasan data
Penyimpanan data membatasi seberapa banyak data yang dapat digunakan per entri.
Nama penyimpanan data, nama kunci, dan skop harus semuanya di bawah panjang karakter tertentu. Gunakan string.len() untuk memeriksa panjangnya.
Data (nilai kunci) juga disimpan sebagai string, terlepas dari tipe awalnya. Anda dapat memeriksa ukuran data dengan fungsi JSONEncode(), yang mengonversi data Luau menjadi tabel JSON yang diserialisasi.
| Komponen | Jumlah karakter maksimum |
|---|---|
| Nama penyimpanan data | 50 |
| Nama kunci | 50 |
| Skop | 50 |
| Data (nilai kunci) | 4.194.304 per kunci |
Batasan metadata
Batasan jumlah karakter dalam metadata yang ditentukan pengguna.
| Komponen | Jumlah karakter maksimum |
|---|---|
| Nama kunci | 50 |
| Nilai | 250 |
| Pasangan kunci-nilai | 300 |
Batasan throughput
Batasan throughput per kunci memastikan bahwa kinerja tetap optimal di server Roblox. Setiap batasan berlaku untuk setiap kunci tunggal di seluruh server dalam satu pengalaman dan segar kembali seiring waktu.
Roblox memeriksa penggunaan kuota yang terkait dengan kunci selama 60 detik terakhir. Jika penggunaan, termasuk permintaan saat ini, berada dalam batas throughput, permintaan disetujui. Jika penggunaan melebihi batas, permintaan ditolak.
| Jenis permintaan | Batas |
|---|---|
| Baca | 25 MB per menit |
| Tulis | 4 MB per menit |
Selain batasan throughput di atas, Roblox mengatur data ke dalam partisi berdasarkan skema internal. Akibatnya, ketika server backend menerima volume permintaan yang tinggi untuk penyimpanan data yang sama, ini dapat mengakibatkan throttling lebih lanjut. Terlepas dari penyebabnya, throttling muncul sebagai kesalahan DatastoreThrottled atau KeyThrottled, tergantung pada apakah batas throughput terlampaui untuk satu penyimpanan data atau kunci. Pesan kesalahan ini berlaku untuk baik penyimpanan data terurut maupun standar.
Batasan storage
Di masa depan, untuk memberikan pengalaman penyimpanan yang dapat diskalakan dan stabil, penyimpanan data akan menerapkan batas penyimpanan tingkat pengalaman pada penggunaan penyimpanan Anda.
Batasan ini akan menjadi jumlah dari batas dasar untuk masing-masing pengalaman Anda dan batas per pengguna yang berdasarkan jumlah pengguna seumur hidup dalam pengalaman Anda. Pengguna seumur hidup adalah pengguna yang telah bergabung dengan pengalaman Anda setidaknya sekali.
Batas penyimpanan akan dihitung menggunakan rumus Total batas penyimpanan versi terbaru = 100 MB + 1 MB * jumlah pengguna seumur hidup.
Kunci yang Anda hapus atau ganti, bahkan masih dapat diakses melalui API versi, tidak dihitung terhadap penggunaan storage pengalaman Anda. Namun, keseluruhan penyimpanan data yang dihapus melalui Open Cloud DeleteDataStore metode tetap dihitung terhadap penggunaan penyimpanan Anda selama 30 hari masa pemrosesan mereka, hingga mereka dihapus secara permanen.