Với sự ra mắt của cấu trúc dữ liệu MemoryStoreHashMap, Roblox đã loại bỏ tất cả các giới hạn hiện có cho các cấu trúc dữ liệu riêng lẻ và thay thế chúng bằng một giới hạn "throttling" toàn cầu duy nhất "theo phân vùng". Giới hạn chính xác dao động dựa trên các giá trị nội bộ và cách mà quá trình phân vùng tự động phân phối dữ liệu của bạn, nhưng nói chung cho phép sử dụng nhiều hơn trước khi bị throttling, đặc biệt là đối với các bản đồ băm. Giới hạn mới này cho phép sử dụng linh hoạt các kho nhớ trên tất cả các cấu trúc dữ liệu.
Phân vùng
API MemoryStores lưu trữ dữ liệu trên các phân vùng, là các phân chia của kho lưu trữ. Mỗi khi bạn ghi một mục vào kho nhớ, mục đó được lưu trữ trên chính một phân vùng. Các phân vùng hoàn toàn được quản lý bởi API MemoryStores; bạn không cần quản lý chúng.
Phân bổ phân vùng
Lưu trữ phân vùng khác nhau tùy theo cấu trúc dữ liệu mà một mục đang được lưu trữ. Đối với các bản đồ đã sắp xếp và hàng đợi, mỗi cấu trúc dữ liệu được gán một phân vùng duy nhất.
Ví dụ, hãy xem xét một trò chơi hội chợ với một bản đồ đã sắp xếp được gọi là PlayerScores và một hàng đợi được gọi là PlayerLine của những người chơi đang chờ đợi để chơi trò chơi:

Không giống như các bản đồ đã sắp xếp và hàng đợi, các bản đồ băm được cấp nhiều phân vùng, và dữ liệu được phân phối tự động qua các phân vùng này. Nếu bạn thêm một bản đồ băm được gọi là Prizes, các phân vùng có thể trông như thế này:

Lưu ý rằng bản đồ băm tồn tại trên tất cả các phân vùng, và mỗi phân vùng có một số tập con của các mục.
Giới hạn
Có một giới hạn theo phân vùng cho phép thông lượng cao hơn cho tất cả các cấu trúc dữ liệu. Nó cũng ưu tiên các bản đồ băm, vì chúng được phân phối qua tất cả các phân vùng.
Ví dụ, hãy xem xét một giới hạn theo phân vùng ví dụ là 50.000 yêu cầu mỗi phút (RPM):
- Trong trường hợp tốt nhất, một bản đồ đã sắp xếp và một hàng đợi bị giới hạn ở 50.000 RPM, vì mỗi cái nằm trong một phân vùng duy nhất.
- Các yêu cầu đến các bản đồ băm được phân chia đều qua các khóa mục, mà chính nó được phân bố trên các phân vùng, vì vậy các bản đồ băm có thể có một giới hạn hiệu quả cao hơn nhiều trước khi bị throttling, nhiều lần so với các cấu trúc dữ liệu khác giả định rằng các yêu cầu được phân chia qua nhiều khóa mục.
- Mặc dù các bản đồ băm có thể đạt được thông lượng cao hơn tổng thể bằng cách phân tán các yêu cầu qua các phân vùng, các khóa mục cá nhân vẫn bị giới hạn tần suất để duy trì ổn định hệ thống. Nếu phần lớn lưu lượng truy cập nhắm vào một khóa mục duy nhất, khóa đó có thể vẫn bị throttled.
- Để mở rộng hiệu quả và tránh những giới hạn theo khóa này, hãy thực hiện phân tán khóa. Phân phối đều các yêu cầu đọc và ghi qua nhiều khóa mục để giảm tắc nghẽn và duy trì hiệu suất mượt mà.

Vì lý do này, nếu bạn không cần sắp xếp hoặc chức năng "đến trước, phục vụ trước", các bản đồ băm thường là sự lựa chọn tốt nhất cho một cấu trúc dữ liệu kho nhớ. Để biết thêm thông tin, hãy xem các phương pháp tốt nhất.