MỤC LỤC
DANH MỤC THUẬT NGỮ.....................................................................................................................3
DANH MỤC HÌNH VẼ ............................................................................................................................5
DANH MỤC BẢNG .................................................................................................................................6
CHƢƠNG 1: ĐẶT VẤN ĐỀ ....................................................................................................................7
1.1.
Phân tích hiện trạng...................................................................................................................7
1.2.
Mục đích của đề tài ...................................................................................................................8
1.3.
Bố cục luận văn .........................................................................................................................9
CHƢƠNG 2: TỔNG QUAN VỀ HỆ TÍCH HỢP THÔNG TIN CÁ NHÂN .........................................10
2.1.
Kiến trúc ETL .........................................................................................................................10
2.2.
Hƣớng tới một hệ tích hợp thông tin cá nhân..........................................................................13
2.2.1.
Biểu diễn ngƣời dùng ......................................................................................................13
2.2.2.
Hệ tích hợp thông tin cá nhân .........................................................................................17
2.3.
Thảo luận.................................................................................................................................18
2.3.1.
Ánh xạ dữ liệu .................................................................................................................18
2.3.2.
Tích hợp dữ liệu vào đích................................................................................................21
CHƢƠNG 3: CÁC KỸ THUẬT GIẢI QUYẾT BÀI TOÁN .................................................................23
3.1.
Ngôn ngữ luật.........................................................................................................................23
3.2.
Chuyển đổi dữ liệu ..................................................................................................................29
3.3.
Tải dữ liệu vào đích.................................................................................................................33
3.4.1.
Tính độ tƣơng quan giữa hai ngƣời dùng ........................................................................35
3.4.2.
Giải thuật xác định ngƣời dùng và giải quyết xung đột ..................................................39
CHƢƠNG 4: CÀI ĐẶT VÀ THỬ NGHIỆM .........................................................................................43
Môi trƣờng cài đặt ...................................................................................................................43
4.1
4.1.1
Chuẩn bị dữ liệu nguồn ...................................................................................................43
4.4.2
Xây dựng cấu hình cho hệ tích hợp .................................................................................47
4.2
Thử nghiệm và đánh giá ..........................................................................................................52
CHƢƠNG 5: KẾT LUẬN ......................................................................................................................55
5.1
Các kết quả đạt đƣợc ...............................................................................................................55
5.2
Định hƣớng phát triển .............................................................................................................56
TÀI LIỆU THAM KHẢO.......................................................................................................................57
PHỤ LỤC................................................................................................................................................58
2
DANH MỤC THUẬT NGỮ
Thuật ngữ tiếng Anh
ETL
(Extract – Transform –
Nghĩa tiếng Việt
ETL là quá trình lấy, trích dữ liệu
Trích chọn –
Chuyển đổi – Tải
Load)
Source
Nguồn
Source Schema
Lƣợc đồ nguồn
Des (Destination)
Đích
Target schema
Lƣợc đồ đích
Extract
Bóc tách
Validate before
transform
Prepare before
transform
Transform
Validate before load
Prepare before load
Chú giải
nguồn, kiểm tra, biến đổi dữ liệu để
thực hiện việc lƣu trữ dữ liệu vào đích
Cơ sở dữ liệu nguồn
Lƣợc đồ nguồn
Cơ sở dữ liệu đích
Lƣợc đồ đích
Quá trình trích chọn dữ liệu
Kiểm tra dữ liệu
Kiểm tra tính hợp lệ của dữ liệu, loại
hợp lệ trƣớc khi
bỏ dữ liệu thô trƣớc khi đƣa vào
chuyển đổi
chuyển đổi
Chuẩn bị trƣớc khi Chuẩn bị dữ liệu trƣớc khi đƣa vào
chuyển đổi
chuyển đổi
Chuyển đổi dữ liệu Quá trình biến đổi dữ liệu
Kiểm tra dữ liệu
Kiểm tra tính hợp lệ của dữ liệu, loại
hợp lệ trƣớc khi tải bỏ dữ liệu thô trƣớc khi tải vào đích
Chuẩn bị trƣớc khi Chuẩn bị dữ liệu trƣớc khi tải vào đích
3
tải dữ liệu
Load
DB
Tải dữ liệu vào đích
Tải dữ liệu
Cơ sở dữ liệu
Cơ sở dữ liệu
(Database)
Person DB
MongoDB
Cơ sở dữ liệu
Cơ sở dữ liệu
Cơ sở dữ liệu Mongo
Mongo
SK (Strong Key)
Khóa mạnh
WK (Weak Key)
Khóa yếu
NF (Normal Field)
Cơ sở dữ liệu ngƣời dùng
ngƣời dùng
Khóa có độ ảnh hƣởng mạnh nhất
Khóa có độ ảnh hƣởng thấp hơn
Trƣờng bình
Trƣờng thông tin bình thƣờng
thƣờng
Trusted-index
Chỉ số tin tƣởng
Weight
Trọng số
Đánh giá mức độ tin tƣởng của nguồn
Mức độ quan trọng của trƣờng
4
DANH MỤC HÌNH VẼ
Hình 1: Kiến trúc hệ tích hợp dữ liệu............................................................................. 11
Hình 2: Mô hình ETL cho hệ tích hợp thông tin cá nhân .............................................. 17
Hình 3: Mô hình ánh xạ ................................................................................................. 20
Hình 4: Luồng xác định ngƣời dùng .............................................................................. 34
Hình 5 - Cấu trúc dữ liệu thu thập từ Rồng Bay ............................................................ 43
Hình 6 - Cấu trúc dữ liệu thu thập từ Vật Giá ................................................................ 44
Hình 7 - Cấu trúc dữ liệu thu thập từ Én Bạc................................................................. 45
Hình 8 - Cấu trúc dữ liệu thu thập từ Violet .................................................................. 46
Hình 9- Cấu trúc dữ liệu thu thập từ Tìm việc nhanh .................................................... 47
Hình 10 - Giao diện chƣơng trình tích hợp - Loader ..................................................... 52
Hình 11 - Đồ thị tƣơng quan giữa số lƣợng record ở đích và thời gian thực hiện ......... 54
5
DANH MỤC BẢNG
Bảng 1 - Kết quả chạy chƣơng trình khi không có xung đột dữ liệu ............................. 53
Bảng 2 - Kết quả chạy chƣơng trình khi có xung đột dữ liệu ........................................ 53
Bảng 3 - Bảng trusted-index các nguồn ......................................................................... 58
Bảng 4 - Bảng trọng số các trƣờng dữ liệu .................................................................... 59
6
CHƢƠNG 1: ĐẶT VẤN ĐỀ
1.1.
Phân tích hiện trạng
Ngày nay cùng với sự phát triển của Internet, các trang web về cộng đồng xuất hiện
ngày càng nhiều. Chúng ta đã biết đến một số trang web cộng động tiêu biểu trên thế
giới nhƣ các mạng xã hội facebook, linkln... Ở Việt Nam, web cộng đồng còn đƣợc thể
hiện trên các trang rao vặt về thƣơng mại nhƣ Vật Giá, Rồng Bay, Én Bạc… Một thể
hiện khác của web cộng đồng là các diễn đàn, ví dụ diễn đàn về giáo dục nhƣ Violet,
Sinh Viên IT... Trên các trang web cộng đồng đó, xuất hiện rất nhiều thông tin về cá
nhân ngƣời dùng. Ngƣời dùng ở đây đƣợc hiểu là những ngƣời sử dụng hay tham gia
vào các trang web đó. Ví dụ ngƣời dùng trên trang Rồng Bay ( />công khai một số thông tin nhƣ email, họ tên. Ngƣời dùng trên trang Vật Giá
( ngoài các thông tin nhƣ email, họ tên, có thể công khai một
số thông tin khác nhƣ giới tính, tỉnh, nick yahoo, skype… Một ngƣời có thể khai báo
thông tin trên nhiều trang nhƣng không nhất thiết là họ phải khai báo tất cả các thông
tin cá nhân trên tất cả các trang web khác nhau. Mỗi trang có thể quan tâm đến một vài
thông tin nào đó của ngƣời dùng, các thông tin của ngƣời dùng trên các trang có thể
trùng lặp hoặc bổ sung cho nhau. Cho nên, nếu chúng ta có thể tổng hợp thông tin
ngƣời dùng trên các trang này lại thì sẽ thu đƣợc thông tin đầy đủ hơn về ngƣời dùng.
Với nhiều tổ chức, doanh nghiệp, nhu cầu thu thập thông tin cá nhân ngƣời dùng mạng
xuất hiện ngày càng nhiều. Nhiều doanh nghiệp cần thu thập, tổng hợp thông tin ngƣời
dùng mạng để phục vụ mục đích thƣơng mại cụ thể. Ví dụ nhƣ thống kê, phân loại đối
tƣợng ngƣời dùng theo giới tính, độ tuổi hay ở một khu vực cụ thể để đƣa ra chiến lƣợc
kinh doanh phù hợp. Bên cạnh đó, một số doanh nghiệp mong muốn thu thập thông tin
về ngƣời dùng trên các trang web khác để bổ sung các thông tin mà trang web của họ
không có, nhằm mục đích có đƣợc thông tin tổng hợp về ngƣời dùng để từ đó có thể
đƣa ra các thông tin đến từng đối tƣợng ngƣời dùng một cách phù hợp, hiệu quả. Các
7
cơ quản quản lý nhà nƣớc hay các tổ chức xã hội cũng có thể có các nhu cầu xây dựng
các báo cáo liên quan đến số lƣợng lớn ngƣời dùng mạng. Tuy nhiên, việc tìm kiếm
đƣợc các thông tin phù hợp và có giá trị về ngƣời dùng mạng sẽ tốn kém thời gian do
dữ liệu nằm phân tán trên mạng và không đƣợc sắp xếp, phân loại nhƣ mong muốn. Từ
đó nảy sinh nhu cầu tích hợp, hợp nhất các dữ liệu này vào một nguồn chung chứa toàn
bộ thông tin ngƣời dùng để tiện quản lý cũng nhƣ phục vụ cho các nhu cầu khai thác
thông tin ngƣời dùng phát sinh hàng ngày.
Tích hợp thông tin ngƣời dùng chính là việc kết hợp dữ liệu ngƣời dùng nằm ở nhiều
nguồn khác nhau và cung cấp cho chúng ta cái nhìn tổng thể về thông tin cá nhân
ngƣời dùng. Quá trình này càng trở nên khó khăn bởi dữ liệu ngƣời dùng trên các
nguồn thƣờng không đồng nhất về cấu trúc cũng nhƣ giá trị. Thêm nữa, dữ liệu không
phải lúc nào cũng sạch và đƣợc làm sạch nên ảnh hƣởng đến chất lƣợng của quá trình
tích hợp. Toàn bộ quá trình xử lý phải diễn ra trong một cửa sổ thời gian xác định nên
ảnh hƣởng đến hiệu năng khi tích hợp thông tin. Sự phát triển của các nguồn dữ liệu
cũng gây khó khăn khi tích hợp và lƣu trữ tại đích. Từ đó, bài toán đặt ra là làm thế nào
để tích hợp dữ thông tin cá nhân ngƣời dùng vào trong một cơ sở dữ liệu duy nhất
mang đầy đủ thông tin ngƣời dùng để từ đó có thể xây dựng các dịch vụ web cho phép
kết xuất các dữ liệu thống kê.
1.2.
Mục đích của đề tài
Mục đích của đề tài là tích hợp thông tin ngƣời dùng đƣợc trích rút từ các trang web
cộng đồng vào một cơ sở dữ liệu ngƣời dùng chung. Việc trích rút thông tin đã đƣợc
thực hiện ngoài phạm vi luận văn này.
Thông tin đã đƣợc trích rút từ các nguồn trên web, lƣu vào các cơ sở dữ liệu nguồn, và
nhiệm vụ của đề tài là tích hợp các cơ sở dữ liệu nguồn này vào một cơ sở dữ liệu
chung mang đầy đủ thông tin về ngƣời dùng nhất.
8
Trong quá trình tích hợp, các nguồn có thể cung cấp các thông tin trùng lặp, dƣ thừa
hay các thông tin bổ sung cho nhau. Vì vậy cơ sở dữ liệu chung phải linh hoạt trong
lƣu trữ và có khả năng thêm các thuộc tính.
1.3.
Bố cục luận văn
Phần tiếp theo của luận văn đƣợc tổ chức nhƣ sau:
Chƣơng 2: Tổng quan về hệ tích hợp thông tin cá nhân
Chƣơng này trình bày sơ lƣợc lý thuyết tích hợp dữ liệu và tổng quan về ETL. Từ đó
phân tích và đƣa ra mô hình tổng quan của hệ tích hợp thông tin cá nhân, chi tiết hoạt
động của nó cũng nhƣ các khía cạnh liên quan để hiểu rõ hơn bài toán đề ra.
Chƣơng 3: Các kỹ thuật giải quyết bài toán
Trình bày chi tiết các kỹ thuật giải quyết những vấn đề đã nêu ở chƣơng trƣớc.
Chƣơng 4: Cài đặt và thử nghiệm
Chƣơng này trình bày chi tiết cách cài đặt hệ thống, các bƣớc xây dựng công cụ tích
hợp dữ liệu. Chú tới sẽ trình bày một số kết quả thu đƣợc từ thử nghiệm thực tế và rút
ra một số đánh giá cho hệ thống.
Chƣơng 5: Kết luận
Trình bày tóm lƣợc kết quả đồ án đã đạt đƣợc đồng thời đƣa ra phƣơng hƣớng phát
triển cho đề tài.
9
CHƢƠNG 2: TỔNG QUAN VỀ HỆ TÍCH HỢP THÔNG TIN CÁ
NHÂN
Tích hợp dữ liệu là việc kết hợp dữ liệu từ nhiều nguồn khác nhau và cung cấp cho
ngƣời dùng cái nhìn thống nhất về dữ liệu. Hai hƣớng tiếp cận độc lập đƣợc biết đến
trong hệ tích hợp dữ liệu là khung nhìn ảo (virtual) và kho dữ liệu (materialized).
Trong cách tiếp cận khung nhìn ảo, hệ tích hợp dữ liệu truy cập đến nguồn mỗi khi một
truy vấn đƣợc thực hiện. Nó hoạt động nhƣ một giao diện giữa ngƣời sử dụng và các
nguồn để có một sự biểu diễn ảo của nội dung của dữ liệu bên dƣới tại các nguồn.
Trong khi đó, theo cách tiếp cận kho dữ liệu, dữ liệu các nguồn đƣợc tổng hợp tại một
nơi gọi là kho dữ liệu, truy vấn đƣợc thực hiện mà không cần truy cập vào các cơ sở dữ
liệu nguồn. Do đó, truy vấn thƣờng hiệu quả hơn. Theo yêu cầu của bài toán đặt ra,
cách tiếp cận kho dữ liệu là phù hợp hơn. Phƣơng pháp phổ biến trong các hệ thống xử
lý về tích hợp dữ liệu theo cách tiếp cận kho dữ liệu đó là ETL. Tiếp theo chúng ta sẽ
đi vào tìm hiểu kiến trúc tổng quan về ETL.
2.1. Kiến trúc ETL
ETL (viết tắt của Extract – Transform – Load) là quá trình lấy, trích dữ liệu nguồn,
kiểm tra, biến đổi dữ liệu để thực hiện việc lƣu trữ dữ liệu vào đích [4]. Dƣới đây là
kiến trúc ETL tổng quát:
10
Hình 1: Kiến trúc hệ tích hợp dữ liệu
Hình 1 trình bày các thành phần cơ bản của một hệ tích hợp dữ liệu, trong đó:
Source (Nguồn): Các cơ sở dữ liệu cục bộ.
ETL (Extract - Transform – Load / Trích chọn – Chuyển đổi – Tải): Thực hiện
kết nối tới nguồn, đọc dữ liệu và chuyển đổi dữ liệu và tải dữ liệu vào đích.
Stage (Bảng tạm): Dùng để lƣu thông tin tạm thời.
DQ (Data Quality / Chất lƣợng dữ liệu): Bộ kiểm tra chất lƣợng dữ liệu.
Destination (Đích): Cơ sở dữ liệu đích.
Control + Audit (Điều khiển + Kiểm soát): Bộ điều khiển và kiểm soát dữ liệu.
Metadata (Siêu dữ liệu): Bộ huấn luyện dữ liệu.
Dữ liệu từ các nguồn khác nhau đƣợc trích chọn, biến đổi và lƣu tạm thời vào các bảng
tạm qua quá trình ETL. Sau đó, dữ liệu đƣợc đƣa vào bộ kiểm tra chất lƣợng dữ liệu.
Dữ liệu đạt tiêu chuẩn sẽ đƣợc đƣa vào đích. Dữ liệu không đạt tiêu chuẩn sẽ đƣợc đẩy
vào cơ sở dữ liệu của Bộ kiểm tra chất lƣợng để đƣợc ghi nhận xử lý và sau đó chuẩn
hóa tại nguồn. Dữ liệu này cũng có thể đƣợc tự động chuẩn hóa hoặc đƣợc cho phép
11
trong một giới hạn chấp nhận nào đó. Trong quá trình ETL, dữ liệu đƣợc kiểm soát bởi
bộ Điều khiển + Kiểm soát dựa trên các kết luận, các luật và đƣợc lƣu trữ logic trong
metadata. Metadata là cơ sở dữ liệu chứa thông tin về cấu trúc dữ liệu, ý nghĩa của dữ
liệu, sử dụng dữ liệu, các luật kiểm tra chất lƣợng dữ liệu và các thông tin khác về dữ
liệu.
Quá trình tích hợp bao gồm 3 bƣớc đó là: trích chọn dữ liệu (Extract), chuyển đổi dữ
liệu (Transform) và tải dữ liệu (Load).
Bƣớc 1: Trích chọn. Mục đích của trích chọn là khai thác, thu thập hoặc trích xuất dữ
liệu từ những nguồn dữ liệu. Trong bƣớc này, chúng ta cũng sẽ thực hiện luôn thao tác
lọc dữ liệu, loại bỏ, giảm bớt các bản ghi lỗi để giảm thiểu cho quá trình chuyển đổi.
Độ phức tạp của dữ liệu nguồn cũng nhƣ sự phong phú, đa dạng về dữ liệu muốn thu
thập sẽ ảnh hƣởng trực tiếp tới độ phức tạp của quá trình trích chọn dữ liệu.
Bƣớc 2: Chuyển đổi. Dữ liệu nguồn đƣợc lƣu trữ dƣới các định dạng khác nhau tùy
vào mục đích, cách thức sử dụng tại mỗi nguồn. Đây là lý do vì sao chúng ta phải
chuyển đổi dữ liệu thu thập đƣợc sang một định dạng thích hợp và đồng nhất trƣớc khi
thực hiện tải vào cơ sở dữ liệu đích. Để chuyển đổi dữ liệu cần phải thực hiện ánh xạ
dữ liệu giữa nguồn và đích. Ánh xạ liệu chính là việc xác định xem thuộc tính nào ở
nguồn tƣơng ứng với một thuộc tính ở đích. Đồng thời bƣớc này cũng thực hiện làm
sạch, loại bỏ các bản ghi lỗi để chuẩn bị dữ liệu cho bƣớc tải dữ liệu sau đó. Các bản
ghi lỗi thƣờng xuất hiện trong các trƣờng hợp cơ sở dữ liệu nguồn thiếu những trƣờng
cần thiết mà cơ sở dữ liệu đích yêu cầu, hoặc các bản ghi từ dữ liệu nguồn không đủ
thông tin. Số lƣợng thao tác chuyển đổi phụ thuộc vào định dạng dữ liệu nguồn và dữ
liệu đích. Nếu hai định dạng sử dụng các tiêu chuẩn giống hoặc gần giống nhau, thì số
lƣợng thao tác chuyển đổi sẽ giảm đi đáng kể; hoặc ngƣợc lại số lƣợng thao tác sẽ trở
nên rất lớn nếu định dạng của nguồn và đích là khác nhau.
12
Bƣớc 3: Tải. Bƣớc này liên quan đến việc tải dữ liệu đã qua trích chọn và chuyển đổi
vào một cơ sở dữ liệu đích. Một số quy trình tải vào thực chất là chèn thêm bản ghi
(record) mới hoặc cập nhật thêm thông tin cho một bản ghi nào đó.
Trong hệ tích hợp dữ liệu, một vấn đề nổi lên đó là cần phải phân tích định dạng dữ
liệu để đƣa ra cách biểu diễn dữ liệu ở đích một cách hợp lý. Biểu diễn dữ liệu đích ảnh
hƣởng đến việc lƣu trữ cũng nhƣ quá trình chuyển đổi và tải dữ liệu.
2.2. Hướng tới một hệ tích hợp thông tin cá nhân
2.2.1.
Biểu diễn người dùng
Do bài toán của ta là tích hợp dữ liệu ngƣời dùng từ nhiều nguồn vào một cơ sở dữ liệu
chung gọi là dữ liệu đích, cho nên việc phân tích để biểu diễn dữ liệu đích về một định
dạng chung là rất quan trọng, cần thiết phải làm.
Dữ liệu ở đây đƣợc hiểu là thông tin cá nhân của ngƣời dùng. Có rất nhiều thông tin về
ngƣời dùng, ví dụ nhƣ số chứng minh thƣ nhân dân, họ tên, địa chỉ email, số hộ chiếu,
giới tính, tuổi… Một số thông tin chỉ thể hiện cho một ngƣời duy nhất, ví dụ nhƣ số
chứng minh thƣ nhân dân hay số hộ chiếu. Nếu thông tin ngƣời dùng trên hai nguồn có
cùng một số chứng minh thƣ thì nhất định đó là hai thể hiện của cùng một ngƣời (giả
thiết dữ liệu có tính nhất quán, không có thay đổi về dữ liệu nhƣ trong trƣờng hợp cấp
đổi số chứng minh thƣ hoặc số hộ chiếu khác). Từ một địa chỉ email cũng có thể nhận
biết ra một ngƣời dùng nhƣng một ngƣời lại có thể có nhiều email khác nhau. Do đó, từ
hai email khác nhau thì chƣa đủ cơ sở để đoán nhận đó là một hay hai ngƣời dùng. Các
giá trị khác nhƣ họ tên, giới tính, tuổi là các thông tin bình thƣờng, có thể xuất hiện ở
nhiều ngƣời khác nhau. Do đó, biểu diễn và phân loại dữ liệu là hết sức quan trọng, ảnh
hƣởng lớn đến bài toán đặt ra.
Biểu diễn dữ liệu bao gồm việc xác định tiêu chuẩn cho dữ liệu để định ra các thuộc
tính cần có cũng nhƣ tính chất, vai trò, vị trí của nó trong cơ sở dữ liệu đích. Xác định
13
xem thành phần nào là cần có, thành phần nào không cần thiết để có thể loại bỏ, thứ tự
ƣu tiên và độ lớn của bộ nhớ cho các thành phần cũng cần đƣợc xác định. Dữ liệu của
ngƣời dùng ở cơ sở dữ liệu đích sẽ đƣợc chia nhỏ thành các thuộc tính (hay trƣờng dữ
liệu) khác nhau với một quy chuẩn riêng xác định dựa trên tính duy nhất của giá trị
thuộc tính đối với ngƣời dùng. Dữ liệu đƣợc sắp xếp, phân loại theo từng nhóm thể
hiện mức độ phân biệt ngƣời dùng. Độ "mạnh" của dữ liệu càng lớn, khả năng phân
biệt ngƣời dùng càng cao. Từ đó, tập thuộc tính của một ngƣời dùng chia làm 3 loại:
Strong Key (SK)
Weak Key (WK)
Normal Field (NF)
Trong đó, SK là khóa mạnh. Nếu hai đối tƣợng thu thập đƣợc có cùng giá trị SK thì
chắc chắn đó là một ngƣời. Ví dụ một số SK nhƣ chứng minh thƣ nhân dân, mã số thuế
hay số hộ chiếu. WK là khóa yếu. Nếu hai đối tƣợng thu thập đƣợc có cùng giá trị WK
thì khẳng định là một ngƣời nhƣng một ngƣời lại có thể có nhiều giá trị khác nhau của
một WK. Ví dụ nhƣ email, số điện thoại, nick skype. NF là trƣờng bình thƣờng, không
có vai trò trong việc xác định cho một ngƣời dùng. Ví dụ nhƣ họ tên, quê quán, giới
tính, hay năm sinh.
Trong trƣờng hợp sử dụng dữ liệu trong tập SK để phân biệt ngƣời dùng với nhau, thì
mỗi ngƣời dùng sẽ có một giá trị nhất quán đối với thuộc tính trong tập SK. Mối quan
hệ giữa thuộc tính trong tập SK và ngƣời dùng là mối quan hệ Một - Một. Tức là một
ngƣời dùng chỉ có một giá trị thuộc tính duy nhất và từ một giá trị thuộc tính chỉ có thể
tìm ra một ngƣời dùng duy nhất tƣơng ứng với giá trị đó.
Trong khi một giá trị của thuộc tính thuộc tập SK có thể phân biệt một ngƣời dùng xác
định, thì đối với các thuộc tính thuộc tập WK, mức độ phân biệt ngƣời dùng là yếu
hơn. Hai đối tƣợng có WK giống nhau thì là một ngƣời. Giá trị WK khác nhau thì khả
năng cao là hai ngƣời khác nhau. Tuy nhiên trong một số trƣờng hợp một ngƣời có
14
nhiều giá trị cho một WK, khi đó mặc dù là hai giá trị WK khác nhau nhƣng vẫn có
khả năng là một ngƣời. Ví dụ nhƣ một email quy định cho một ngƣời, nhƣng một
ngƣời lại có thể có nhiều email khác nhau đƣợc lấy trên nhiều trang nguồn khác nhau.
Hay nhƣ số điện thoại cũng vậy, một số điện thoại thuộc về một ngƣời nhƣng ngƣời
đó lại có thể có nhiều hơn một số điện thoại.
NF là các thuộc tính thông thƣờng mà ngƣời dùng nào cũng có thể nhận giá trị đó. NF
sẽ bao gồm các trƣờng chứa các thông tin mang tính tổng quát riêng cho ngƣời dùng,
do đó mức độ phân biệt ngƣời dùng của NF là rất thấp. Giá trị của các thuộc tính thuộc
tập NF thƣờng giống nhau ở một số nhóm ngƣời sử dụng. Ví dụ cho thuộc tính thuộc
nhóm NF có thể là quê quán, giới tính, hay năm sinh.. những thuộc tính này thƣờng
xuất hiện ở nhiều đối tƣợng khác nhau.
Chúng ta đã sử dụng các thuộc tính trong các tập dữ liệu nói trên để đánh giá mức độ
phân biệt ngƣời dùng từ những giá trị của nó, vậy cũng cần có một giá trị để biểu diễn
mức độ đó của các thuộc tính. Ở đây, chúng ta dùng một trọng số gọi là w để biểu diễn
điều này. Trọng số w càng lớn, thì độ phân biệt ngƣời dùng của thuộc tính đó càng cao.
Và ngƣợc lại, nếu trọng số w nhỏ, thì ta khó có thể xác định đƣợc một ngƣời dùng cụ
thể từ giá trị của một thuộc tính. Thông thƣờng với trọng số w nhỏ, ta sẽ thu đƣợc một
tập gồm nhiều ngƣời dùng có chung giá trị của thuộc tính đó.
Theo định nghĩa trên, các thuộc tính có khả năng phân biệt ngƣời dùng càng cao thì giá
trị của trọng số w càng lớn, do vậy các giá trị w của SK lớn hơn w của WK rất nhiều và
w của WK lớn hơn w của NF rất nhiều và w của NF xấp xỉ 0.
Chúng ta đã có giá trị trọng số w để đánh giá mức độ của các thuộc tính. Tƣơng tự nhƣ
vậy, chúng ta cũng cần có thêm một chỉ số nhằm đánh giá mức độ tin tƣởng của vào độ
chính xác của dữ liệu trên website đó so với dữ liệu thực tế của ngƣời dùng. Trên thực
tế, một ngƣời dùng có thể tạo nhiều tài khoản có nội dung khác nhau tại nhiều website
khác nhau tùy thuộc vào mức độ sử dụng của chính ngƣời dùng với website đó. Ví dụ
15
nhƣ nếu thông tin kết quả học tập của một khóa học trong nhà trƣờng sẽ bao gồm các
dữ liệu gần nhƣ chính xác tuyệt đối, hơn so là với thông tin của ngƣời dùng tự khai báo
trên các trang mạng xã hội. Trọng số tin tƣởng ở đây chúng ta nhắc đến tạm gọi là
trọng số t – trusted-index. Giả thiết trọng số này đƣợc ngƣời tích hợp chỉ định trong
quá trình tích hợp.
Mặt khác, khi mức độ tin tƣởng của hai nguồn là nhƣ nhau, thời gian lƣu trữ (time)
cũng ảnh hƣởng tới việc tải dữ liệu. Dữ liệu mới hơn sẽ đƣợc ƣu tiên cao hơn.
Từ đặc tính của dữ liệu nhƣ trên, dựng lên cấu trúc của cơ sở dữ liệu đích:
Person = {SK1, SK2…SKn, WK1, WK2…WKm, NF1, NF2…NFk}
= {{SKn}, {WKm}, {NFk}}
Với SKi = {wi, ti, timei}
Trong đó:
wi: trọng số của trƣờng dữ liệu, đại diện cho độ “mạnh” của khả năng phân biệt
ngƣời dùng.
ti: chỉ số tin tƣởng của nguồn, đại diện cho độ chính xác của thông tin của
nguồn.
timei: thời gian I xuất hiện trong nguồn, cho biết mức độ cập nhật của dữ liệu
đang lƣu trữ.
Biểu diễn tƣơng tự với WK và NF:
WKi = {wi, ti, timei}
NFi = {wi, ti, timei}
16
2.2.2.
Hệ tích hợp thông tin cá nhân
Dựa trên kiến trúc ETL và những phân tích biểu diễn ngƣời dùng, chúng ta xây dựng
hệ tích hợp thông tin cá nhân với một vài biến đổi để phù hợp với bài toán đặt ra. Để
đơn giản hóa quá trình tích hợp, hệ thống đƣợc xây dựng theo mô hình nhƣ hình dƣới
đây:
Hình 2: Mô hình ETL cho hệ tích hợp thông tin cá nhân
Hình 2 mô tả các thành phần cấu thành nên hệ tích hợp và luồng hoạt động của nó. Mô
hình tích hợp bao gồm 7 thành phần đƣợc nhóm vào trên cơ sở mô hình ETL ở trên.
Thông tin đầu vào đƣợc lấy từ cơ sở dữ liệu nguồn (Source) và đƣợc đƣa qua một loạt
các thành phần xử lý nhƣ trong quá trình ETL để tải dữ liệu vào đích (Person DB). Chi
tiết các thành phần xử lý nhƣ sau:
Extract (E): Trích chọn dữ liệu
17
o Validate before transform: Xác thực dữ liệu đầu vào, loại bỏ phân loại
các dữ liệu không hợp lệ. Tạo ra những nguồn dữ liệu có độ chính xác
cao hơn cho quá trình chuyển đổi.
o Prepare before transform: Chuẩn bị dữ liệu - đƣa dữ liệu về đúng định
dạng tiêu chuẩn trƣớc khi chuyển sang quá trình tiếp theo – transform.
Transform (T): Chuyển đổi dữ liệu
o Transform: Thực hiện quá trình biến đổi dữ liệu từ nguồn đã thu thập
thành dạng tiêu chuẩn chúng ta cần.
o Validate before load: Xác thực, loại bỏ bớt dữ liệu không hợp lệ sau quá
trình chuyển đổi ở bƣớc trƣớc đó. Tránh trƣờng hợp dữ thừa các dữ liệu
lỗi xảy ra trong quá trình chuyển đổi.
o Prepare before load: Chuẩn bị dữ liệu cho quá trình load.
Load (L): Tải dữ liệu
o Load: Thực hiện tải dữ liệu vào cơ sở dữ liệu đích.
Các thao tác này lặp lại với những bộ dữ liệu khác nhau của ngƣời dùng trên các nguồn
khác nhau. Do đó, để quá trình tích hợp đƣợc linh hoạt trên các nguồn, ta đƣa thêm cấu
hình (config) vào cùng với cơ sở dữ liệu nguồn làm đầu vào cho xử lý bên trong tích
hợp. Mỗi nguồn sẽ cần đƣa vào một cấu hình khác nhau thay đổi theo cấu trúc dữ liệu
của nguồn.
2.3. Thảo luận
Hai vấn đề nổi lên trong quá trình tích hợp thông tin ngƣời dùng đó là việc thực hiện
ánh xạ dữ liệu trong Transform và việc tải dữ liệu vào đích.
2.3.1.
Ánh xạ dữ liệu
Quá trình Transform trong mô hình ETL chính là thực hiện chuyển đổi dữ liệu từ cơ sở
dữ liệu nguồn vào cơ sở dữ liệu đích. Để làm đƣợc việc này chúng ta cần thông qua
18
một bƣớc trung gian để ánh xạ các thuộc tính tƣơng ứng của hai bên. Một thuộc tính ở
nguồn có thể sử dụng nhƣ một thuộc tính ở đích, trong trƣờng hợp khác, một thuộc tính
ở nguồn có thể là một phần trong thuộc tính ở đích, hoặc thuộc tính đó có thể bị chia
nhỏ và tạo thành nhiều thuộc tính ở đích. Đó chính là việc thực hiện ánh xạ lƣợc đồ.
Ánh xạ lƣợc đồ là quá trình mô tả cách chuyển đổi cấu trúc dữ liệu từ một lƣợc đồ
(source schema) sang một lƣợc đồ khác (target schema). Ví dụ có 2 lƣợc đồ: Person
(ID_Card, Name, Email, Telephone, Gender) và People (CMT, DiaChi, GioiTinh).
Ánh xạ giữa hai lƣợc đồ này đó là tìm các thuộc tính có thể ở Person tham chiếu đến
một thuộc tính ở People. Ở đây, ta có thể thấy có hai ánh xạ đó là ID_Card(Person) ~
CMT(People) và Gender(Person) ~ GioiTinh(People). Giả sử gọi person1 là một thể
hiện của Person và people1 là một thể hiện của People. Khi đó, person1 và people1 sẽ
trùng nhau nếu person1.ID_Card = people1.CMT.
Có nhiều cách thức để thực hiện việc ánh xạ dữ liệu, tuy nhiên ánh xạ lƣợc đồ sử dụng
XML là một cách thức đƣợc chú ý đến gần đây vì tính đơn giản, linh hoạt của nó. Dƣới
đây là mô hình ánh xạ đƣợc sử dụng trong bài toán:
19
Hình 3: Mô hình ánh xạ
Hình 3 mô tả mô hình ánh xạ dữ liệu giữa nguồn và đích. Trong đó, Source là cơ sở dữ
liệu nguồn đƣợc biểu diễn trong mô hình quan hệ dƣới dạng bảng. Destination là cơ sở
dữ liệu đích đƣợc biểu diễn dựa trên mô hình quan hệ nhƣng có tập thuộc tính chia theo
mức độ phân biệt ngƣời dùng nhƣ trên (SK, WK, NF). Rule Set (tập lệnh) là tập hợp
các luật để mô tả các ánh xạ tƣơng đƣơng giữa nguồn và đích. Mỗi một luật (rule) cần
thực hiện một nhiệm vụ cụ thể. Một hoặc một vài luật ghép lại để tạo thành một ánh xạ
từ nguồn vào đích. Việc chuyển đổi dữ liệu từ nguồn vào đích sẽ sử dụng tập lệnh để
biến đổi nguồn thành một đối tƣợng trung gian (Middle Object) trƣớc khi tải vào đích.
Đối tƣợng trung gian cần đảm bảo đồng nhất với cơ sở dữ liệu đích cả về cấu trúc lẫn
giá trị.
Tổng quát hóa lên, một lƣợc đồ các ánh xạ là một chuỗi nhất định các quan hệ R =
{R1, R2 … Rk}. Ri là một quan hệ hay một luật quy định để thực hiện chuyển đổi dữ
liệu.
20
Gọi S = {S1,..., Sn} và T = {T1,..., Tm} là hai lƣợc đồ nguồn và đích. Giả thiết I là thể
hiện của S và J là một thể hiện của T. Khi đó tìm thể hiện K trên tập lƣợc đồ {S,T} sao
cho SKi = SIi và TKj = TJj (với 1 ≤ i ≤ n và 1 ≤ j ≤ m).
Nhƣ vậy một ánh xạ lƣợc đồ là bộ M = (S, T, ∑st) với S, T là hai lƣợc đồ và ∑st là tập
các luật trên {S, T}.
Nếu M = (S, T, ∑st) là một ánh xạ lƣợc đồ, thì một thể hiện của M là một thể hiện (I, J)
trên (S, T) thỏa mãn tất cả các luật trong ∑st.
Tuy nhiên sau ánh xạ này, dữ liệu không đƣợc chuyển trực tiếp vào đích mà còn phải
qua một bƣớc trung gian đó là đồng bộ hóa toàn bộ dữ liệu với đích. Các trƣờng có giá
trị sẽ đƣợc đƣa về cùng kiểu giá trị với đích, những trƣờng không có dữ liệu sẽ đƣợc
gán giá trị mặc định.
Khi thu đƣợc một đối tƣợng trung gian các giá trị của một ngƣời thì thực hiện đẩy dữ
liệu vào đích.
2.3.2.
Tích hợp dữ liệu vào đích
Quá trình tích hợp dữ liệu là quá trình tải dữ liệu trong ETL. Quá trình này thực hiện
đẩy từng bộ dữ liệu biểu diễn cho từng ngƣời vào tập dữ liệu ở đích, nếu không tìm
thấy ngƣời dùng nào giống với với nguồn thì thực hiện insert nguồn, nếu tìm thấy thì
thực hiện merge hai ngƣời dùng này để đẩy dữ liệu chính xác hơn vào đích. Để làm
đƣợc nhƣ thế, chúng ta cần giải quyết hai vấn đề sau:
Xác định đối tượng người dùng
Xác định đối tƣợng ngƣời dùng là tìm ra ngƣời dùng ở đích có tƣơng quan với nguồn
nhất để thực hiện merge nguồn với đích. Độ tƣơng quan ở đây đƣợc hiểu là mức độ
giống nhau giữa hai bộ dữ liệu đại diện cho nguồn và một đối tƣợng trong đích. Độ
tƣơng quan càng cao thì hai đối tƣợng này càng có nhiều khả năng là một và ngƣợc lại.
21
Xung đột dữ liệu
Khi tìm thấy một ngƣời dùng trong đích thỏa mãn một tiêu chí nào đó (SK giống hoặc
WK giống với nguồn), khi đó xảy ra xung đột dữ liệu giữa ngƣời dùng này với dữ liệu
ngƣời dùng ở nguồn đƣa vào.
Một ngƣời dùng đƣợc biểu diễn bởi các SK, WK hay NF với trọng số giảm dần, trong
đó các SK là quan trọng nhất để thể hiện một ngƣời, WK cũng gây ảnh hƣởng lớn
trong biểu diễn ngƣời dùng. Xung đột có thể xảy ra trên các SK, WK, NF khi thực hiện
merge dữ liệu. Ví dụ hai ngƣời dùng có một SK giống nhau nhƣng lại có một vài SK
khác hay có một vài WK hoặc NF khác.
Xung đột xảy ra cần tìm cách giải quyết sao cho dữ liệu chuyển về đích có độ chính
xác cao nhất. Để giải quyết xung đột cần xem xét dựa trên trọng số của trƣờng dữ liệu,
chỉ số tin tƣởng của nguồn chứa dữ liệu và dữ liệu đƣợc cập nhật hơn.
22
CHƢƠNG 3: CÁC KỸ THUẬT GIẢI QUYẾT BÀI TOÁN
Có nhiều vấn đề nổi lên khi thực hiện tích hợp thông tin ngƣời dùng từ nhiều nguồn,
một trong các vấn đề đó là các đối tƣợng dữ liệu có thể tồn tại trong những định dạng
không nhất quán, gây khó khăn cho việc xác định đối tƣợng khớp nhau. Để quá trình
tích hợp đƣợc linh hoạt, dễ dàng đáp ứng đƣợc với nhiều nguồn dữ liệu khác nhau, một
giải pháp đƣa ra là sử dụng một ngôn ngữ luật để thực hiện cấu hình cho các nguồn.
Mỗi nguồn sẽ có một file cấu hình riêng cho toàn bộ quá trình tích hợp. Quá trình
chuyển đổi dữ liệu cũng cần sử dụng các luật để tạo các ánh xạ dữ liệu giữa cơ sở dữ
liệu nguồn và đích. Thêm nữa, khi thực hiện tải dữ liệu vào đích cũng cần giải quyết
một số vấn đề nhƣ đối tƣợng ở nguồn đã tồn tại trong đích hay chƣa, và nếu tồn tại thì
làm cách nào để thực hiện đồng nhất nguồn và đích.
3.1.
Ngôn ngữ luật
Toàn bộ quá trình tích hợp dữ liệu từ nguồn vào đích đƣợc cấu hình trong config xml
sử dụng ngôn ngữ luật. Ngôn ngữ luật cần đáp ứng đầy đủ các yêu cầu của hệ thống
nhƣ các kết nối tới dữ liệu nguồn, các xử lý về mặt giá trị cũng nhƣ ánh xạ dữ liệu từ
nguồn tới đích và các thao tác trong việc tải dữ liệu vào đích.
Định dạng của config xml này bao gồm 7 thành phần dựa vào cấu trúc mô hình tích
hợp đã trình bày ở trên (tham chiếu đến mô hình ETL cho hệ tích hợp thông tin cá nhân
ở hình 2 – trang 17):
data-source: chứa thông tin về chuỗi kết nối, câu query lấy dữ liệu và chỉ số tin
tƣởng của nguồn.
validate: kiểm tra dữ liệu nguồn để loại bỏ các bản ghi không hợp lệ.
prepare: chuẩn bị dữ liệu cho transform.
transform: xây dựng các hàm để định nghĩa và xử lý các trƣờng dữ liệu.
23
validate (trƣớc khi load): kiểu tra dữ liệu hợp lệ sau khi transform để chuẩn bị
cho load.
prepare (trƣớc khi load): chuẩn bị dữ liệu sau khi transform (tƣơng tự nhƣ
prepare bên trên).
load: liệt kê các trƣờng (input) để load vào destination.
Trong đó bắt buộc: source, transform và load.
Các thành phần chính trong cấu trúc DTD của file cấu hình:
prepare?, load)>
<!ELEMENT data-source (source, destination)>
<!ELEMENT source (connection-string, query-data)>
<!ELEMENT destination (connection-string, db-collection)>
<!ELEMENT validate ((require| match | range | compare | in)+)>
<!ELEMENT prepare ((default | format)+)>
| date | extract | single-value | query | is | array | xml)+)>
<!ELEMENT load (field+)>
]>
Để chuẩn bị dữ liệu cho tích hợp, cần phải thực hiện cấu hình cho data-source để lấy
thông tin về nguồn và đích. Đồng thời thực hiện validate trƣớc khi transform để loại bỏ
thông tin không hợp lệ và prepare để chuẩn bị dữ liệu trƣớc khi transform. Quá trình
transform chính là pha nặng nhất trong toàn bộ quá trình ETL. Mà số lƣợng các bản ghi
lƣu thông tin về ngƣời dùng tại nguồn là rất lớn, có thể chứa nhiều dữ liệu không hợp
lệ. Do đó, trƣớc transform, loại bỏ dữ thô là hết sức quan trọng, có thể giảm thiểu đƣợc
rất nhiều cho pha transform. Dữ liệu thô chính là những dữ liệu mà nhìn vào chúng ta
có thể thấy là không hợp lệ ngay. Chẳng hạn nhƣ một số trƣờng bắt buộc phải có, hoặc
một số trƣờng có định dạng không hợp lệ.
Dƣới đây là các cấu hình cho các thành phần trên:
24
Cấu hình config – data-source:
source: Thông tin nguồn dữ liệu
o connection-string: Chuỗi kết nối tới nguồn
o query: Câu truy vấn lấy ra dữ liệu
o trusted-index: Chỉ số tin tƣởng của nguồn
destination: Thông tin đích
o connection-string: Chuỗi kết nối tới đích
o db-collection: Collection chứa dữ liệu
Ví dụ:
<data-source>
<source storage-type="Table">
<connection-string>Data Source=(localdb)\v11.0;Initial
Catalog=P_VatGia;Integrated
Security=True;Encrypt=False;TrustServerCertificate=False</connection-string>
<query>Select
name,gender,province,address,skype,email,mobilephone,joinedDate,lastCrawled from
tbl_VatGia</query>
</source>
<destination>
<connectionstring>mongodb://pdata:1234567@localhost/pdata?safe=true</connection-string>
<db-collection>person</db-collection>
</destination>
</data-source>
Ở đây, chuỗi kết nối truyền vào chính là connection đến cơ sở dữ liệu SQL.
Câu query để lấy ra một số dữ liệu cần thiết nhƣ name, gender, province,
address, skype, email, mobilephone, joinedDate, lastCrawled từ bảng person
trong cơ sở dữ liệu đƣợc khai báo ở trên.
25