Tải bản đầy đủ (.pdf) (76 trang)

Nghiên cứu một số kỹ thuật quản lý, truy vấn dữ liệu luồng liên tục

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.61 MB, 76 trang )

i

LỜI CAM ĐOAN
Tôi xin cam đoan, đây là công trình nghiên cứu của tôi. Trong đó có sự
giúp đỡ tận tình của thầy giáo hướng dẫn TS. Hoàng Đỗ Thanh Tùng, các
thầy cô tại Viện CNTT, thầy cô giáo Trường Đại học Công nghệ Thông tin và
Truyền thông. Các nội dung nghiên cứu và kết quả trong đề tài này là hoàn
toàn trung thực.
Trong luận văn, tôi có tham khảo tài liệu của một số tác giả đã được liệt
kê tại phần Tài liệu tham khảo ở cuối luận văn.

Thái Nguyên, tháng 11 năm 2015
Tác giả

Dương Hồng Minh


ii

LỜI CẢM ƠN
Để hoàn thành chương trình luận văn, tôi đã nhận được sự hướng dẫn,
giúp đỡ góp ý nhiệt tình của quý thầy cô Trường Đại học Công nghệ Thông
tin và Truyền thông – Đại học Thái Nguyên.
Tôi xin chân thành cảm ơn đến quý thầy cô Trường Đại học Công nghệ
Thông tin và Truyền thông - Đại học Thái Nguyên, quý thầy cô Viện CNTT,
đặc biệt là những thầy cô đã tận tình dạy bảo cho tôi trong suốt thời gian học
tập tại trường.
Tôi xin gửi lời cảm ơn sâu sắc đến TS. Hoàng Đỗ Thanh Tùng đã
dành rất nhiều thời gian, tâm huyết chỉ bảo tận tình hướng dẫn nghiên cứu và
giúp tôi hoàn thành luận văn này.
Nhân đây, tôi xin chân thành cảm ơn Ban giám hiệu, Phòng sau Đại


học Trường Đại học Công nghệ Thông tin và Truyền thông - Đại học Thái
Nguyên đã tạo mọi điều kiện để tôi học tập và hoàn thành tốt khóa học.
Tôi xin chân thành cảm ơn!

Thái Nguyên, tháng 11 năm 2015
Học viên thực hiện

Dương Hồng Minh


iii

MỤC LỤC
LỜI CAM ĐOAN ........................................................................................... i
LỜI CẢM ƠN ................................................................................................ ii
MỤC LỤC .................................................................................................... iii
DANH MỤC CÁC HÌNH ............................................................................. vi
DANH MỤC CÁC BẢNG ........................................................................... vii
PHẦN MỞ ĐẦU ............................................................................................ 1
Chương 1: TỔNG QUAN VỀ DỮ LIỆU LUỒNG VÀ HỆ THỐNG
QUẢN LÝ DỮ LIỆU LUỒNG ...................................................................... 3
1.1. Tổng quan về dữ liệu luồng ................................................................. 3
1.1.1. Giới thiệu ...................................................................................... 3
1.1.2. Sự khác biệt giữa dữ liệu luồng và cơ sở dữ liệu truyền thống ...... 5
1.1.3. Một số ứng dụng ......................................................................... 11
1.2. Những thách thức trong xây dựng hệ thống quản lý dữ liệu luồng ..... 14
1.2.1.Yêu cầu bộ nhớ không hạn chế .................................................... 14
1.2.2. Truy vấn xấp xỉ ........................................................................... 17
1.2.3. Truy vấn cửa sổ trượt .................................................................. 17
1.2.4. Truy vấn khối ............................................................................. 18

1.2.5. Xây dựng hệ thống quản lý dữ liệu luồng ................................... 19
Chương 2: MỘT SỐ KỸ THUẬT TRONG QUẢN LÝ VÀ TRUY VẤN
DỮ LIỆU LUỒNG ....................................................................................... 22
2.1. Kỹ thuật đánh chỉ số dữ liệu luồng R-Tree ........................................ 22
2.1.1. Khái niệm ...................................................................................23
2.1.2. Cấu trúc của một R-Tree .............................................................25
2.1.3. Thuật toán R-Tree ....................................................................... 26
2.2. Kỹ thuật truy vấn dữ liệu luồng ......................................................... 34


iv

2.2.1. Ngữ nghĩa truy vấn ..................................................................... 34
2.2.2. Ngôn ngữ truy vấn ...................................................................... 35
2.2.3. Kiến trúc truy vấn ...................................................................... 36
2.2.4. Thuật toán ................................................................................... 38
2.3. Phân tích lựa chọn công cụ ................................................................ 41
2.3.1. Microsoft StreamInsight ............................................................. 41
2.3.2. Ứng dụng Web thời gian thực sử dụng thư viện SignalR ............ 48
Chương 3: CHƯƠNG TRÌNH THỬ NGHIỆM ............................................ 54
3.1. Bài toán Web thời gian thực .............................................................. 54
3.1.1.Bài toán ....................................................................................... 54
3.1.2. Vấn đề cần giải quyết.................................................................. 54
3.1.3. Giải pháp đề xuất ........................................................................ 55
3.2. Một số kết quả .................................................................................. 58
3.2.1. Kết quả chương trình Streaming sử dụng StreamInsight ............. 59
3.2.2. Kết quả ứng dụng chạy trên Web thời gian thực ......................... 62
PHẦN KẾT LUẬN ...................................................................................... 67
TÀI LIỆU THAM KHẢO ............................................................................ 68



v

DANH MỤC TỪ VIẾT TẮT
Từ viết tắt

Nghĩa tiếng Anh

DBMS

Data Base Management System

DSMS

Data Stream Management System

CPU

Central Processing Unit

SQL

Structured Query Language

CQL

Continuous Query Language

SPE


Stream Processing Engine

URL

Uniform Resource Locator

HTTP

Hypertext Transfer Protocol


vi

DANH MỤC CÁC HÌNH
Hình 1.1: Xử lý dữ liệu trong quản trị cơ sở dữ liệu ....................................... 6
Hình 1.2: Xử lý dữ liệu trong hệ thống dữ liệu luồng ..................................... 8
Hình 2.1: Ví dụ về R-Tree ............................................................................23
Hình 2.2: Trường hợp phân chia node (a) bad split, (b) good split ...............31
Hình 2.3: Phân chia phần tử thành các nhóm node mới ...............................32
Hình 2.4: Các kiểu dữ liệu và các lớp hàm trong ngữ nghĩa trừu tượng ........ 34
Hình 2.5: Mô hình kiến trúc xử lý truy vấn liên tục ...................................... 36
Hình 2.6: Kiến trúc truy vấn liên tục trong luồng dữ liệu............................. 40
Hình 2.7: Nền tảng ứng dụng StreamInsight................................................. 42
Hình 2.8: Truy vấn ràng buộc ....................................................................... 48
Hình 2.9: Mô hình gửi thông tin của SignalR ............................................... 50
Hình 2.10: Phương thức kết nối của SignaIR ............................................... 52
Hình 3.1: Kiến trúc tạo báo cáo Web sử dụng thuật toán truy vấn liên tục.......... 54
Hình 3.2: Sơ đồ bài toán ............................................................................... 56
Hình 3.3: Sơ đồ tổng thể bài toán ................................................................. 57
Hình 3.4: Lớp SimpleEventType .................................................................. 59

Hình 3.5: Các lớp trong gói SimulatedInputAdapter..................................... 59
Hình 3.6: Các lớp trong gói ConsoleOutput (hiển thị thông tin) ................... 60
Hình 3.7: Báo cáo theo dòng ........................................................................ 61
Hình 3.8: Chương trình Web ........................................................................ 66
Hình 3.9: Kết quả hiển thị trên Web ............................................................. 66


vii

DANH MỤC CÁC BẢNG
Bảng 1.1: So sánh sự khác nhau giữa DBMS và DSMS ............................... 10
Bảng 1.2: Ví dụ truy vấn trên dữ liệu luồng S(A, B, C) và T(D, E) .............. 15
Bảng 1.3: Ký hiệu một số truy vấn Q và luồng S .......................................... 16


1

PHẦN MỞ ĐẦU
Công nghệ thông tin ngày càng phát triển, ứng dụng rộng rãi trong
nhiều lĩnh vực của đời sống kinh tế xã hội. Theo thời gian, lượng dữ liệu
thông tin cần lưu trữ của các cơ quan tổ chức, đơn vị, doanh nghiệp, người sử
dụng… ngày càng tăng. Do dung lượng dữ liệu gia tăng không ngừng, yêu
cầu ngày càng cao về hiệu năng truy xuất, tính ổn định và sự sẵn sàng của dữ
liệu; việc lưu trữ đã và đang trở nên rất quan trọng. Lưu trữ dữ liệu không còn
đơn giản là cung cấp các thiết bị lưu trữ dung lượng lớn mà còn bao gồm cả
khả năng quản lý, chia sẻ cũng như sao lưu và phục hồi dữ liệu trong mọi
trường hợp.
Mặt khác trong môi trường kinh tế đang trên đà hội nhập, phát triển và
cạnh tranh người ta ngày càng cần có nhiều thông tin cần truy vấn nhanh để
hỗ trợ giúp đưa ra quyết định và ngày càng có nhiều câu hỏi, vấn đề cần phải

trả lời, giải quyết dựa trên một khối lượng thông tin khổng lồ. Các phương
pháp lưu trữ, truy vấn cơ sở dữ liệu truyền thống ngày càng không đáp ứng
được yêu cầu thực tế đề ra, đã phát triển một khuynh hướng kỹ thuật mới đó
là truy vẫn dữ liệu luồng liên tục (Data Streaming).
Streaming là một kỹ thuật xử lý truyền dữ liệu theo luồng một cách ổn
định và liên tục. Trong mô hình luồng dữ liệu, hoạt động của một hoặc tất cả
các dữ liệu đầu vào không được truy cập ngẫu nhiên từ ổ đĩa hoặc bộ nhớ mà
truy cập từ một hoặc từ nhiều luồng dữ liệu liên tục. Ứng dụng trực tuyến
không chỉ nhấn mạnh đến cơ chế xử lý của một hệ thống quản lý dữ liệu
luồng, mà còn đưa ra những thách thức mới cho việc quản lý dữ liệu: Lớn,
nhanh chóng thay đổi bộ dữ liệu cần phải được xử lý với chi phí thấp về bộ
nhớ và CPU trong khi cung cấp truy cập hiệu quả và thời gian đáp ứng đảm
bảo thấp. Giải quyết và khắc phục những thách thức về lưu trữ và quản lý dữ
liệu, truy vấn dữ liệu nhanh từ đó hỗ trợ cá nhân, doanh nghiệp đưa ra quyết
định nhanh chóng, kịp thời, hiệu quả, tăng doanh thu. Luận văn tập trung tìm


2

hiểu cơ sở dữ liệu truyền thống, cơ sở dữ liệu luồng liên tục, một số kỹ thuật
quản lý, truy vấn dữ liệu luồng liên tục.
Lưu trữ dữ liệu an toàn và truy vấn dữ liệu nhanh quyết định sự thành
công của mỗi cá nhân, tổ chức, doanh nghiệp... Vì vậy, học viên chọn:
“Nghiên cứu một số kỹ thuật quản lý, truy vấn dữ liệu luồng liên tục” làm
đề tài luận văn tốt nghiệp của mình.
Nội dung luận văn gồm 03 chương:
Chương 1: Tổng quan về dữ liệu luồng và hệ thống quản lý dữ liệu luồng
Chương 2: Một số kỹ thuật trong quản lý luồng và truy vấn dữ liệu luồng
Chương 3: Chương trình thử nghiệm
Phần kết luận

Tài liệu tham khảo


3

Chương 1: TỔNG QUAN VỀ DỮ LIỆU LUỒNG VÀ HỆ THỐNG
QUẢN LÝ DỮ LIỆU LUỒNG
1.1. Tổng quan về dữ liệu luồng
1.1.1. Giới thiệu
Trong đầu những năm 1920, George O.Squier đã được cấp bằng sáng
chế cho một hệ thống về việc truyền tải và phân phối các tín hiệu qua đường
dây điện, đó là cơ sở kỹ thuật cho những gì sau này trở thành Muzak, một
công nghệ Streaming âm nhạc liên tục cho các khách hàng thương mại mà
không cần sử dụng đài thu thanh.
Đã có nhiều nỗ lực để hiển thị các tập tin media trên các máy tính từ
những ngày đầu tiên sơ khai của nền công nghiệp máy tính giữa thế kỷ 20.
Tuy nhiên, có ít tiến bộ đã được thực hiện trong nhiều thập kỷ, chủ yếu do chi
phí cao và khả năng hạn chế về phần cứng máy tính. Đến những năm 1990,
máy tính cá nhân trở nên mạnh mẽ, đủ để hiển thị các tập tin media khác nhau
và các vấn đề kỹ thuật chủ yếu liên quan đến Streaming.
CPU và băng thông mainboard có đủ sức mạnh để hỗ trợ tốc độ các dữ
liệu yêu cầu.
Trong thời gian cuối những năm 1990 và đầu những năm 2000, băng
thông mạng network đã lớn hơn rất nhiều, đặc biệt là sự cải tiến ở đường
truyền đầu cuối – kết nối từ các server tới người dùng truy cập. Hơn nữa,
Internet sử dụng các giao thức và các định dạng tiêu chuẩn, chẳng hạn như
TCP/IP, HTTP và HTML. Thuật ngữ "Streaming" lần đầu tiên được sử dụng
trong năm 1990 được mô tả là công cụ giúp cho video theo yêu cầu trên các
mạng IP được tực hiện tốt hơn. Microsoft đã phát triển một ứng dụng nghe
nhạc được biết đến với cái tên ActiveMovie vào năm 1995, cho phép

streaming media và bao gồm một định dạng độc quyền cho streaming, đó là
tiền thân của các tính năng streaming sau này trong Windows Media Player
6.4 vào năm 1999.
Tháng 6 năm 1999, Apple cũng giới thiệu một định dạng Streaming


4

media trong ứng dụng QuickTime 4. Sau này cũng được áp dụng rộng rãi trên
các trang Web cùng với RealPlayer và Windows Media streaming. Các định
dạng cạnh tranh trên các trang Web yêu cầu mỗi người sử dụng phải tải về các
ứng dụng tương ứng và kết quả là nhiều người sử dụng phải có tất cả ba ứng
dụng trên máy tính của họ để tương thích chung.
Khoảng năm 2002, sự quan tâm đến chỉ một định dạng Streaming
thống nhất và áp dụng rộng rãi của Adobe Flash thúc đẩy sự phát triển của
một định dạng streaming video thông qua Flash, đó là định dạng được sử
dụng ứng dụng đọc Flash trên nhiều trang Web video phổ biến lưu trữ hiện
nay như YouTube. Nhu cầu người dùng tăng lên cho việc truyền hình trực
tiếp đã khiến YouTube để thực hiện một dịch vụ mới “Live Streaming” cho
người sử dụng. Hiện nay nhiều công ty cũng cung cấp dịch vụ Live Streaming
này để đảm bảo đường truyền và tốc độ dựa đáp ứng truyền hình trực tiếp
theo kết nối có sẵn của người sử dụng.
Streaming là một kỹ thuật xử lý truyền dữ liệu theo luồng một cách ổn
định và liên tục [1, 6]. Trong mô hình luồng dữ liệu, hoạt động của một hoặc
tất cả các dữ liệu đầu vào không được truy cập ngẫu nhiên từ ổ đĩa hoặc bộ
nhớ mà truy cập từ một hoặc từ nhiều luồng dữ liệu liên tục. Ứng dụng trực
tuyến không chỉ nhấn mạnh đến cơ chế xử lý của một hệ thống quản lý dữ
liệu luồng, mà còn đưa ra những thách thức mới cho việc quản lý dữ liệu lớn,
nhanh chóng thay đổi bộ dữ liệu cần phải được xử lý với chi phí thấp về bộ
nhớ và CPU trong khi cung cấp truy cập hiệu quả và thời gian đáp ứng đảm

bảo thấp. Công nghệ Streaming đang ngày càng trở nên quan trọng với sự
phát triển của Internet bởi vì hầu hết người dùng không có quyền truy cập đủ
nhanh để tải các tập tin đa phương tiện lớn một cách nhanh chóng. Với
Streaming, trình duyệt hoặc plug-in của Client có thể bắt đầu hiển thị dữ liệu
trước khi toàn bộ tập tin đã được truyền đi. Dữ liệu luồng có những đặc tính
sau:


5

+ Các dữ liệu trong luồng là trực tuyến.
+ Luồng dữ liệu có kích thước lớn.
+ Hệ thống không kiểm soát thứ tự các phần tử dữ liệu đã xử lý.
1.1.2. Sự khác biệt giữa dữ liệu luồng và cơ sở dữ liệu truyền thống
Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS),
là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu. Trên
đó người dùng có thể định nghĩa, thao tác và xử lý dữ liệu trong một CSDL để
xuất ra những thông tin có nghĩa. Cụ thể, các chương trình thuộc loại này hỗ
trợ khả năng lưu trữ, sửa chữa, xóa và tìm kiếm thông tin trong một cơ sở dữ
liệu (CSDL). Có rất nhiều hệ quản trị CSDL khác nhau: Từ phần mềm nhỏ
chạy trên máy tính cá nhân cho đến những hệ quản trị phức tạp chạy trên một
hoặc nhiều siêu máy tính. Đa số hệ quản trị CSDL đều có một đặc điểm
chung là sử dụng ngôn ngữ truy vấn theo cấu trúc mà tiếng Anh gọi
là Structured Query Language (SQL).


6

Truy vấn SQL


Kết quả

Xử lý truy vấn
Bộ nhớ chính

Đĩa

Hình 1.1: Xử lý dữ liệu trong quản trị cơ sở dữ liệu
Hệ thống cơ sở dữ liệu truyền thống không thể sử dụng để lưu trữ hiệu
quả và xử lý dữ liệu trực tuyến. Cơ sở dữ liệu truyền thống không được thiết
kế để tải nhanh chóng và liên tục các kết quả truy vấn dữ liệu cá nhân khi có
yêu cầu truy vấn trong trường hợp luồng dữ liệu. Hệ thống quản lý cơ sở dữ
liệu truyền thống được trang bị tốt nhất để chạy các truy vấn trong một
khoảng thời gian hữu hạn được lưu trữ trên bộ dữ liệu. Đồng thời DBMS


7

truyền thống tập trung chủ yếu vào mục tiêu đối diện của câu trả lời chính xác
tính bằng cách truy vấn có kế hoạch ổn định. Cơ sở dữ liệu truyền thống
không hỗ trợ trực tiếp các truy vấn liên tục mà điển hình là các ứng dụng
dòng dữ liệu. DBMS có những tính năng:
+ Được thiết kế để phục vụ cho những ứng dụng thương mại.
+ Giải quyết những vấn đề đơn lẻ (one-time queries).
+ Không đặt nặng vấn đề thời gian.
+ Dữ liệu khép kín.
+ Dữ liệu được giả định chính xác.
+ Tính thích ứng (reactive capability).
Một hệ thống quản lý dữ liệu luồng (DSMS) là một chương trình máy
tính để quản lý dữ liệu luồng liên tục. Nó tương tự như một hệ thống quản lý

cơ sở dữ liệu (DBMS), thiết kế cho các dữ liệu tĩnh trong cơ sở dữ liệu thông
thường. Một DSMS cũng cung cấp một chế độ truy vấn linh hoạt để các thông
tin cần thiết có thể được thể hiện bằng cách sử dụng các truy vấn. Tuy nhiên,
trái ngược với một DBMS, một DSMS thực hiện một truy vấn liên tục mà
không chỉ diễn ra một lần mà vĩnh viễn. Các truy vấn được thực hiện liên tục
cho đến khi nó được gỡ bỏ một cách rõ ràng. Hầu hết DSMS là hướng dữ
liệu, truy vấn liên tục tạo ra kết quả mới miễn là dữ liệu mới đến hệ thống. Sự
khác biệt giữa một hệ thống tập tin hoặc hệ thống quản lý cơ sở dữ liệu
(DBMS) và một DSMS rất đơn giản: Các hệ thống file hiện tại hay DBMS
mong đợi tất cả các dữ liệu được quản lý trong một số hình thức tập hợp dữ
liệu bền vững; trong một DSMS, khái niệm về một dòng dữ liệu, có thể không
bị giới hạn, cũng quan trọng như thiết lập một dữ liệu lưu trữ thông thường.


8

Bộ ghi CQs

Kết quả (lưu trữ)

Xử lý truy vấn

Bộ nhớ chính
Luồng dữ liệu

Lưu trữ không lựa chọn

Luồng dữ liệu

Quan hệ lưu trữ


(bộ nhớ chính hoặc đĩa)

Hình 1.2: Xử lý dữ liệu trong hệ thống dữ liệu luồng
Một trong những tính năng quan trọng nhất của một DSMS là xử lý có
khả năng vô hạn và nhanh chóng thay đổi luồng dữ liệu bằng cách cung cấp
một chế độ truy vấn linh hoạt cùng một lúc, mặc dù chỉ được giới hạn nguồn
tài nguyên như bộ nhớ chính bị giới hạn. Truy vấn trên dữ liệu luồng liên tục
có nhiều điểm chung với các truy vấn trong hệ thống quản lý cơ sở dữ liệu
truyền thống. Tuy nhiên, có hai khác biệt quan trọng đặc biệt với mô hình
luồng dữ liệu:
+ Sự khác biệt đầu tiên là giữa truy vấn một lần và truy vấn liên tục.
Truy vấn một lần (một lớp bao gồm truy vấn DBMS truyền thống) là những
truy vấn được đánh giá một lần trên một bản chụp điểm thời gian của bộ dữ
liệu, với câu trả lời trả lại cho người sử dụng. Truy vấn liên tục có thể được


9

lưu trữ và cập nhật kết quả truy vấn khi có dữ liệu mới và khi có sự thay đổi
liên tục của dữ liệu.
+ Sự khác biệt thứ hai là giữa các truy vấn được xác định trước và truy
vấn bột phát. Một truy vấn xác định trước là một truy vấn cung cấp cho các hệ
thống quản lý luồng dữ liệu trước khi có bất kỳ dữ liệu có liên quan nào đến.
Truy vấn xác định trước nói chung là các truy vấn liên tục, mặc dù kế hoạch
truy vấn một lần có thể được định nghĩa trước. Mặt khác, truy vấn bột phát
sau khi các luồng dữ liệu đã bắt đầu công khai. Truy vấn bột phát có thể là
truy vấn một lần hoặc là các truy vấn liên tục. Thiết kế một hệ thống quản lý
dữ liệu luồng cho truy vấn bột phát là rất phức tạp, vì không biết trước mục
đích tối ưu hóa truy vấn và quan trọng hơn, câu trả lời chính xác cho một truy

vấn bột phát có thể yêu cầu tham khảo các yếu tố dữ liệu đến từ dữ liệu luồng
đã bị loại bỏ.
Dữ liệu luồng có thể được xem như là quá trình ngẫu nhiên mà trong đó
sự kiện liên tục xảy ra và độc lập với nhau. Truy vấn dữ liệu luồng là khá
khác nhau từ truy vấn trong mô hình quan hệ thông thường. Một ý tưởng
chính là hoạt động trên mô hình dữ liệu luồng không loại trừ việc sử dụng các
dữ liệu được lưu trữ trong các mối quan hệ thông thường: Dữ liệu có thể là
tạm thời. Điều làm cho xử lý dữ liệu khác nhau giữa hệ quản trị cơ sở dữ liệu
truyền thống và hệ thống quản lý dữ liệu luồng đó là:
+ Các yếu tố dữ liệu trực tuyến trong luồng.
+ Hệ thống không kiểm soát thứ tự các phần tử dữ liệu đến hoặc trong
một dòng dữ liệu, hay trên dòng dữ liệu.
+ Khả năng luồng dữ liệu bị ràng buộc về kích thước.
+ Khi một phần tử từ một dòng dữ liệu đã được xử lý, nó sẽ bị loại bỏ
hoặc lưu trữ. Phần tử đó không được lấy ra dễ dàng, trừ khi nó được lưu trong
bộ nhớ một cách rõ ràng, hoặc là phần tử đó tương đối nhỏ so với kích thước
của dòng dữ liệu.


10

Bảng dưới đây cung cấp sự khác nhau của DSMS và so sánh chúng với
DBMS truyền thống.
Bảng 1.1: So sánh sự khác nhau giữa DBMS và DSMS
Hệ thống quản lý cơ sở dữ liệu

Hệ thống quản lý dữ liệu luồng

(DBMS)


(DSMS)

Quan hệ ổn định

Luồng tạm thời (và các mối quan
hệ liên tục)

Truy cập ngẫu nhiên

Truy cập tuần tự

Truy vấn một lần

Các truy vấn liên tục

Lưu trữ thứ cấp (về mặt lý thuyết) Hạn chế bộ nhớ chính
không giới hạn
Chỉ có đầu vào liên quan

Xem xét thứ tự của các đầu vào

Cập nhật tỷ lệ tương đối thấp

Cập nhật tỷ lệ khả năng rất cao

Ít hoặc không có yêu cầu thời gian

Yêu cầu thời gian thực

Giả định dữ liệu chính xác


Giả định lỗi thời/dữ liệu không
chính xác

Kế hoạch truy cập được xác định bởi bộ Đặc điểm dữ liệu và các mẫu đến
xử lý truy vấn và thiết kế cơ sở dữ liệu không thể đoán trước
vật lý


11

1.1.3. Một số ứng dụng
Nhờ khả năng truy vấn liên tục, kết quả truy vấn chính xác mà DSMS
được ứng dụng trong nhiều lĩnh vực thiết yếu của cuộc sống: Tài chính, ứng
dụng Web, bảo mật mạng, giám sát cảm biến và giải trí… Trong lĩnh vực
mạng cảm biến, giám sát các dữ liệu cảm biến từ nhiều nguồn: Lọc phức tạp,
kích hoạt hệ thống báo động, tập hợp và tham gia trên một hoặc nhiều luồng.
Phân tích mạng lưới giao thông, truy cập Internet trong thời gian gần
thực để tính toán lưu lượng truy cập, thống kê và phát hiện các điều quan
trọng cũng như các mối nguy hiểm.
Ứng dụng bảo mật hiện đại thường áp dụng nhiều quy tắc hơn các
luồng gói dữ liệu mạng. (Ví dụ: IPolicy Networks cung cấp một nền tảng bảo
mật tích hợp cung cấp các dịch vụ như: Hỗ trợ tường lửa và phát hiện xâm
nhập qua đa luồng Gigabit gói dữ liệu mạng). Một nền tảng như vậy cần thực
hiện xử lý luồng phức tạp bao gồm URL lọc dựa trên bảng tra cứu và sự
tương quan giữa các mạng có nhiều lưu lượng luồng.
Trong lĩnh vực tài chính: Phân tích chứng khoán trực tuyến, khám phá
mối tương quan, xác định xu hướng. Nhiều ngành công nghiệp dịch vụ tài
chính dựa vào phân tích nhanh chóng một lượng lớn các dữ liệu để đưa ra
quyết định kinh doanh và kinh doanh thời gian gần như thực. Với tốc độ phát

triển của công nghệ thông tin và bùng nổ về kích thước dữ liệu, các tổ chức
này thường xuyên tiêu thụ dữ liệu thị trường với tỷ lệ hơn một triệu tin nhắn
mỗi giây. Tăng trưởng mạnh mẽ này trong dữ liệu thị trường dự kiến sẽ tiếp
tục trong tương lai gần, vượt xa khả năng của nhiều công nghệ hiện tại. Các
nhà lãnh đạo ngành công nghiệp tài chính đang mở rộng và hoàn thiện chiến
lược của họ bằng cách bao gồm các loại dữ liệu trong phân tích tự động của
họ; nguồn từ mô hình dự báo thông tin tài chính để phát sóng tin tức. IBM và
TD Bank Financial Group đã phát triển một giao dịch InfoSphere Streams dựa
trên một mẫu thử nghiệm chạy trên một Blue Gene/P siêu máy tính có thể lưu
trữ các ứng dụng kinh doanh có thể mở rộng khả năng xử lý dữ liệu OPRA


12

tăng tốc lên 21 lần tốc độ ghi. Ngoài ra, họ còn tạo ra một công cụ tìm kiếm
Traderbot một công cụ tìm kiếm tài chính dựa trên Web để đánh giá truy vấn
trong thời gian thực luồng dữ liệu tài chính như cổ phiếu chứng khoán và các
nguồn cấp dữ liệu tin tức.
Lĩnh vực thiên văn học: Một ưu điểm chính của truy vấn dữ liệu luồng
liên tục là thực hiện các phân tích về dữ liệu, luồng chuyên sâu để xác định
các vấn đề quan trọng đáng điều tra sâu hơn. Một ví dụ của trường hợp sử
dụng này là trong lĩnh vực thiên văn vô tuyến. Một số dự án thiên văn vô
tuyến trên thế giới tiếp nhận dữ liệu luồng liên tục từ xa qua các kính thiên
văn vô tuyến. Các kính thiên văn có hàng ngàn đến hàng chục ngàn dữ liệu
gửi về trong một giây, tất cả dữ liệu định tuyến luồng để một siêu máy tính
trung tâm khảo sát một vị trí trong vũ trụ. Truy vấn dữ liệu luồng liên tục
trung gian chạy trên siêu máy tính có thể cung cấp một cách tiếp cận linh hoạt
hơn để xử lý các dòng dữ liệu. Các nhóm thiên văn tần số thấp của Đại học
Uppsala và LOFAR Outrigger Trong Scandinavia (LOIS) thực hiện dự án để
phân tích hành vi bất thường hay thoáng qua như vụ nổ tia vũ trụ sản sinh

năng lượng cao. Họ nỗ lực điều tra mở rộng với tổng tốc độ dữ liệu khoảng
terabit mỗi giây.
Dịch vụ giao dịch năng lượng (ETS): Truy vấn luồng dữ liệu nhanh
chóng, phân tích dữ liệu chính xác giúp các nhà đầu tư năng lượng đưa ra
quyết định nhanh hơn. Phân tích hỗ trợ các nhà đầu tư: Bản đồ năng lượng
nhiệt, mô hình nhu cầu năng lượng, phân tích kỹ thuật năng lượng tương lai,
tin tức nguồn cung cấp dữ liệu phân tích để xác định và đánh giá các sự kiện
năng lượng liên quan, dự đoán ảnh hưởng tài chính của các công ty năng
lượng. Các nhà đầu tư có thể tận dụng cơ sở hạ tầng máy tính được chia sẻ để
có được thông tin một cách nhanh chóng với chi phí thấp.
IBM đã ứng dụng truy vấn luồng dữ liệu liên tục vào trong sản xuất,
chế tạo Fishkill chip bán dẫn của họ. DSMS thực hiện việc giám sát đa biến
thời gian thực cho quá trình phát hiện lỗi, kích hoạt chuyển động phân tích dữ


13

liệu phân loại. Trong công đoạn này, khi gây ra lỗi khiếm khuyết trong quá
trình sản xuất chip các lỗi này có thể được phát hiện trong vòng vài phút chứ
không phải là một ngày hoặc vài tuần. Các chip khiếm khuyết này có thể
được làm lại và có khả năng tiếp tục theo dây chuyền sản suất, quan trọng hơn
điều chỉnh này được thực hiện trước khi xử lý chip tiếp theo.
Microsoft đã phát triển một ứng dụng nghe nhạc được biết đến với cái
tên ActiveMovie vào năm 1995, cho phép Streaming media và bao gồm một
định dạng độc quyền cho Streaming, đó là tiền thân của các tính năng
Streaming sau này trong Windows Media Player 6.4 vào năm 1999. Vào
tháng 6 năm 1999, Apple cũng giới thiệu một định dạng Streaming media
trong ứng dụng QuickTime 4. Sau này cũng được áp dụng rộng rãi trên các
trang Web cùng với RealPlayer và Windows Media Streaming. Các định dạng
cạnh tranh trên các trang Web yêu cầu mỗi người sử dụng phải tải về các ứng

dụng tương ứng và kết quả là nhiều người sử dụng phải có tất cả ba ứng dụng
trên máy tính của họ để tương thích chung. Khoảng năm 2002, sự quan tâm
đến từ một định dạng Streaming thống nhất và áp dụng rộng rãi của Adobe
Flash thúc đẩy sự phát triển của một định dạng Streaming video thông qua
Flash, đó là định dạng được sử dụng ứng dụng đọc Flash trên nhiều trang
Web video phổ biến lưu trữ hiện nay như YouTube. Nhu cầu người dùng tăng
lên cho việc truyền hình trực tiếp đã khiến YouTube thực hiện một dịch vụ
mới “Live Streaming” cho người sử dụng. Hiện nay nhiều công ty cũng cung
cấp dịch vụ Live Streaming này để đảm bảo đường truyền và tốc độ đáp ứng
truyền hình trực tiếp theo kết nối có sẵn của người sử dụng.
Những tiến bộ trong mạng máy tính, kết hợp với sự mạnh mẽ của máy
tính gia đình và hệ điều hành hiện đại, các thiết bị điện tử hiện đại, phương
tiện truyền thông thực tế và giá cả phải chăng cho người tiêu dùng thông
thường. Internet Radio, Internet TV xuất hiện để cung cấp cho người nghe
một lựa chọn mới, xem phim nghe nhạc trên Internet mà không cần máy tính.
Nhìn chung, nội dung media chiếm một khối lượng băng thông và lưu trữ lớn,


14

do đó phương tiện lưu trữ và chi phí truyền vẫn còn đáng kể. Để bù đắp điều
này phần nào, các nội dung media thường được nén lại để đáp ứng cả hai yêu
cầu lưu trữ và Streaming. Nhu cầu sử dụng các nội dung độ nét cao (HD) đã
dẫn đầu ngành công nghiệp để phát triển một số công nghệ mới như
WirelessHD hay ITU-T G.hn, được tối ưu hóa cho việc Streaming nội dung
HD đã giúp cho người sử dụng không phải lắp đặt lại đường truyền mạng
mới. Hiện nay, các tập tin media có thể được Stream trực tiếp hoặc theo yêu
cầu. Live Streams thường được cung cấp bằng một phương tiện được gọi là
"True streaming". True streaming sẽ gửi thông tin thẳng vào máy tính hoặc
thiết bị mà không lưu các tập tin vào một đĩa cứng. Streaming yêu cầu được

cung cấp bởi một phương tiện được gọi là Streaming tuần tự hoặc tải về tuần
tự. Streaming tuần tự lưu các tập tin vào ổ đĩa cứng và sau đó được phát từ ổ
đĩa đó. Streaming theo yêu cầu thường được lưu vào ổ đĩa cứng và máy chủ
trong một lượng thời gian dài, trong khi các Live stream chỉ lưu tại một thời
điểm nhất định (Ví dụ: Như trong các game bóng đá).
1.2. Những thách thức trong xây dựng hệ thống quản lý dữ liệu luồng
1.2.1.Yêu cầu bộ nhớ không hạn chế
Bởi vì các luồng dữ liệu khả năng không hạn chế về kích thước, số
lượng lưu trữ đòi hỏi để tính toán một câu trả lời chính xác cho một truy vấn
luồng dữ liệu cũng có khả năng lớn lên không hạn chế. Trong khi các thuật
toán bộ nhớ ngoài cho việc xử lý các bộ dữ liệu lớn hơn bộ nhớ chính đã được
nghiên cứu, những thuật toán đó không phù hợp lắm với các ứng dụng luồng
dữ liệu [5]. Vì vậy, chúng không hỗ trợ các truy vấn liên tục và căn bản là quá
chậm đối với hồi đáp thời gian thực.
Mô hình luồng dữ liệu liên tục phù hợp nhất với các bài toán, mà ở đó
các hồi đáp truy vấn kịp thời là quan trọng và có một lượng lớn dữ liệu liên
tục được tạo ra ở tốc độ cao theo thời gian.
Dữ liệu mới liên tục đến ngay cả khi dữ liệu cũ vẫn đang xử lý. Khối
lượng tính toán trên một phần tử dữ liệu phải thấp, hoặc không độ trễ của tính


15

toán sẽ quá cao và thuật toán sẽ không thể theo kịp với luồng dữ liệu. Vì lý do
này, chúng ta cần các thuật toán có khả năng thực hiện trong bộ nhớ thay vì
truy xuất đĩa. Không biết kích thước của các luồng dữ liệu đầu vào thì không
thể đưa giới hạn yêu cầu bộ nhớ cho phần lớn truy vấn liên quan tới Joins (kết
hợp), trừ phi phạm vi của các thuộc tính liên quan đến truy vấn được giới hạn.
Đây vẫn là vấn đề mở trong phạm vi nghiên cứu.
Để xác định bộ nhớ không giới hạn của các truy vấn, người ta thường

sử dụng một lớp các truy vấn đặc biệt mà vẫn thường hay gọi là truy vấn cục
bộ có thứ tự hoặc truy vấn LTO (Locally Totally Ordered – Truy vấn cục bộ
có thứ tự). Sử dụng một truy vấn LTO cho mỗi dòng truy vấn, sắp thứ tự các
thuộc tính của các dòng và các hằng số trong truy vấn. Bất kỳ truy vấn nào
cũng có thể được chuyển đổi thành một truy vấn LTO bằng cách liên tục bổ
sung thêm các điều kiện để làm vị từ lựa chọn của mình. Điều kiện truy vấn
khác nhau, kết quả truy vấn vị từ là khác nhau. Một truy vấn được thực hiện
bởi bộ nhớ không giới hạn khi và chỉ khi tất cả các truy vấn LTO bắt nguồn từ
nó, bằng cách thêm điều kiện vị từ. Cấu trúc đặc biệt của truy vấn LTO xác
định dễ dàng hơn bộ nhớ không giới hạn trên máy tính.
Bảng 1.2: Ví dụ truy vấn trên dữ liệu luồng S (A, B, C) và T (D, E)
Bộ nhớ bị chặn
∏=π

∏=π

Q1

∏A (∂( A > 10 ) (S))

Yes

No

Q2

∏A (∂( A = D ) (S x T))

No


No

Q3

∏A (∂( A = D ) ^

(A > 10) ^ (D < 20)(S

Yes

Yes

Q4

∏A (∂( B = D ) ^

(A = 10) (S

No

Yes

Q5

∏A (∂( B < D ) ^

(C < E) ^ (A = 10)(S

No


No

∏A (∂( B < D ) ^

(C < E) ^ (B < E) ^ (C
No

Yes

Yes

Yes

Q6
Q7

x T))

x T))
x T))

(S x T))
∏A (∂( B < D ) ^

(D > 10) ^ (B < 20) ^ (A = 10)(S

x T))



16

Một truy vấn
n Q(P) là truy vấn
v cục bộ có thứ tự nếu mỗii S
các phần tử (A (S)

S(Q), tập

C (Q)) là hoàn toàn có thứ tự củaa P. Truy v
vấn LTO là

truy vấn vị từ tốii đa, thêm v
vị từ điều kiện liên quan đến E(Q) đểể làm vị từ lựa
chọn của một truy vấn
n LTO Q hoặc
ho kết quả của một truy vấn
n tương đương.
Xem xét một truy vấn Q(P) qua hai lu
luồng S (A, B, C) và T (D, E) trong đó: P
= {(A = 10); (B < A); (A < C); (D < E)}. Các thiết
thi lập củaa các y
yếu tố (A(S)
C(Q)) = {A, B, C, 10} là hoàn toàn có thứ
th tự kể từ khi ra lệnh
nh B < A = 10 <
C. Tuy nhiên, tập
p các ph
phần tử (A(T)


C(Q))) = {D, E, 10} là hoàn toàn không

có thứ tự, từ D và E không thể
th so sánh vớii 10. Do đó, Q(P) không phải
ph là một
truy vấn
n LTO. Tuy nhiên, các truy v
vấn Q(P

{(E < A)}) đư
được hình thành

bằng cách thêm mộtt thuộc
thu tính bổ sung cho P là một truy vấn
n LTO. Chúng ta
có thể hình thành mộtt truy v
vấn LTO từ một truy vấn Q(P) bằằng cách thêm
điều kiện vị từ đến việcc lựa
l chọn vị từ P để đảm bảo rằng đối vớ
ới mỗi luồng S
xuất hiện trong Q, tập
p (A(S)

C(Q)) là hoàn toàn có thứ tự.. Các truy v
vấn

LTO hình thành theo cách này được cho là bắt nguồn từ Q.
Bảng 1.3
3: Ký hiệu một số truy vấn Q và luồng
ng S

S(Q)

Tập
p hợp
h các luồng xuất hiện trong Q

C(Q)

Thiếtt lập
l các hằng số xuất hiện trong Q

A(S)

Thiếtt lập
l các thuộc tính trong luồng S

A(Q)

ε(Q)

Thiêt lập
l các thuộc tính trong tất cả các dòng trong Q, ttức là
US

S(Q) A(S)

Tập
p hợp
h các yếu tố trong Q, tức là A(Q)


C(Q)

Một truy vấn
n LTO Q(PL) được cho là bắt nguồn từ mộtt truy vấn
v Q(P)
nếu (PL)+ = (P

F)+ trong đó F là một
m số thiết lập tùy ý củaa các vị
v từ. (Ví dụ:

∂( A = D ) ^
Từ truy vấn Q3 = ∏A (∂

(A > 10) ^ (D 20)

(S x T))). Chúng ta có thể
th rút ra

một truy vấn LTO bằng
ng cách thêm các vị
v từ lọcc {(B > 20), (C < 10), (E = D)}
để làm vị từ lựa chọn.
n. Bộ
B nhớ không giới của một truy vấn
n có liên quan trực
tr
tiếp đến bộ nhớ không giới
gi của một truy vấn LTO bắt nguồn từ nó.



17

1.2.2. Truy vấn xấp xỉ
Khi giới hạn dung lượng bộ nhớ thì không thể nào luôn có những trả lời
chính xác cho các truy vấn luồng dữ liệu.
Tuy nhiên, câu trả lời xấp xỉ thường có thể chấp nhận được thay câu trả
lời chính xác. Các thuật toán xấp xỉ cho bài toán về luồng dữ liệu là một lĩnh
vực nghiên cứu phát triển trong cộng đồng thuật toán trong những năm gần
đây. Do vậy, các kỹ thuật có thể được dùng cho dữ liệu như giản lược dữ liệu
và xây dựng tóm lược, gồm có: Phác thảo, lấy mẫu ngẫu nhiên, biểu đồ và
biến đổi. Dựa trên các kỹ thuật này, để có thể tạo ra các trả lời truy vấn xấp
xỉ. Đây là hướng nghiên cứu còn cần phải tìm hiểu nhiều trong tương lai.
1.2.3. Truy vấn cửa sổ trượt
Một kỹ thuật để tạo ra một trả lời xấp xỉ cho một truy vấn luồng liên tục
là đánh giá truy vấn đó không theo toàn bộ lịch sử của các luồng dữ liệu, mà
chỉ qua các cửa sổ trượt trên dữ liệu gần đây của luồng dữ liệu. Ví dụ: Chỉ dữ
liệu trong tuần cuối cùng được sử dụng để tạo ra câu trả lời, còn dữ liệu cũ
hơn sẽ bị bỏ qua. Áp dụng cửa sổ trượt cho dữ liệu luồng là một phương pháp
tự nhiên cho xấp xỉ. Ngữ nghĩa rõ ràng và dễ hiểu giúp người dùng có thể
hiểu những gì đưa ra trong câu trả lời truy vấn gần đúng. Vì nguy cơ xảy ra
lựa chọn ngẫu nhiên câu trả lời truy vấn xấu là không có. Quan trọng nhất, kỹ
thuật này đưa ra những dữ liệu gần đây nhất, mà đa số những ứng dụng quan
trọng trong thực tế phù hợp với dữ liệu cũ. Trong thực tế, đối với nhiều ứng
dụng như vậy, cửa sổ trượt có thể không phải là một kỹ thuật truy vấn xấp xỉ
do tính không khả thi của máy tính trên tất cả lịch sử các dữ liệu, mà là một
phần của ngữ nghĩa truy vấn bày tỏ rõ ràng như một phần của các truy vấn
người dùng.
Có nhiều vấn đề cần nghiên cứu trong việc sử dụng cửa sổ trượt trên dữ
liệu luồng. Để bắt đầu, có một vấn đề cơ bản, cách chúng ta định nghĩa dấu

thời gian qua luồng để tạo thuận lợi cho việc sử dụng các cửa sổ. Mở rộng
SQL hoặc đại số quan hệ để kết hợp kỹ thuật cửa sổ là một thách thức. Trong


18

trường hợp cửa sổ trượt là đủ lớn để cho toàn bộ nội dung của cửa sổ chứa
trong bộ nhớ đệm, cũng có những thách thức trong việc thiết kế các thuật toán
có thể cung cấp câu trả lời gần đúng chỉ sử dụng bộ nhớ có sẵn.
Kỹ thuật cửa sổ trượt là một chuỗi các khung dữ liệu liền kề nhau được
phát đi mà chưa có hồi đáp. Khi nhận xong các khung dữ liệu trong một cửa
sổ, đầu thu sẽ dịch chuyển hay “trượt” cửa sổ này lên một đơn vị để nhận tiếp
các khung dữ liệu trong cửa sổ tiếp theo. Vì vậy, người ta gọi kỹ thuật này là
kỹ thuật cửa sổ trượt. Cả đầu phát và đầu thu đều sử dụng cửa sổ trượt khi
truyền dữ liệu, cửa sổ trượt ở đầu phát gọi là cửa sổ truyền (Sending Window)
và cửa sổ trượt ở đầu thu gọi là cửa sổ thu (Receiving Window).
Trong trường hợp tổng quát, cả hai cửa sổ không nhất thiết phải có
cùng chung giá trị cạnh trên và cạnh dưới trong cùng một thời điểm cũng như
không nhất thiết phải có chung kích thước. Các số thứ tự trong cửa sổ truyền
cho biết số khung được gửi đi nhưng chưa có phúc đáp. Do các khung này có
thể bị thất lạc hoặc bị hư hỏng trong quá trình truyền nên chúng sẽ được lưu
vào bộ nhớ của đầu phát để có thể truyền lặp lại khi cần thiết. Như vậy, nếu
kích thước của lớn nhất của khung là n thì nó cũng phải cần ít nhất n vùng
đệm để lưu n khung khi chưa có hồi đáp. Còn ở bên nhận, với kích thước cửa
sổ là hữu hạn nên khi số lượng khung đến vượt quá giá trị cửa sổ thì cách đơn
giản và thông dụng nhất là hủy các khung này và truyền lặp lại. Khung đến có
số thứ tự trùng với cạnh dưới của cửa sổ nhận sẽ được chấp nhận, dữ liệu của
gói được chuyển lên lớp mạng và phúc đáp được tạo ra đồng thời cửa sổ dịch
lên một đơn vị. Cửa sổ nhận khác với cửa sổ phát, luôn luôn không đổi về giá
trị. Trong quá trình này, đầu nhận luôn luôn phải nhớ rằng nó phải nhận các

khung theo đúng thứ tự mà đầu phát truyền lên kênh.
1.2.4. Truy vấn khối
Một hàm truy vấn khối là một hàm truy vấn chỉ có thể tạo ra kết quả
khi nó có toàn bộ giá trị đầu vào. Sắp xếp là một ví dụ của hàm khối, tương tự
các hàm SUM, COUNT, MIN, MAX và AVG. Không giống như truy vấn


×