Chìa khóa cho cả hai vấn đề là để quan sát mà mỗi tuple là một định kiểu cấu trúc dữ liệu.
Splitting không gian tuple vào subspaces, từng có các bộ là cùng loại
đơn giản hoá lập trình và làm cho tối ưu nhất có thể. Ví dụ,
bởi vì các bộ được đánh máy, nó trở nên có thể xác định tại thời gian biên dịch mà
không gian con một cuộc gọi đến một viết, đọc, hoặc đi vào hoạt động. Phân vùng này có nghĩa là
chỉ có một phần nhỏ của tập hợp các trường hợp tuple đã được tìm kiếm.
Ngoài ra, mỗi không gian con có thể được tổ chức như một bảng băm sử dụng (một phần) của
trường tuple thứ i như là chìa khóa băm. Nhớ lại rằng mỗi trường trong một dụ tuple là một
tài liệu tham khảo marshaled đến một đối tượng. JavaSpaces không quy định như thế nào marshaling
nên được thực hiện. Vì vậy, một thực hiện có thể quyết định sắp xếp một tài liệu tham khảo
trong một cách mà vài byte đầu tiên được sử dụng như một định danh của các loại của các
đối tượng đang được marshaled. Một cuộc gọi đến một viết, đọc, hoặc đưa hoạt động sau đó có thể
được thực hiện bằng cách tính toán hàm băm của các lĩnh vực thứ i để tìm ra vị trí trong
bảng nơi dụ tuple thuộc. Biết không gian con và bảng cực
tion loại bỏ tất cả các tìm kiếm. Tất nhiên, nếu trường thứ i của một đọc hoặc mất hoạt động
là NULL, băm là không thể, do đó, một tìm kiếm đầy đủ các không gian con là nhìn chung
đồng minh cần thiết. Bằng cách cẩn thận lựa chọn lĩnh vực này để băm vào, tuy nhiên, có thể tìm kiếm
thường được tránh.
Tối ưu bổ sung cũng được sử dụng. Ví dụ, chương trình băm
mô tả ở trên phân phối các bản ghi của một không gian con cho vào thùng để hạn chế
tìm kiếm để một thùng. Có thể đặt thùng khác nhau trên ma- khác nhau
chines, cả hai để lan truyền tải rộng rãi hơn và tận dụng lợi thế của địa phương. Nếu
hàm băm là định danh loại modulo số lượng máy móc, các
số thùng quy mô tuyến tính với kích thước hệ thống [xem cũng Bjornson (1993)].
đang được dịch, vui lòng đợi..
