Hình 4.1 mơ tả ví dụ minh họa tồn bộ quá trình thu thập dữ liệu trong khoảng thời gian và dữ liệu tổng hợp. Từng pha trong quá trình tổng hợp dữ liệu sẽ được trình bày như sau:
Nạve: Trong một khoảng thời gian nhất định, mỗi mẫu mới được gửi tới thì pha này sẽ được kiểm tra xem giá trị của mẫu cĩ khác với một trong những mẫu trước đĩ thì mẫu mới sẽ được lưu trữ tại bộ nhớ cục bộ của cảm biến, ngược lại nếu trùng thì mẫu mới này sẽ bị xĩa.
Level1: Mỗi cảm biến sẽ so sánh bản ghi đọc được từ cảm biến khi nhận tại một số nhãn thời gian liên tục, tính tốn sự khác biệt giữa các giá trị đọc được với một ngưỡng được xác định trước. Các bản ghi đọc được từ cảm biến thỏa mãn với một số điều kiện tổng hợp thì sẽ được kết hợp để cĩ được giá trị tốt nhất gần đúng.
Level2: Pha này được thực hiện trong trường hợp kho lưu trữ tại nút cảm biến tràn mặc dù dữ liệu được nén bởi pha Level1, cơ chế thực hiện giảm tiếp
tục được xây dựng tương tự như pha Level1.
Mặc dù các kỹ thuật tạo dữ liệu xấp xỉ gây ra một số mất mát thơng tin, nhưng khơng đáng kể nên kết quả của dữ liệu vẫn phù hợp sử dụng trong ứng dụng. Giá trị của dữ liệu xấp xỉ khá gần với giá trị của dữ liệu thơ, do đĩ khơng cĩ nhiều ảnh hưởng lớn đến kết quả truy vấn sau này. Quan trọng hơn, phương pháp này hứa hẹn tiết kiệm được rất nhiều khơng gian lưu trữ so với cách lưu trữ tất cả các bản ghi đọc từ cảm biến. Chi tiết của từng pha được trình bày trong các phần sau đây.
4.2 Loại bỏ các bản ghi trùng lặp
Dữ liệu đọc từ cảm biến trong một khoảng thời gian liên tục, cĩ thể cĩ giá trị khơng đổi. Lưu trữ tất cả các bản ghi này mà khơng cĩ bất kỳ thủ tục tiền xử lý nào sẽ lưu một khối lượng dữ liệu khổng lồ. Đặc biệt, trong nhiều ứng dụng dữ liệu gửi đến thay đổi rất ít về giá trị trong một khoảng thời gian. Ví dụ, nhiệt độ cĩ thể khơng thay đổi trong nhiều giờ hoặc thay đổi rất ít và khơng cĩ sự khác biệt lớn so với các dự báo thời tiết trước đĩ, chính vì vậy việc sao chép dữ liệu và các tính tốn khơng cần thiết cĩ thể bỏ qua.
Trong pha Nạve, khi một mẫu dữ liệu mới được gửi tới cĩ giá trị k, thì k được so sánh với giá trị lấy mẫu ngay trước khi đĩ là vbf.
- Nếu k # bbf, thì lưu dữ liệu mới vào lưu trữ cục bộ tại nút cảm biến bf. - Nếu k = bbf, thì loại bỏ giá trị mới và chờ lần đọc tiếp theo.
Hình 4.2 minh họa cách xử lý dữ liệu trước khi lưu vào lưu trữ cục bộ của mạng cảm biến ở pha Nạve:
- Tại mỗi thời điểm mẫu dữ liệu được đọc từ ba cảm biến s1, s2, s3. Tại nhãn thời gian t1 cả ba mẫu dữ liệu đọc được đều được lưu lại. Tại nhãn thời gian t2 giá trị đọc được bởi cảm biến s1 khơng thay đổi nên nĩ bị bỏ qua, tuy nhiên mẫu do s2 đọc được lại khác nên nĩ được lưu lại.
- Đối với cảm biến s3 giá trị mẫu dữ liệu đọc được khơng thay đổi trong suốt khoảng thời gian [t1, t3] nên nĩ chỉ được lưu trữ một lần duy nhất.
Hình 4.2 Ví dụ giảm dữ liệu của pha Nạve
Phương pháp này khá sơ khai, dữ liệu đơn giản được lưu trữ khi các giá trị liên tiếp khác nhau, nhưng chắc chắn đảm bảo khơng mất dữ liệu thu thập. Giả sử ta cĩ:
Ntotal : Tổng số mẫu,
Sv(i) : Mẫu dữ liệu nhận được từ cảm biến tại nhãn thời gian i, Dcount : Đếm số lần trùng lặp,
Dtotal : Số các bản ghi trùng lặp, được xác định bởi biểu thức 4.1.
𝐷𝑡𝑜𝑡𝑎𝑙 = ∑ 𝐷𝑐𝑜𝑢𝑛𝑡 𝑁𝑡𝑜𝑡𝑎𝑙
𝑖=0
, Nếu Sv(i) = Sv(i-1): Dcount = 1, Ngược lại: Dcount = 0
(4.1)
Từ đĩ, số lượng bản ghi Srec cĩ thể dễ dàng được suy ra (biểu thức 4.2) và tỷ lệ dữ liệu bị loại bỏ R(%) được tính bởi cơng thức 4.3.
𝑆𝑟𝑒𝑐 = 𝑁𝑡𝑜𝑡𝑎𝑙− 𝐷𝑡𝑜𝑡𝑎𝑙 , (0 ≤ 𝐷𝑡𝑜𝑡𝑎𝑙 ≤ 𝑁𝑡𝑜𝑡𝑎𝑙) (4.2) R(%) = 𝐷𝑡𝑜𝑡𝑎𝑙
𝑁𝑡𝑜𝑡𝑎𝑙𝑋100 (4.3)
Pha này cĩ thể bị ảnh hưởng bởi các đặc điểm của ứng dụng, đặc biệt nếu tỷ lệ lấy mẫu là rất nhỏ và dữ liệu biến đổi thường xuyên thì dữ liệu tại mỗi nhãn thời gian sẽ khác nhau. Ngược lại, xác suất các bản ghi trùng lặp cao thì phương pháp tổng hợp dữ liệu Nạve đơn giảm mà rất hữu ích. Thuật tốn DuplicateReadingComparison() cho
pha Nạve được trình bày dưới dạng pseudo code trong Thuật tốn 4.1.
Thuật tốn 4.1: Thủ tục so sánh các bản ghi nhân đơi
Algorithm: DuplicateReadingComparison() Input: kcurrent // Bản ghi cảm được truyền tới
Output: bf // Bộ đệm lưu trữ tạm thời để so sánh với các giá trị khác Begin
while (bộ nhớ hoặc nguồn pin vẫn cịn) do
vbf kprevious // Giá trị của bản ghi được đọc trước từ bộ đệm bf
If (k # vbf) then
bf add kcurrent // Thêm kcurrent vào bộ đệm else
Delete kcurrent // Xĩa kcurrent end while
End
4.3 Khoảng cách giá trị dựa trên dữ liệu giảm
Như ta biết, dữ liệu thu được cĩ thể cĩ cùng một giá trị hoặc tương đối giống nhau trong một khoảng thời gian cụ thể. Ở đây việc nén các bản ghi đọc được từ cảm biến chính là thực hiện kết hợp hai hoặc nhiều bản ghi tạo ra được giá trị trung bình. Bằng cách này ta cĩ thể đảm bảo dữ liệu khơng bị làm suy giảm và cũng khơng phải phân tán dữ liệu. Ngồi ra, khả năng mở rộng lưu trữ của hệ thống tăng lên mà khơng cần sử dụng phương pháp xấp xỉ dữ liệu. Tuy nhiên, chiến lược này phần nào làm giảm tính chính xác của dữ liệu. Sử dụng giá trị trung bình khơng cịn được tin cậy vì sự khác biệt quá lớn giữa các mẫu dữ liệu. Do đĩ, cách tiếp cận này khơng thích hợp cho một số ứng dụng. Ta thấy cĩ sự đánh đổi giữa độ chính xác của dữ liệu và hiệu quả trong việc sử dụng khả năng lưu trữ của các nút cảm biến.
Chính vì thế nghiên cứu giới thiệu một chiến lược tổng hợp dữ liệu dựa trên việc tính tốn khoảng cách giữa các mẫu dữ liệu.
khác biệt của hai bản ghi dữ liệu đầu tiên được lấy mẫu tại mỗi đầu của thời gian lấy mẫu (xem biểu thức 4.4).
- Tham số giá trị tiêu chuẩn Sval: Khi bắt đầu của quá trình lấy mẫu thì được khởi tạo bằng khơng (Sval = 0). Tuy nhiên, trong một khoảng thời gian khơng xác định trước thì dữ liệu đọc được sẽ bị thu hồi để thực hiện tổng hợp. Các mẫu dữ liệu được tổng hợp cĩ thể khơng đồng đều trong khoảng thời gian liên tiếp. Khoảng cách này phụ thuộc vào các thơng số δdist và Sval.
- Sau khi xác định giá trị của các tham số trên, dữ liệu cảm biến được kiểm tra để quyết định xem nĩ cĩ thuộc cùng bộ giá trị trước đĩ khơng. Nĩ sẽ được thêm vào cùng một tập nếu sự khác biệt giữa giá trị hiện tại và giá trị Sval đáp ứng được δdist hiện tại. Quá trình này được lặp đi lặp lại cho đến khi một nhãn thời gian mà tại đĩ mẫu dữ liệu vượt ra ngồi ranh giới khoảng cách cho phép. Tại một thời điểm, tất cả các mẫu dữ liệu cùng một bộ giá trị trong một khoảng thời gian cụ thể sẽ được kết hợp và cho giá trị xấp xỉ tốt nhất (biểu thức 4.5).
Xác định δdist thơng qua biểu thức 4.4:
δdist = Rval(i) - Rval (i- 1), nếu δdist = 0 và sval = 0 (4.4) Mẫu dữ liệu nhận được từ cảm biến ā được lưu trữ trong bộ nhớ được xác định bởi biểu thức 4.5:
a = 1
𝑗 ∑ Rval(i), nếu 𝑗
𝑖=1
δdist > Rval(i) − Sval và Rval(i) − Sval > 0
ℎ𝑜ặ𝑐 δdist < Rval(i) − Sval và Rval(i) − Sval < 0 (4.5)
Tỉ lệ dữ liệu giảm Rrate được tính tốn bằng biểu thức 4.6:
Rrate(%) = 1 − Rtotal
Ntotal𝑥 100 (4.6) Trong đĩ:
δdist : Ngưỡng khoảng cách Sval : Giá trị tiêu chuẩn
Rval(i): Giá trị của mẫu dữ liệu nhận được từ cảm biến theo nhãn thời gian thứ i j : Tổng số mẫu dữ liệu nhận được từ cảm biến trong nhĩm δdist
Rtotal: Số bản ghi được kết hợp
Xét một ví dụ: Giả sử một tập dữ liệu được đọc liên tục là S = {3, 4, 3, 5, 4, 2, 4, 3, 5} như Hình 4.3.
- Lần đọc đầu tiên cho kết quả là 3 được chọn là giá trị tiêu chuẩn (sval = 3) - Tại nhãn thời gian thứ 2, giá trị là 4. Đặt ngưỡng khoảng cách δdist là 1 (là sự chênh lệch giá trị của lần đọc thứ 2 và lần đọc đầu tiên δdist = 4-3 = 1)
Áp dụng biểu thức 4.4 và 4.5 chúng ta xác định ba lần đọc đầu tiên {3, 4, 3} thuộc về cùng một bộ do sự khác nhau giữa chúng thỏa mãn 0<Sval<= 1.
- Với nhãn thời gian 4: Sự khác nhau giữa giá trị mẫu 5 > Sval (Sval = 3), quy tắc trên khơng cịn đúng nữa. Vì vậy, với khoảng thời gian đầu tiên, bản ghi cảm biến được quyết định là 3.3 bằng cách lấy giá trị trung bình của bộ {3, 4, 3}.
Làm tương tự với phần cịn lại của mẫu, kết quả là từ chín bản ghi cảm biến, nút cảm biến bây giờ chỉ phải phân bổ lưu trữ cho bốn giá trị dữ liệu và khoảng 56% khơng gian lưu trữ được giảm, tiết kiệm nhiều khơng gian hơn so với việc tối ưu dữ liệu ở pha Nạve.
Hình 4.3 Ví dụ về sơ đồ giảm dữ liệu dựa trên giá trị khoảng cách
Chiến lược này gây mất mát thơng tin việc duy trì các giá trị xấp xỉ thay vì những bản gốc. Người dùng sẽ nhận được kết quả truy vấn xấp xỉ gần đúng theo đĩ. Tuy nhiên, việc sử dụng khoảng cách ngưỡng tối thiểu sẽ cho kết quả khá gần với dữ liệu thơ ban đầu. Thuật tốn 4.2 trình bày thủ tục ValueDistanceReduction() cho pha Level1.
Mặc dù cơng nghệ mạng cảm biến phát triển nhanh chĩng hơn trước nhưng khả năng lưu trữ trong mạng cảm biến khơng tốt hơn so với cơ sở dữ liệu truyền thống. Vì vậy để lưu trữ các dữ liệu thu thập được trong một khơng gian với dung lượng lưu trữ
tại mỗi nút cảm biến tiếp tục lưu trữ và duy trì dữ liệu cảm biến theo thời gian thực thì lưu trữ cục bộ tại mỗi nút sẽ bị tràn nhanh chĩng. Để giải quyết vấn đề này, cảm biến cĩ thể loại bỏ dữ liệu lịch sử lâu đời nhất, giúp tiết kiệm rất nhiều khơng gian lưu trữ. Dữ liệu cũ cĩ thể được gửi đến các trạm cơ sở hoặc bị loại bỏ khỏi bộ nhớ của cảm biến mãi mãi. Nếu gửi dữ liệu cũ đến trạm cơ sở, chi phí lớn về truyền thơng là bắt buộc, nhưng nếu loại bỏ chúng mà khơng thực hiện bất kỳ sao lưu gì thì truy vấn liên quan đến thơng tin cũ sẽ khơng thể thực hiện được do dữ liệu cũ đã bị mất. Mặc dù dựa trên việc sao lưu trong hệ thống cơ sở dữ liệu truyền thống là dễ dàng, nhưng đĩ lại là khĩ khăn lớn đối với mạng cảm biến mà sự can thiệp của con người là rất khĩ.
Thuật tốn 4.2 Ước khoảng giá trị trên một khoảng dữ liệu dựa vào các thơng số về khoảng cách
Algorithm: ValueDistanceReduction
Input: k // Bản ghi yêu cầu cần lưu trữ từ nút
Ouput: avg // Giá trị trung bình sau pha giảm dữ liệu BEGIN
while (tập các mẫu nằm trong phạm vi của giá trị ước khoảng) do If (k được gửi đến yêu cầu để lưu trữ) then
If (Sval =null) then // Sval giá trị tiêu chuẩn để so sánh
Sval k
bfcurrent add k // Giá trị hiện tại trong bộ đệm else if (vdist = null) then
vdist k - bfprevious // Xác định giá trị khoảng cách tiêu chuẩn
bfcurrent add k
else if (vdist > 0 or k - Sval > 0) then // vdist nhận giá trị âm
if (vdisst >= k – Sval ) then bfcurrent add k end if
else if (vdist < 0 or k - Sval < 0) then // vdist nhận giá trị dương
if (vdisst <= k – Sval ) then bfcurrent add k end if
else
sumbf tổng các giá trị trong bf n số bản ghi trong bf avg sumbf/n endif endif end while return avg END
Cách tiếp cận khơng loại bỏ dữ liệu lịch sử và cũng khơng áp dụng dựa trên ổ đĩa sao lưu, nếu lưu trữ tràn xảy ra ngay cả với dữ liệu đã tổng hợp từ pha Level1 thì sẽ tiếp tục thực hiện chiến lược Level2 để nén dữ liệu trong lưu trữ một lần nữa bằng cách sử dụng các thơng số đã giải thích ở trên. Phương pháp này là khá linh hoạt và luơn bảo đảm hoạt động tốt với các mẫu thay đổi liên tục, mặc dù tính chính xác của dữ liệu bị giảm.
Như minh họa trong Hình 4.4, dung lượng lưu trữ được tiết kiệm nhờ các thao tác xử lý tại pha Level1 và pha Level2, nên chi phí cho lưu trữ cĩ thể được khắc phục. Ngồi ra, số lượng dữ liệu liên quan trong xử lý truy vấn sẽ nhỏ hơn so với thực hiện tìm kiếm trên dữ liệu thơ. Vì vậy kích thước gĩi dữ liệu truyền trong mạng cảm biến cũng trở nên nhỏ hơn, đồng nghĩa với nguồn năng lượng khan hiếm trong mạng cảm biến sẽ khơng bị ảnh hưởng một cách đáng kể.
Chương 5
XỬ LÝ TRUY VẤN DỰA TRÊN PROXY
Chương này sẽ tập trung giải quyết vấn đề liên quan xử lý truy vấn trong mạng cảm biến và hệ thống ứng dụng. Truy vấn thường liên quan đến các thao tác khơng gian, thời gian, hoặc ngồi khơng gian thời gian. Người dùng khác nhau (hoặc cĩ thể cùng một người dùng) đơi khi tìm kiếm những thơng tin tương tự lặp nhiều lần. Truy vấn đĩ cĩ thể trùng lặp trong các điều kiện tìm kiếm. Do đĩ, hệ thống ứng dụng cần phải xử lý nhiều lần cho các truy vấn trùng lặp đĩ. Với các truy vấn phải xử lý trong mạng cảm biến, nút cảm biến sẽ phải thực hiện các tác vụ tương tự nhiều hơn một lần trong khi chúng hồn tồn cĩ thể tránh được vấn đề này.
Để giải quyết vấn đề này, nghiên cứu đề xuất kỹ thuật xử lý truy vấn lịch sử cho cảm biến với sự hỗ trợ của proxy nhằm tránh lặp lại các xử lý với phần tìm kiếm chồng chéo. Mục tiêu đặt ra là cùng một yêu cầu từ người dùng nên được phân tán trong mạng cảm biến khơng quá một lần.
5.1 Chức năng của Proxy
Người dùng yêu cầu dữ liệu lịch sử, hoặc dữ liệu được phát ra từ mạng cảm biến thì hệ thống mạng cảm biến chịu trách nhiệm cung cấp các câu trả lời đúng cho người dùng càng nhanh càng tốt, với chi phí xử lý được thực hiện là thấp nhất. Vai trị của proxy chính là tầng trung gian của các hoạt động xử lý truy vấn giữa các mạng cảm biến với hệ thống ứng dụng để hỗ trợ việc tiêu thụ năng lượng hiệu quả. Để hồn thành nhiệm vụ này, proxy được xây dựng với một cơ sở dữ liệu siêu dữ liệu để quản lý thơng tin về cảm biến (ví dụ: Id, địa điểm, loại cảm biến,…) và lịch sử của các truy vấn nĩ đã từng xử lý (ví dụ: thời gian truy vấn, loại truy vấn, các thuộc tính liên quan,…), giúp thực hiện truy vấn hiệu quả.
Như Hình 5.1, giả thiết rằng một hệ thống mạng cảm biến là một kiến trúc ba tầng.
- Tầng thấp nhất: Đại diện cho một mạng cảm biến, bao gồm rất nhiều nút cảm
các vùng lân cận nơi cảm biến được đặt.
- Tầng trung gian: Bao gồm proxy với một cơ sở dữ liệu siêu dữ liệu, cĩ năng
lượng riêng và chạy như một nút cảm biến (hay trạm cơ sở). Proxy giữ vai trị là lớp trung gian hợp tác giữa mạng cảm biến với hệ thống ứng dụng và quản lý thơng tin cần thiết cho sự hợp tác.
- Tầng cuối cùng: Bao gồm các cơ sở dữ liệu khơng gian thời gian trong hệ