2.2 Các mô-đun xử lý trong mơ hình
2.2.3 Mơ-đun xử tìm kiếm dữ liệu
Như nguyên lý tìm kiếm dữ liệu đã được xây dựng trên mơ hình, trong phần trình bày này chúng tơi sẽ trình bày kết hợp về ngun lý hoạt động của các mơ-đun tìm kiếm dữ liệu gồm có: mơ-đun xử lý tìm kiếm dữ liệu cục bộ, mơ-đun tìm kiếm dữ liệu trong vùng, và mơ- đun xử lý tìm kiếm dữ liệu trong vùng.
2.2.3.1 Mơ tả các mơ-đun tìm kiếm dữ liệu
Khi có u cầu truy vấn dữ liệu do Tầng ứng dụng gởi tới, Tầng xử lý cộng tác dữ
liệu có nhiệm vụ nhận yêu cầu truy vấn dữ liệu, xử lý và gởi trả lại cho Tầng ứng dụng.
Quá trình này được thực hiện thơng qua các mơ-đun xử lý tìm kiếm dữ liệu. Mơ-đun quản lý tìm kiếm dữ liệu quản lý việc tìm kiếm và truy vấn dữ liệu tại kho lưu trữ cục bộ cũng như việc tìm kiếm dữ liệu ở các MH trong hệ thống. Như trình bày ở phần trên mơ-đun
tìm kiếm dữ liệu được chia thành ba mơ-đun xử lý chính: Mơ-đun xử lý truy vấn dữ liệu
tại kho lưu trữ cục bộ (Local Query Process), Mô-đun xử lý truy vấn dữ liệu lưu trong vùng (InZone Query Process), Mô-đun xử lý truy vấn dữ liệu lưu ngoài vùng (OutZone
Query Process). Chi tiết xử lý của các mô-đun được mô tả ở lưu đồ Hình 2-6:
Hình 2-6. Lưu đồ xử lý quá trình tìm tiếm dữ liệu
a) Mô-đun xử lý truy vấn dữ liệu tại kho lưu trữ cục bộ (Local Cache Query Process ):
Khi có yêu cầu truy vấn dữ liệu từ người dùng, lớp xử lý này sẽ nhận yêu cầu truy vấn và thực hiện tìm kiếm dữ liệu từ kho lưu trữ cục bộ của thiết bị di động. Nếu quá trình tìm kiếm có kết quả thì lớp xử lý này sẽ trả thông tin về lớp Application Layer, ngược lại nó sẽ gởi yêu cầu cho lớp xử lý truy vấn dữ liệu trong vùng.
b) Mô-đun xử lý truy vấn dữ liệu lưu trong vùng (InZone Query Process):
Khi việc tìm kiếm dữ liệu tại Lớp xử lý truy vấn dữ liệu tại kho lưu trữ cục bộ
không thành cơng (hoặc khơng tìm thấy dữ liệu hoặc tìm thấy dữ liệu nhưng không đầy
đủ), yêu cầu truy vấn dữ liệu sẽ được chuyển sang Lớp xử lý truy vấn dữ liệu lưu trong
vùng để tiếp tục tìm kiếm dữ liệu. Lớp xử lý truy vấn dữ liệu lưu trong vùng có nhiệm vụ
quản lý các thơng tin về những MH trong vùng của MH nguồn (MH vùng là các MH liên Mus
nguồn
{Danh sách ID dữ liệu D} Yêu cầu truy vấn
Tìm kiếm dữ liệu tại
kho dữ liệu lưu cục bộ Kho dữ liệu lưu
Kiểm tra dữ liệu đủ chưa? Tổng hợp dữ liệu
và gởi kết quả Đủ dữ liệu
Xử lý tìm kiếm dữ liệu ở các MUs vùng Chưa đủ
dữ liệu InZoneDataTable
Kiểm tra dữ liệu đủ chưa? Đủ dữ liệu
Xử lý tìm kiếm dữ liệu ở các MUs ngồi vùng Kiểm tra dữ liệu
đủ chưa? Chưa đủ dữ liệu Đã đủ dữ liệu Chưa đủ dữ liệu Kết quả truy vấn BS OutZoneDataTable Dữ liệu trả về từ BS Xử lý tìm kiếm dữ liệu ở BS
lạc với MH nguồn thông qua nhiều bước nhảy) và thơng tin dữ liệu lưu trữ tại mỗi MH
đó thơng qua bảng InZoneDataTable. Mục tiêu của bảng InZoneDataTable. là cho biết
những MH nào trong vùng hiện đang chứa dữ liệu mà MH nguồn yêu cầu. Do vậy chúng
tôi xây dựng cấu trúc của bảng InZoneDataTable. của mỗi MH gồm có {id,
listMH_InZone}, trong đó id là định danh của đơn vị dữ liệu, listMH_InZone là danh sách
các MH vùng đang chứa hạng mục dữ liệu này. Thông qua thông tin của bảng
InZoneDataTable., MH nguồn sẽ gởi yêu cầu đến MH vùng để yêu cầu dữ liệu một cách
chính xác và đầy đủ, tránh tình trạng tìm kiếm dữ liệu bằng cách loang mù đến toàn bộ MH trong vùng. Điều này nhằm đạt được tỉ lệ tìm thấy dữ liệu cao và giảm bớt năng lượng xử lý của MH nguồn.
Ngoài ra khi nhận các hạng mục dữ liệu được gởi về từ các MH vùng, lớp xử lý này cũng có nhiệm vụ tổng hợp và kiểm tra xem dữ liệu trả đã đầy đủ so với yêu cầu của truy vấn ban đầu chưa, nếu dữ liệu trả về đã đầy đủ thì quá trình truy vấn được dừng, ngược lại yêu cầu truy vấn cho các hạng mục dữ liệu còn thiếu tiếp tục được chuyển tới Lớp xử lý truy vấn dữ liệu lưu ngoài vùng để được xử lý.
c) Mô-đun xử lý truy vấn dữ liệu lưu ngoài vùng (OutZone Query Process):
Với những hạng mục dữ liệu chưa được tìm thấy tại Lớp xử lý truy vấn dữ liệu trong vùng, yêu cầu truy vấn cho các hạng mục dữ liệu này sẽ tiếp tục chuyển đến cho
Lớp xử lý truy vấn dữ liệu ngoài vùng để xử lý. Trong lớp xử lý truy vấn dữ liệu lưu ngồi
vùng chúng tơi sử dụng bảng thông tin OutZoneDataTable để quản lý thông tin và dữ liệu của các MH ngoài vùng của MH nguồn (MH ngoài vùng là các MH liên lạc với MH nguồn thông qua k bước nhảy, k > 1 bước nhảy). Cấu trúc của bảng OutZoneDataTable
được xây dựng bao gồm {id, listMH_OutZone}, trong đó id là định danh của đơn vị dữ
liệu, listMH_OutZone là danh sách các MH ngoài vùng của MH nguồn đang chứa dữ liệu này. Dựa vào bảng thông tin OutZoneDataTable, MH nguồn sẽ gởi yêu cầu chính xác đến các các MH ngồi vùng để tìm kiếm dữ liệu cịn thiếu. Cách thức hoạt động này nhằm đem lại hiệu quả cao về tỉ lệ tìm thấy dữ liệu, cũng như giảm bớt số lượng thơng điệp (message) phát ra tại MH trong q trình tìm kiếm dữ liệu.
Khi các hạng mục dữ liệu yêu cầu được trả về, lớp xử lý truy vấn dữ liệu ngồi vùng cũng có nhiệm vụ tổng hợp để gởi cho MH nguồn. Cuối cùng MH nguồn kiểm tra và gởi yêu cầu đến BS để yêu cầu truy vấn các dữ liệu còn thiếu.
2.2.3.2 Chi tiết lưu đồ và thuật toán xử lý
a) Lưu đồ xử lý cho lớp Local Query Process
Quá trình xử lý lý tìm kiếm dữ liệu tại lớp Local Query Process được thể hiện ở Hình
2-7 và mã giã xử lý ở Bảng 2-1. Khi nhận được một yêu cầu truy vấn dữ liệu, lớp Local
Query Process của MH nguồn tiến hành kiểm tra kho lưu trữ cục bộ của nó để tìm kiếm dữ
liệu u cầu. Nếu khơng tìm thấy hoặc tìm khơng đủ dữ liệu u cầu, MH nguồn tiến hành tìm kiếm thơng tin dữ liệu trong bảng InZoneDataTable. và gửi thông điệp cho các MH vùng của nó để yêu cầu dữ liệu con thiếu. Dựa vào thông tin bảng InZoneDataTable, MH nguồn xác định được danh sách các hạng mục dữ liệu yêu cầu đang được giữ bởi các MH vùng. Sau xử lý này,các hạng mục dữ liệu đang được giữ bởi các MH vùng sẽ được lưu vào bảng thông tin ListZoneItem, đồng thời MH nguồn gửi kèm thông điệp “REQUEST” đến các MH vùng đang chứa dữ liệu này để yêu cầu dữ liệu.
Bảng 2-1. Mã giả thuật xử lý của mô-đun Local Query Process
MH nguồn kiểm tra trong kho lưu trữ cục bộ có đủ danh sách hạng mục dữ liệu cần hay không?
1. Nếu có và đầy đủ, báo kết quả cho người dùng. 2. Ngược lại:
2.1 Xử lý tìm dữ liệu từ các MH vùng
2.1.1. Kiểm tra bảng InZoneDataTable., xác định các đơn vị dữ liệu có thể
tìm thấy tại các MH vùng, lưu thông tin này vào bảng ListZoneItem.
2.1.2. Gửi gói tin “REQUEST” chứa thơng tin ListZoneItem đến các MH trong vùng cộng tác để yêu cầu dữ liệu.
2.2. Xử lý tìm dữ liệu từ các MH ngoài vùng
2.2.1. Kiểm tra bảng OutZoneDataTable, xác định danh sách các hạng mục
dữ liệu có thể tìm thấy từ các MH ngồi vùng, lưu thơng tin này vào bảng ListOutZoneItem
2.2.2. Lưu thông tin các hạng mục dữ liệu khơng tìm thấy thơng tin ở bước 2.2.1 vào bảng ListBSItem.
2.2.3Gửi gói tin “REQUEST_OUT” chứa thơng tin ListOutZoneItem, gửi đến các MH ngoài vùng cộng tác
2.3. Xử lý tìm dữ liệu từ BS: Gửi gói tin “REQUEST_BS” chứa thông tin ListBSItem đến BS
Những hạng mục dữ liệu nằm trong phiên yêu cầu và khơng được tìm thấy trong
InZoneDataTable. sẽ được lưu vào bảng thông tin ListUnknowItem. Những hạng mục dữ
liệu chứa trong ListUnknowItem sẽ được MH nguồn tiếp tục tìm kiếm trong bảng
OutZoneDataTable, dựa vào bảng thông tin này MH nguồn xác định được danh sách các
nhận vào bảng thông tin ListOutZoneItem, đồng thời MH nguồnsẽ gửi kèm thơng điệp “REQUEST_OUT” đến các MH ngồi vùng đang chứa các dữ liệu này. Những hạng mục
dữ liệu cịn lại và khơng được tìm thấy trong bảng OutZoneDataTable sẽ được ghi nhận
lại trong bảng thông tin ListBSItem.Những hạng mục dữ liệu chứa trong ListBSItem sẽ được MH nguồn chuyển yêu cầu tìm kiếm lên BS kèm thông điệp “REQUEST_BS”, BS xử lý yêu cầu và trả dữ liệu về cho MH nguồn. Thông tin của các bảng ListZoneItem, ListUnknowItem, ListOutZoneItem, và ListBSItem là cơ sở để sau này MH nguồn tính tốn và tổng hợp dữ liệu trong quá trình truy vấn dữ liệu.
Hình 2-7. Lưu đồ xử lý quá trình tìm kiếm dữ liệu tại MH nguồn
b) Thuật tốn xử lý lớp tại mơ-đun InZone Query Process
Khi nhận được các yêu cầu truy vấn từ MH nguồn, mô-đun InZone Query Process điều phối việc truy vấn và xử lý yêu cầu truy vấn dữ liệu của MH nguồn. Chi tiết xử lý
{Tập ID dữ liệu D}
Tìm kiếm trong kho dữ liệu lưu
Kho dữ liệu lưu (Local Cache) Có đủ dữ liệu? Trả dữ liệu về cho MH nguồn có Tìm thơng tin MHs vùng chứa dữ liệu khơng Thơng tin bảng InZoneDataTable Có thơng tin MHs vùng? Lưu thông tin vào bảng
ListZoneItem
Lưu thông tin vào bảng ListUnknownItem có Khơng Hoặc chưa đủ MHs vùng Gởi u cầu đến các MHs
vùng REQUEST Thơng tin bảng OutZoneDataTable Tìm thơng tin MHs ngồi vùng Có thơng tin MHs ngồi vùng ListZoneItem ListUnknownItem
Lưu thơng tin vào
ListOutZoneItem có
Lưu thơng tin vào ListBSItem Khơng hoặc Chưa đủ MHs ngồi vùng REQUEST_OUT ListOutZoneItem BS REQUEST_BS ListBSItem MH nguồn Dữ liệu
u cầu truy vấn dữ liệu
Gởi yêu cầu đến các MHs ngoài vùng
Gởi yêu cầu đến BS
Xử lý tổng hợp dữ liệu RE_REQUEST RE_REQUEST_OUT RE_REQUEST_BS Dữ liệu
của mô-đun này này được chia thành hai thuật toán xử lý tương ứng với các giai đoạn xử lý tại MH nguồn và MH chứa dữ liệu (đích).
Khi MH đích nhận được gói tin “REQUEST” yêu cầu dữ liệu từ MH nguồn,
MH đích chứa dữ liệu sẽ tìm kiếm trong kho lưu trữ cục bộ của chính nó và gửi trực tiếp kết quả về cho MH nguồn trong gói tin “RE_REQUEST”. Nếu dữ liệu được tìm thấy gói tin “RE_REQUEST” sẽ chứa thông tin dữ liệu, ngược lại nếu khơng có dữ liệu gói tin “RE_REQUEST” sẽ chứa thơng tin thơng báo “khơng có dữ liệu”.
Tại MH nguồn, sau khi nhận được gói tin “RE_REQUEST” chứa thơng tin các
hạng mục dữ liệu từ các MH đích chứa dữ liệu trả về, MH nguồn sẽ chọn các MH gửi dữ liệu về đầu tiên để xử lý lấy kết quả trả về người dùng. Nếu khơng có MH đích nào gửi trả dữ liệu về hoặc dữ liệu yêu cầu chưa được tìm thấy đầy đủ, quá trình tìm kiếm sẽ
được chuyển đến mô-đun OutZone Query Process để thực hiện tìm kiếm ở các MH
ngoài vùng. Mã giả của việc xử lý thông điệp REQUEST tại MH đích và thơng điệp RE_REQUEST được trình bày ở Bảng 2-2.
Bảng 2-2. Mã giả xử lý thơng điệp REQUEST tại tại MH đích và thơng điệp RE_REQUEST tại MH nguồn.
/* Khi MH đích nhận được gói tin “REQUEST” từ MH nguồn */
1. Nếu dữ liệu tồn tại trong LocalData của chính nó Gửi gói tin “RE_REQUEST” chứa dữ liệu về MH nguồn
2. Ngược lại: Gửi gói tin “RE_REQUEST” chứa thơng báo “khơng có dữ liệu” về MH nguồn.
/* Khi MH nguồn nhận được gói tin “RE_REQUEST” từ MH đích */ 1. Nếu tồn tại mộtgói tin có mang dữ liệu
1.1. Xử lý tổng hợp và kiểm tra tính đầy đủ của dữ liệu. 1.2. Kiểm tra
1.2.1. Nếu dữ liệu yêu cầu đủ:
- Thực hiện gọi Thuật toán xử lý lưu trữ dữ liệu để xử lý
lưu trữ dữ liệu cần
- Hiển thị thông tin dữ liệu cho người dùng và
1.2.2. Ngược lại chuyển sang bước 2
Ngược lại:Chuyển u cầu tìm kiếm đến mơ-đun OutZoneQuery Process.
c) Thuật toán xử lý lớp OutZone Query Process
Khi nhận được các yêu cầu truy vấn từ MH nguồn, mô-đun OutZone Query Process điều phối việc truy vấn và xử lý yêu cầu truy vấn dữ liệu của MH nguồn. Giai đoạn này cũng được chia làm hai thuật toán xử lý tương ứng với các giai đoạn xử lý tại MH nguồn và MHchứa dữ liệu (đích).
Tại MH đích, sau khi nhận được gói tin “REQUEST_OUT” gởi từ MH nguồn, MH đích sẽ tìm kiếm trong kho lưu trữ cục bộ (local cache) của chính nó. Nếu MH đích tìm được dữ liệu tại LC thì sẽ gởi trả về cho MH nguồn thơng qua gói tin “REQUEST_OUT”. Ngược lại, nếu MH đích khơng tìm được dữ liệu MH nguồn yêu cầu cũng sẽ gởi trả lại thông điệp “REQUEST_OUT” chứa thơng báo “khơng có dữ liệu”.
Tại MH nguồn, sau khi nhận được gói tin “RE_REQUEST_OUT” hồi đáp từ
các MH đích gửi về, MH nguồn sẽ lựa chọn các MH gửi dữ liệu về đầu tiên để xử lý lấy kết quả trả về người dùng. Nếu khơng có MH đích nào gửi trả dữ liệu yêu cầu hoặc dữ liệu yêu cầu tổng hợp từ MH đích gởi về chưa đủ, MH nguồn sẽ tiếp tục gởi yêu cầu đến BS để yêu cầu dữ liệu thông qua thông điệp REQUEST_BS. Tại BS khi nhận thông điệp này sẽ tiến hành xử lý, gửi trả dữ liệu về cho MH nguồn và kết thúc một qui trình khám phá, tìm kiếm dữ liệu. Mã giả của xử lý nhận gói tin “REQUEST_OUT” tại MH đích và gói tin “RE_REQUEST_OUT” tại MH nguồn được trình bày trong Bảng 2-3.
Bảng 2-3 Mã giả xử lý nhận gói tin “REQUEST_OUT” ở MH đích và gói tin
“RE_REQUEST_OUT” tại MH nguồn
/* Khi MH đích nhận được gói tin “REQUEST_OUT” từ MH nguồn*/
1. Nếu dữ liệu tồn tại trong LocalData của chính nó thì gửi gói tin “RE_REQUEST_OUT” chứa dữ liệu về cho MH nguồn
2. Ngược lại: Gửi gói tin “RE_REQUEST_OUT” chứa thơng báo “khơng có dữ liệu” về MH nguồn.
/* Khi MH nguồn nhận được gói tin “RE_REQUEST_OUT” từ MH đích */ 1. Nếu tồn tại mộtgói tin có mang dữ liệu
1.1. Xử lý tổng hợp và kiểm tra tính đầy đủ của dữ liệu. 1.2. Kiểm tra
1.2.1. Nếu dữ liệu yêu cầu đủ:
- Thực hiện gọi Thuật toán xử lý lưu trữ dữ liệu để xử lý
lưu trữ dữ liệu cần
- Hiển thị thông tin dữ liệu cho người dùng
1.2.2. Ngược lại chuyển sang bước 2