Nhƣ vậy, với nút tìm kiếm là nút A và giá trị cần tìm kiếm là id=15, thì quá trình tìm kiếm trên vòng L-Chord cho ra kết quả là nút A là nút chịu trách nhiệm với giá trị khóa 15.
4.1.3 Tìm kiếm trong vòng V-Chord
Do vòng V-Chord là một vòng ảo, không hề có bất cứ liên kết gì giữa các nút trong vòng V-Chord nên quá trình tìm kiếm trong vòng V-Chord sẽ dựa vào các kết nối của vòng L-Chord. Thuật toán tìm kiếm trên vòng V-Chord sẽ đƣợc mô tả sau đây
n.V_find_successor(id)
n’ = n.L_find_successor(id)
return n’.V_find_mapped_node(id)
n. V_find_mapped_node(id)
for i = n.mapping_list.length downto 1 if (id <= n.mapping_list[i].id)
return n.mapping_list[i].node return nil;
Khi một nút n cần tìm kiếm một khóa có định danh id trên vòng V-Chord, Nút P sẽ sử dụng hàm V_find_successor(id). Trƣớc hết, nút n sẽ tìm trên vòng L-
Chord nút n’ chịu trách nhiệm với định danh id trên vòng L-Chord, quá trình này đƣợc thể hiện qua lời gọi hàm n’=L_find_successor(id). Sau đó, dựa vào danh sách ánh xạ trên nút n’, nút n sẽ tìm đƣợc nút chịu trách nhiệm quản lý định danh id trên vòng V-Chord, thuật toán tìm kiếm trên danh sách ánh xạ đƣợc thể hiện trong hàm V_find_mapped_node(id).
Xét ví dụ trên, Giả sử, nút A muốn tìm kiếm khóa có định danh id = 12. Nút A trƣớc hết tìm trên vòng L-Chord nút chịu trách nhiệm với định danh 12, sử dụng cơ chế lookup của Chord, nút A sẽ tìm đƣợc nút E là nút chịu trách nhiệm giá trị 12 trên vòng L-Chord. Sử dụng danh sách ánh xạ của nút E, ta sẽ tìm thấy nút D là nút đầu tiên có giá trị khóa lớn hơn hoặc bằng giá trị 12. Từ đó ta xác định nút D là nút chịu trách nhiệm quản lý định danh id=12.
Sau đây, chúng tôi xin đƣa ra một ví dụ mô tả quá trình tìm kiếm trên vòng V-Chord. Chúng tôi sử dụng ví dụ đã đề cập từ trƣớc.