Báo Cáo Big Data (39-47)

You might also like

You are on page 1of 7

Xử lý truy vấn trên dòng dữ liệu(tr39)

◼ Giống như cơ sở dữ liệu liên kết, nhưng có một số điểm khác biệt:

 Truy vấn liên tục: được đăng ký vào hệ thống và luôn luôn hoạt động.
Trong hệ quản trị cơ sở dữ liệu truy vấn trên dòng dữ liệu, truy vấn được
gọi là "liên tục" vì chúng được đăng ký và duy trì trong hệ thống để chạy
liên tục theo thời gian. Điều này khác biệt so với mô hình liên kết, nơi
truy vấn thường được thực thi chỉ khi được yêu cầu
 Dữ liệu được đẩy thông qua kế hoạch truy vấn, không phải được truy
xuất.
Trong hệ thống này, dữ liệu không được rút (pull) mà được đẩy (push)
qua kế hoạch truy vấn. Điều này có nghĩa là khi có dữ liệu mới xuất hiện,
hệ thống tự động đẩy dữ liệu đó qua các bước của kế hoạch truy vấn để
thực hiện các thao tác xử lý cần thiết. Trong mô hình truy vấn liên tục,
quá trình này liên tục xảy ra mà không cần phải chờ đợi truy vấn được
khởi chạy từ bên ngoài.

◼ Kế hoạch truy vấn dòng:

Dòng dữ liệu
Dòng dữ liệu Hoạt động

Dòng dữ liệu
Hoạt động
Nguồn Dòng dữ liệu Dòng dữ liệu
dữ liệu

Hoạt động
Đầu
Dòng dữ liệu ra

Nguồn
dữ liệu Dòng dữ liệu
Hoạt động
Vấn đề xử lý truy vấn(tr40)

◼ Thực thi liên tục

❑ Mỗi khi có dữ liệu mới xuất hiện, hệ thống xử lý truy vấn liên tục sẽ ngay
lập tức xử lý nó. Điều này giúp đảm bảo rằng mọi sự kiện mới được xử lý ngay
lập tức sau khi chúng được hệ thống nhận diện
❑ Ví dụ: Apache Storm, Heron (các công nghệ xử lý dữ liệu liên tục)

◼ Thực thi theo cửa sổ thời gian

❑ Dữ liệu được nhóm lại thành các phần, và sau đó, cả nhóm này sẽ được xử
lý như một đơn vị. Các hệ thống xử lý dữ liệu theo cửa sổ thời gian thường sử
dụng kỹ thuật này để xử lý dữ liệu theo từng đợt (batch) thời gian cố định
❑ Ví dụ: Aurora, STREAM, Spark Streaming (các hệ thống xử lý dữ liệu
theo cửa sổ thời gian)

◼ Nhiều cơ hội cho tối ưu hóa đa truy vấn

❑ Ví dụ: Dễ dàng xác định các kế hoạch con được chia sẻ (cơ hội nhiều hơn
cho việc tối ưu hóa đồng thời nhiều truy vấn). Do truy vấn liên tục được biết
trước, hệ thống có nhiều cơ hội tối ưu hóa hiệu suất. Có thể tổng hợp các truy
vấn cho các khoảng thời gian khác nhau hoặc với các cách trượt khác nhau. Hơn
nữa, có khả năng chia sẻ trạng thái và tính toán giữa các truy vấn, tăng cường
khả năng tối ưu hóa đồng thời nhiều truy vấn.

Thực thi truy vấn theo cửa sổ thời gian (tr41)

◼ Quản lý hai sự kiện cần được thực hiện


❑ Sự kiện xuất hiện (Arrivals)

❑ Sự kiện hết hạn (Expirations)


Trong quá trình xử lý dữ liệu dòng, có hai sự kiện chính cần được quản lý là sự
kiện xuất hiện (Arrivals) và sự kiện hết hạn (Expirations). Sự kiện xuất hiện là
khi dữ liệu mới được thêm vào hệ thống, trong khi sự kiện hết hạn xảy ra khi
một phần của dữ liệu trở nên không còn hiệu lực hoặc quá thời gian.

◼ Các hành động của hệ thống phụ thuộc vào các toán tử

❑ Hệ thống thực hiện các hành động cụ thể dựa trên các toán tử được áp
dụng. Ví dụ, khi thực hiện phép Join, hệ thống tạo ra kết quả mới bằng cách kết
hợp dữ liệu từ các nguồn khác nhau. Ngược lại, toán tử Negation có thể loại bỏ
kết quả đã có trước đó.

◼ Việc di chuyển cửa sổ cũng ảnh hưởng đến kết quả

❑ Khi cửa sổ thời gian di chuyển, một số mục trong cửa sổ di chuyển ra
khỏi vùng xử lý. Điều này đặt ra câu hỏi về việc xử lý kết quả liên quan. Nếu
quá trình di chuyển là đơn điệu, tức là không có thay đổi quan trọng, hệ thống
có thể tiếp tục mà không cần can thiệp. Tuy nhiên, nếu không đơn điệu, có hai
lựa chọn:

> Tiếp cận trực tiếp : Xử lý dữ liệu theo cách trực tiếp và tự động điều
chỉnh để đáp ứng thay đổi vị trí của cửa sổ.

> Tiếp cận bản ghi bị động (Negative tuple approach) : Loại bỏ các kết
quả liên quan đến dữ liệu bị loại bỏ để giữ cho hệ thống đồng bộ.
Quản lý tải(tr42)

◼ Tốc độ xuất hiện của dữ liệu dòng > khả năng xử lý

Tốc độ xuất hiện của dữ liệu dòng lớn hơn khả năng xử lý của hệ thống.

◼ Giảm tải
Giảm tải (load shedding) là một chiến lược để giảm tải hệ thống khi nó không
thể xử lý hết được lượng dữ liệu đến. Có hai chiến lược phổ biến cho load
shedding:
❑ Ngẫu nhiên
Chọn ngẫu nhiên một số dữ liệu để loại bỏ.
❑ Ngữ nghĩa
Dựa trên ý nghĩa của dữ liệu, giữ lại hoặc loại bỏ dữ liệu để đảm bảo rằng dữ
liệu quan trọng được xử lý đầu tiên.

◼ Cắt dữ liệu sớm

❑ Tất cả các toán tử tuyến tính sẽ được hưởng lợi

❑ Độ chính xác có thể bị ảnh hưởng tiêu cực

◼ Cắt dữ liệu muộn

❑ Có thể không giảm tải hệ thống nhiều

❑ Cho phép đánh giá các kế hoạch con được chia sẻ


=>tạo cơ hội cho tối ưu hóa hiệu suất trong các phần chia sẻ của hệ thống.

Xử lý không theo thứ tự(43)

◼ Giả định: sự xuất hiện của dữ liệu được sắp xếp theo dấu thời gian

Điều này ngụ ý rằng dữ liệu mới sẽ xuất hiện theo thứ tự thời gian, tức là các sự
kiện mới được tạo ra sẽ có dấu thời gian (timestamp) tăng dần.

◼ Có thể không đúng

❑ Thứ tự xuất hiện có thể không phản ánh thứ tự tạo ra


điều này có thể xảy ra khi sự kiện được sinh ra không theo thứ tự.
❑ Sự xuất hiện muộn → không có nhiều nữa hoặc chỉ là muộn một chút?
Câu hỏi đặt ra là nếu có sự kiện xuất hiện muộn, liệu có thêm nhiều sự kiện mới
hơn nữa không, hoặc chỉ là một số sự kiện muộn một chút.
❑ Nhiều nguồn
Dữ liệu có thể đến từ nhiều nguồn khác nhau, điều này tăng khả năng đa dạng
và phức tạp của dữ liệu xuất hiện.

◼ Các phương pháp

❑ Khoảng trễ tích hợp sẵn


Sử dụng một khoảng thời gian chờ đợi tích hợp sẵn để giải quyết sự chênh lệch
giữa thứ tự xuất hiện và thứ tự tạo ra.
❑ Dấu câu (Punctuations)
Sử dụng các dấu câu để đánh dấu sự kiện quan trọng hoặc các điểm thời gian
quan trọng, giúp đồng bộ và hiểu được thứ tự dữ liệu.

Tối ưu hóa đa truy vấn(44)

◼ Nhiều cơ hội hơn vì các truy vấn liên tục được biết trước

❑ Tổng hợp truy vấn qua các độ dài cửa sổ khác nhau hoặc với các khoảng
trượt khác nhau
Chúng ta có khả năng tổng hợp các truy vấn liên tục theo các độ dài cửa sổ khác
nhau hoặc với các khoảng trượt khác nhau. Điều này mở ra khả năng tối ưu hóa
hiệu suất và tính toán theo nhiều cách khác nhau, tùy thuộc vào yêu cầu cụ thể
của hệ thống hoặc ứng dụng.
❑ Có thể chia sẻ trạng thái và tính toán (phổ biến)
Chia sẻ trạng thái và tính toán giữa các truy vấn liên tục là một phương pháp
phổ biến. Điều này giúp giảm tải công việc tính toán và lưu trữ, tăng hiệu suất
và khả năng mở rộng của hệ thống cơ sở dữ liệu phân tán.
Xử lý dữ liệu dòng song song(45)

1) Chia nhỏ dòng dữ liệu đầu vào thành các phần


Trong bối cảnh xử lý dữ liệu dòng, quá trình này đề cập đến việc tách dòng dữ
liệu đầu vào thành các phần nhỏ hơn. Mục tiêu là phân chia dữ liệu thành các
phần mà mỗi phần có thể được xử lý độc lập, giúp tối ưu hóa hiệu suất và khả
năng mở rộng của hệ thống
2) Thực hiện thao tác trên từng phần
Một khi dữ liệu đã được chia nhỏ, các thao tác xử lý dữ liệu, chẳng hạn như lọc,
tổng hợp, hay biến đổi, được thực hiện độc lập trên từng phần. Điều này giúp
tăng cường song song hóa và hiệu suất của hệ thống, vì nó có thể xử lý nhiều
phần cùng một lúc.
3) (Tùy chọn) Tổng hợp kết quả từ nhiều máy
Nếu dữ liệu được chia nhỏ và xử lý trên nhiều máy, bước cuối cùng có thể là
tổng hợp kết quả từ các máy khác nhau. Điều này đặc biệt quan trọng khi có sự
phân tán của dữ liệu và tính toán. Quá trình tổng hợp giúp kết hợp các kết quả
từ các phần khác nhau để tạo ra kết quả cuối cùng hoặc một bức tranh toàn diện
của dữ liệu đã xử lý.

Chia nhỏ dòng dữ liệu(46)


 Chia nhỏ ngẫu nhiên(xoay vòng)
 Chia nhỏ theo hàm Hash

Sơ đồ truy vấn dòng song song(47)


Hành động 1

W1
Hành động 4
P A
W2
P
W8
W3
P A

You might also like