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

Ứng dụng độ tương đồng chuỗi trong chống trùng lặp cho các tập dữ liệu văn bản có cấu trúc dạng bảng

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.68 MB, 66 trang )

1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TRƯƠNG LÊ QUÂN

ỨNG DỤNG ĐỘ TƯƠNG ĐỒNG CHUỖI TRONG CHỐNG TRÙNG LẶP
CHO CÁC TẬP DỮ LIỆU VĂN BẢN CÓ CẤU TRÚC DẠNG BẢNG

Ngành: Công nghệ Thông tin
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 60.48.01.03

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: Tiến sĩ Hoàng Xuân Tùng

Hà Nội – 2015


2
Lời cảm ơn
Tôi xin chân thành cảm ơn TS Hoàng Xuân Tùng, người đã tận tình hướng dẫn tôi
trong suốt quá trình làm luận văn. Những ý kiến đóng góp và sự chỉ bảo của thầy trong
quá trình này là kim chỉ nam giúp tôi hoàn thành mục tiêu nghiên cứu của mình.
Tôi xin cảm ơn tập thể thầy cô giáo trường Đại học Công nghệ - Đại học Quốc gia
Hà Nội đã giảng dạy và tạo điều kiện tốt nhất cho tôi trong thời gian tôi học tập tại
trường cũng như khi nghiên cứu và làm luận văn
Tôi cũng xin được gửi lời cảm ơn tới những người đàn anh cùng thầy hướng dẫn
những người đã cho tôi những lời khuyên cần thiết và sự động viên của mọi người trong
quá trình làm luận văn của mình.


Cuối cùng tôi xin gửi lời cảm ơn tới gia đình và bạn bè những người luôn đứng
sau cổ vũ cho tôi trong suốt quãng thời gian học tập và làm luận văn.


3
Lời cam đoan
Tôi xin cam đoan những gì viết trong luận văn này là sản phẩm của cá nhân tôi,
không sao chép từ người khác. Trong toàn bộ luận văn những điều được trình bày hoặc
là của cá nhân tôi hoặc là được trích dẫn từ nhiều nguồn tài liệu. Tất cả tài liệu tham
khảo đều có xuất xứ rõ ràng và được trích dẫn hợp pháp. Tôi xin hoàn toàn chịu trách
nhiệm và mọi hình thức kỷ luật theo quy định cho lời cam đoan của mình
Hà Nội, ngày 27 tháng 10 năm 2015
Trương Lê Quân


4
Mở đầu
Trong luận văn này tôi trình bày các phương pháp giải quyết khó khăn khi thực
hiện các phương pháp chống trùng lặp thông thường trên các tập dữ liệu văn bản có cấu
trúc dạng bảng. Khó khăn đó xuất hiện khi có lỗi nhập liệu, sự sai sót khi gõ máy dẫn
tới việc những phương pháp thông thường không thể tìm được những dữ liệu bị trùng
lặp. Để giải quyết khó khăn trên tôi đề xuất một phương pháp chống trùng lặp dựa vào
cách tính độ tương đồng chuỗi nhằm đạt được kết quả cao nhất khi tìm ra các dữ liệu
trùng lặp trên các tập dữ liệu văn bản khi xảy ra lỗi nhập liệu. Bằng phương pháp tính
độ tương đồng này những dữ liệu khi được nhập vào trong tập văn bản cho dù có xảy ra
lỗi nhập liệu vẫn có thể bị phát hiện và xử lý.
Mặc dù môi trường thử nghiệm còn thiếu thốn, các tập dữ liệu đầu vào còn ít và
cả phương pháp thực nghiệm độ tương đồng nhưng kết quả thực nghiệm đã chỉ ra rằng:
phương pháp chống trùng lặp ứng dụng độ tương đồng đã giải quyết được vấn đề nhập
liệu. Tỉ lệ sai khi nhập liệu càng lớn thì hiệu suất của phương pháp này càng cao. Ngay

cả khi không xảy ra lỗi nhập liệu thì hiệu suất của phương pháp mới cũng ngang bằng
với phương pháp cũ. Điểm yếu là thời gian chạy, tôi chưa thể thực nghiệm những
phương pháp có thể giải quyết được vấn đề thời gian đã nêu trong lý thuyết.
Để có thể đánh giá được một cách công bằng nhất cần những thử nghiệm lớn hơn
với những phương pháp tối ưu hơn. Tuy nhiên tôi vẫn có thể kết luận được trong luận
văn này chính là: Phương pháp chống trùng lặp ứng dụng độ tương đồng chuỗi đã phần
nào giải quyết được những khó khăn khi xử lý dữ liệu trên các tập văn bản có cấu trúc.


5
Mục Lục
DANH MỤC CÁC TỪ VIẾT TẮT ........................................................................7
DANH SÁCH HÌNH VẼ ........................................................................................8
DANH SÁCH BẢNG .............................................................................................9
Chương 1: Trùng lặp dữ liệu và các phương pháp chống trùng lặp .....................10
1.1

Các vấn đề trùng lặp dữ liệu ..................................................................10

1.2

Chống trùng lặp dữ liệu .........................................................................11

1.2.1 Khái niệm ...........................................................................................11
1.2.2 Lợi ích của chống trùng lặp dữ liệu....................................................12
1.3

Ứng dụng của chống trùng lặp dữ liệu ..................................................13

1.3.1 Backup dữ liệu ....................................................................................13

1.3.2 Nhân bản dữ liệu ................................................................................14
1.3.3 Lưu trữ dữ liệu ....................................................................................14
Chương 2: Phân loại các phương pháp chống trùng lặp dữ liệu ..........................17
2.1

Các phương pháp chống trùng lặp phân chia theo dữ liệu ....................17

2.1.1 File Base Compare .............................................................................17
2.1.2 File Level Hashing .............................................................................17
2.1.3 Block Level Hashing ..........................................................................18
2.1.4 Sub Block Level Hashing ...................................................................19
2.1.5 Delta Versioning .................................................................................20
2.1.6 So sánh các phương pháp chống trùng lặp .........................................21
2.2

Các phương pháp chống trùng lặp theo cách thức thực hiện.................23

2.2.1 Inline ...................................................................................................23
2.2.2 Post-process ........................................................................................24
2.2.3 Client Base .........................................................................................25
2.2.4 Target-base .........................................................................................25
2.2.5 NAS-based ..........................................................................................26
2.2.6 SAN-based ..........................................................................................26
2.2.7 Global .................................................................................................27
2.3

Các đoạn có chiều dài cố định và các đoạn có chiều dài linh hoạt ........28

Chương 3 Ứng dụng độ tương đồng chuỗi trong chống trùng lặp dữ liệu ...........31



6
3.1
Vấn đề của các phương pháp chống trùng lặp cho các tập dữ liệu văn bản
có cấu trúc dạng bảng .................................................................................................31
3.2

Ứng dụng của độ tương đồng chuỗi vào chống trùng lặp .....................32

3.2.1 Sử dụng khoảng cách chuỗi................................................................32
3.2.2 Phương pháp sử dụng phân cụm k-means ..........................................36
3.2.3 Phương pháp sử dụng thuật toán LSH (locality sensitive hashing) ...39
Chương 4 Thực nghiệm và đánh giá kết quả ........................................................42
4.1

Tổng quan về thử nghiệm ......................................................................42

4.2

Thử nghiệm 1 .........................................................................................43

4.3

Thử nghiệm 2 .........................................................................................46

4.4

Đánh giá kết quả ....................................................................................48

4.5


Các thử nghiệm khác .............................................................................49

4.5.1 Thử nghiệm chọn cận dưới bằng cách thống kê.................................49
4.5.2 Thử nghiệm đánh giá tác động của cận dưới .....................................50
4.6

Thực nghiệm thực tế ..............................................................................52

4.7

Kết luận và hướng phát triển tương lai ..................................................53

4.7.1 Kết luận ..............................................................................................53
4.7.2 Hướng phát triển tương lai .................................................................54
TÀI LIỆU THAM KHẢO ....................................................................................55
Tiếng Anh .............................................................................................................55
Phụ lục ..................................................................................................................57


7
DANH MỤC CÁC TỪ VIẾT TẮT
Viết tắt
LAN
WAN
NAS
SAN
IP
FC
LSH


Tên đầy đủ
Local Area Network
Wide Area Network
Network Attached Storage
Storage Area Network
Internet Protocol
Fibre Channel
Locality Sensitive Hash


8
DANH SÁCH HÌNH VẼ
Hình 1.1 Chống trùng lặp dữ liệu [3]....................................................................12
Hình 1.2 Lưu trữ dữ liệu khi không sử dụng chống trùng lặp [3] ........................15
Hình 1.3 Lưu trữ dữ liệu khi sử dụng chống trùng lặp [3] ...................................15
Hình 2.1 File Base Compare .................................................................................17
Hình 2.2 Quy trình hoạt động của File Level Hashing .........................................18
Hình 2.3 Quy trình làm việc của Block Level Hashing ........................................19
Hình 2.4 Chia nhỏ File ..........................................................................................19
Hình 2.5 Dữ liệu sau khi xóa block/sub-block .....................................................20
Hình 2.6 Inline ......................................................................................................24
Hình 2.7 Post-process ...........................................................................................25
Hình 2.8 Client Base .............................................................................................25
Hình 2.9 Target-base.............................................................................................26
Hình 2.10 NAS-Based ..........................................................................................26
Hình 2.11 SAN-based ...........................................................................................27
Hình 2.12 Global...................................................................................................28
Hình 2. 13 Chia các đoạn có chiều dài cố định [1] ...............................................29
Hình 2. 14 Chia các đoạn có độ dài linh hoạt [1] .................................................29

Hình 3.1 Sử dụng phương pháp chống trùng lặp bình thường .............................31
Hình 3.2 Quy trình chống trùng lặp sử dụng độ tương đồng chuỗi ......................33
Hình 3.3 Quy trình đánh giá độ tương đồng chuỗi ...............................................33
Hình 3. 4 Lưu đồ của phương pháp tương đồng chuỗi .........................................35
Hình 3.5 Thuật toán K-means ...............................................................................36
Hình 3.6 Lưu đồ của thuật toán K-means .............................................................37
Hình 3.7 Lưu đồ mới của phương pháp sử dụng K-means...................................38
Hình 3. 8 Mô hình thuật toán LSH [10]................................................................40
Hình 3. 9 Lưu đồ của phương pháp ứng dụng LSH .............................................41
Hình 4.1 Kết quả thu được sau thực nghiệm 1 .....................................................44
Hình 4.2 Kết quả thu được sau thực nghiệm 2 .....................................................47
Hình 4.3 Biểu đồ két quả thực nghiệm .................................................................51


9
DANH SÁCH BẢNG
Bảng 2.1 So sánh các phương pháp ......................................................................23
Bảng 4.1 Sự thay đổi trong file đầu vào thử nghiệm 1 .........................................44
Bảng 4.2 Kết quả của thực nghiệm 1 ....................................................................45
Bảng 4.3 Sự thay đổi trong file gốc thử nghiệm 2................................................46
Bảng 4.4 Kết quả của thực nghiệm 2 ....................................................................48
Bảng 4.5 File đầu vào thực nghiệm và sự thay đổi của cận dưới .........................50
Bảng 4.6 Bảng kết quả của thực nghiệm tác động của cận dưới ..........................52


10
Chương 1: Trùng lặp dữ liệu và các phương pháp chống trùng lặp
1.1 Các vấn đề trùng lặp dữ liệu
Thông tin là một phần quan trọng trong công nghệ thông tin, bất cứ công ty hay tổ
chức nào muốn hoạt động tốt nhất thì cần phải có cách sử dụng thông tin một cách hợp

lý. Chính vì thế mà dữ liệu – thứ tạo nên những thông tin cần phải được quản lý một
cách tốt nhất và được bảo vệ một cách hiệu quả, tuy nhiên khi lượng dữ liệu càng lớn
thì yêu cầu của nó về không gian lưu trữ và việc quản lý nó cũng ngày một gia tăng. Sự
gia tăng của dữ liệu dẫn tới một vấn đề hết sức nghiêm trọng khác, đó chính là sự trùng
lặp dữ liệu.
Trùng lặp dữ liệu là việc những dữ liệu có nội dung giống nhau nhưng vì nhiều
nguyên nhân khác nhau mà bị lưu lại nhiều lần. Một trong những hậu quả mà trùng lặp
dữ liệu gây ra chính là hao phí cho không gian lưu trữ. Dữ liệu trùng lặp càng lớn thì
hao phí càng nhiều. Ví dụ như một người bán hàng gửi 1 bản giới thiệu sản phẩm khoảng
10mb cho khoảng 500 người mỗi bản báo cáo phải chứa trong 1 file khác nhau cho dù
nội dung của chúng phần lớn là giống nhau, lúc này dung lượng phải lưu trữ chỉ khoảng
5gb, đương nhiên đó không phải một con số lớn thế nhưng nếu phải gửi 10 bản giới
thiệu, 100 bản giới thiệu thì sao, đó chắc chắn không phải là con số nhỏ nữa. Hơn nữa
phần lớn dữ liệu là giống nhau khiến cho việc lưu trữ dữ liệu trở nên hoang phí, những
block giống nhau lại được lưu trữ nhiều lần không những khiến chi phí cho không gian
lưu trữ tăng lên nhanh chóng mà còn khiến cho chi phí khi backup dữ liệu tăng lên tới
mức chóng mặt. (Chi tiết có thể xem trong [1])
Theo [2] thì không chỉ trong những công ty lớn xảy ra việc trùng lặp dữ liệu mà
trên cả những đám mây. Đám mây là những hồ dữ liệu lớn nơi các dữ liệu được lưu trữ.
Thay vì việc phải sử dụng một hay nhiều máy chủ thì tất cả dữ liệu trong đám mây đều
được ảo hóa thông qua internet. Điểm mạnh của việc lưu trữ đám mây chính là ở tính
mềm dẻo, khả năng tính toán, tính đàn hồi và co giãn tài nguyên, người sử dụng không
cần phải tính toán dung lượng lưu trữ mà chỉ cần trả tiền là sẽ có dung lượng cần thiết.
Chính vì thế mà việc trùng lặp dữ liệu xảy ra trong đám mây lại càng nhiều. Lấy ví dụ
đơn giản một ông A yêu thích nhạc cổ điển, ông ta đưa một file X lên đám mây, ta lại
có thêm một ông B cũng rất yêu thích nhạc cổ điển trùng hợp là ông ta cũng yêu thích
bài X và cũng đưa nó lên đám mây. Hiện giờ trong đám mây sẽ có 2 bài X và cùng phải
lưu trữ hai bài này. Như vậy chi phí cho cùng một file, cùng một dữ liệu sẽ tốn gấp đôi,
chưa kể tới việc số người dùng đám mây càng lúc càng nhiều, số lượng dữ liệu trùng lặp
càng lúc càng lớn, không phải là gấp đôi nữa mà là gấp ba, gấp bốn thậm chí là gấp hàng

chục lần. Nếu không có biện pháp nào giải quyết vấn đề này thì việc lãng phí tài nguyên
sẽ trở thành một vấn đề rất lớn, chi phí cho những tài nguyên dư thừa kia sẽ trở thành
gánh nặng đối với nhà cung cấp.


11
Một vấn đề về trùng lặp dữ liệu cực kỳ quan trọng và thường thấy nữa đó chính là
trong vấn đề về nhập liệu. Việc lưu trữ thông tin về một người, một sản phẩm hay một
tổ chức dưới dạng bảng là một việc thông dụng, thông tin về họ sẽ được lưu trữ dưới
dạng hàng và cột. Thông tin về một người có thể bị lặp lại trong quá trình nhập liệu dẫn
tới việc trong một bảng có thể xuất hiện có thể xuất hiện thông tin về một người nhiều
lần. Điều này xảy ra một cách thường xuyên bởi sự nhầm lẫn của con người, số lượng
dữ liệu càng lớn thì mức độ sai sót lại càng cao. Lấy ví dụ như việc nhập thông tin sinh
viên trong một trường đại học khoảng 8000 người, số lượng học sinh này được chia ra
cho một phòng 8 người vậy trung bình mỗi người phải nhập thông tin cho khoảng 1000
người, không có gì đảm bảo cả 8 người đó đều không nhầm lẫn, việc thông tin của một
sinh viên A nào đó bị lặp lại trong khi nhập liệu cũng là điều thường thấy. Trong trường
hợp này, con số nhầm lẫn có thể lên tới hàng chục thậm chí hàng trăm sinh viên, việc
kiểm tra thủ công cũng hết sức khó khăn bởi lượng dữ liệu quá lớn. Nghiêm trọng hơn
nữa là dữ liệu bị trùng lặp mắc phải những lỗi sai nhập liệu, trong trường hợp này cả
những phương pháp chống trùng lặp dữ liệu thông thường cũng không thể nào giải quyết
nổi bởi những dữ liệu do sai lỗi nhập liệu khi nhập liệu cho dù rất nhỏ cũng khiến cho
dữ liệu trở nên khác hoàn toàn so với dữ liệu gốc.
Tất cả những vấn đề trên đều dẫn tới một kết quả đó là tăng lượng chi phí không
cần thiết cho người sử dụng khi lưu trữ dữ liệu, chi phí cho không gian lưu trữ, chi phí
cho việc backup dữ liệu. Những chi phí không cần thiết này sẽ trở thành gánh nặng cho
việc lưu trữ dữ liệu và làm phát sinh ra những vấn đề khác như thời gian truy suất tăng
cao, tốn kém dung lượng đường truyền. Để giải quyết vấn đề này cần sử dụng tới một
kỹ thuật đặc biệt cho phép người sử dụng loại bỏ những dữ liệu trùng lặp và lưu trữ lại
những dữ liệu độc nhất. Kỹ thuật đó gọi là chống trùng lặp dữ liệu.


1.2 Chống trùng lặp dữ liệu
1.2.1 Khái niệm
Theo [3] thì chống trùng lặp là một kỹ thuật làm giảm dung lượng cần thiết bằng
cách xóa đi các dữ liệu bị trùng lặp. Chỉ có các dữ liệu độc nhất mới được lưu trữ vào
cơ sở dữ liệu, các dữ liệu bị trùng lặp sẽ được thay thế bằng các con trỏ hướng tới dữ
liệu độc nhất. Ví dụ: ta có 100 MB dữ liệu, thông thường sẽ cần 100MB không gian để
chứa nó nhưng với chống trùng lặp ta có thể xóa các dữ liệu trùng lặp và chỉ lưu lại các
dữ liệu độc nhất, điều này giúp cho ta có thể dùng ít hơn 100MB để lưu trữ từng đó
thông tin.


12

Hình 1.1 Chống trùng lặp dữ liệu [3]

1.2.2 Lợi ích của chống trùng lặp dữ liệu
Lợi ích mà chống trùng lặp đem lại là rất lớn, việc làm giảm dung lượng không
gian lưu trữ có thể làm giảm không gian chứa cần thiết từ đó làm tăng khả năng lưu trữ
thông tin, giảm chi phí không gian lưu trữ ( chi tiết xem ở [3] [4]) Không chỉ vậy việc
giảm không gian lưu trữ giúp lượng dữ liệu được lưu trữ tăng lên đáng kể. Ví dụ: Cùng
với 100MB không gian lưu trữ ta có thể lưu trữ được lượng dữ liệu lớn hơn rất nhiều.
Với việc loại bỏ đi dữ liệu trùng lặp, lưu lại dữ liệu độc nhất và sử dụng con trỏ, khiến
dữ liệu độc nhất thậm chí còn có thể sử dụng nhiều lần và đại diện cho nhiều dữ liệu
khác nhau.
Một lợi ích khác của việc sử dụng chống trùng là việc backup dữ liệu sẽ trở nên
nhanh hơn. Vì sao ư? Đó là vì việc sử dụng kỹ thuật này sẽ giúp ta không phải lưu lại
những dữ liệu trùng lặp, dung lượng được backup sẽ nhỏ hơn nhiều so với dung lượng
thực tế. Giả sử như ta có 100GB dữ liệu trong đó có 60GB dữ liệu là giống nhau về nội
dung, trong tình trạng không có chống trùng lặp, toàn bộ 100GB này sẽ được toàn bộ

được lưu lại vào trong không gian bộ nhớ ngược lại trong trường hợp sử dụng chống
trùng lặp thì chúng ta không phải lưu lại toàn bộ 100GB dữ liệu trên bởi 60GB dữ liệu
trùng lặp sẽ bị loại bỏ đi phần lớn và lưu lại những dữ liệu độc nhất.
Bên cạnh lợi ích về lưu trữ dữ liệu, chống trùng lặp cũng giúp chúng ta giảm
thiểu được chi phí cho việc truyền dữ liệu. Bằng việc sử dụng chống trùng lặp tại các
máy khách dung lượng dữ liệu sẽ giảm xuống, khiến tốc độ truyền qua mạng sẽ được
nhanh hơn. Lượng băng thông khi sử dụng cũng có thể được giảm xuống.
Theo [3] lợi ích của việc sử dụng phương pháp chống trùng lặp dữ liệu có thể gói
gọn trong 3 lợi ích lớn
 Giảm chi phí cho không gian lưu trữ
 Giảm chi phí cho việc backup dữ liệu


13
 Tăng hiệu suất của việc lưu trữ dữ liệu
Từ những lợi ích nói trên có thể thấy kỹ thuật chống trùng là một trong những kỹ
thuật quan trọng có tầm ảnh hưởng lớn, không chỉ với các công ty lớn phải xử lý những
cơ sở dữ liệu khổng lồ, những cơ sở dữ liệu dạng đám mây, mà còn cả đối với cả cá
nhân người sử dụng.

1.3 Ứng dụng của chống trùng lặp dữ liệu
Chống trùng lặp dữ liệu là sự lựa chọn tốt nhất khi nó không ảnh hưởng gì tới hiệu
suất của các chương trình ta đang sử dụng hoặc là những tác vụ ta cần phải hoàn thiện.
Sử dụng chống trùng lặp dữ liệu sẽ tiết kiệm được rất nhiều tiền bạc, dung lượng lưu trữ
và thời gian tuy nhiên không phải lúc nào việc sử dụng nó cũng là một sự lựa chọn đúng
đắn. Theo [4] và [1] Chống trùng lặp dữ liệu có tác dụng lớn nhất ở trong 3 lĩnh vực:
 Backup dữ liệu
 Nhân bản dữ liệu
 Lưu trữ dữ liệu
Tại sao? Nếu thực hiện chống trùng lặp dữ liệu trên máy khách thì chúng ta không

cần phải gửi quá nhiều dữ liệu quan mạng LAN hoặc mạng WAN cho việc backup dữ
liệu. Nếu chúng ta có thể chứa ít dữ liệu hơn vì client gửi ít dữ liệu hơn thì ta cũng không
cần sao chép lại nhiều dữ liệu đề phòng những thảm họa có thể xảy ra. Và khi thảm họa
xảy ra thì việc phục hồi sau đó cũng giúp chúng ta giảm thiểu được dữ liệu phải backup
và giảm thiểu thời gian cần thiết để phục hồi.

1.3.1 Backup dữ liệu
Backup là lĩnh vực tuyệt vời nhất để áp dụng Chống trùng lặp dữ liệu. Trong thực
tế các giải pháp chống trùng lặp dành cho việc backup cũng được các nhà sử dụng quan
tâm nhất. (Chi tiết có thể xem ở [1] và [4])
Với các giải pháp thực hiện trên client đương nhiên cần phải có một bản backup
đầy đủ nhằm đảm bảo việc nếu xảy ra thảm họa thì có thể phục hồi lại 100% trạng thái
ban đầu. Tuy nhiên sau khi đã có bản backup này chúng ta sẽ quản lý nó theo phương
châm nếu không có gì thay đổi thì cũng chẳng cần thiết phải sửa bất cứ thứ gì và chỉ khi
nào có chỉnh sửa thêm hoặc sửa bất cứ dữ liệu nào thì lúc đó mới cần làm việc với bản
backup. Khi tất cả thay đổi về dữ liệu đã được lưu trữ chúng ta có thể gửi chúng cho 1
ứng dụng hoặc một hệ thống chống trùng lặp để thực hiện việc so sánh và loại bỏ các
dữ liệu trùng lặp và từ đó lưu trữ những dữ liệu độc nhất.


14
Một vài biện pháp hoạt động trên client đôi khi vẫn cần tới việc gửi những file
trùng lặp cho 1 thiết bị trung tâm (central appliance) trước khi những dữ liệu trùng lặp
bị xóa, những biện pháp khác thông minh hơn là thực hiện việc giao tiếp với client để
chắc chắn rằng chỉ có những gì cần thiết là được gửi tức là những dữ liệu mà chưa có.
Nên chọn đúng biện pháp giải quyết vấn đề của mình bằng không chúng ta có thể tốn
nhiều băng thông hơn để xóa đi những bản backup trên client.

1.3.2 Nhân bản dữ liệu
Nhân bản dữ liệu là rất cần thiết cho việc lưu trữ dữ liệu, tạo ra một bản sao dữ

liệu để đề phòng việc mất mát dữ liệu khi thảm họa có thể xảy ra. Bản sao đó được sử
dụng để khôi phục lại những dữ liệu gốc vì thế việc lưu trữ nó cũng sẽ trở thành một vấn
đề lớn nếu như nó chiếm quá nhiều chi phí và trở thành một gánh nặng cho người sử
dụng. (Chi tiết trong [1])
Một trong những vấn đề tốn kém nhất trong Nhân bản dữ liệu là băng thông mà nó
cần để chuyển toàn bộ dữ liệu tới nơi lưu trữ nó. Dữ liệu mà chúng ta cần để sao lưu
càng nhiều thì lượng băng thông cần thiết lại càng lớn. Rất nhiều công ty đã tìm cách để
giảm chi phí của việc này bằng cách chỉ tạo ra bản sao cho các dữ liệu đặc biệt then chốt
và quan trọng ảnh hưởng tới công ty hoặc sử dụng những link tốn kém ít băng thông
hơn và lãng phí cả đống thời gian chờ đợi nó chuyển dữ liệu sang nơi lưu trữ.
Khi người sử dụng cần chuyển một lượng dữ liệu khổng lồ qua mạng trong trường
hợp thảm họa đã xảy ra và cần thiết phải khôi phục ngay lập tức thì ngay lập tức vấn đề
sẽ xảy ra. Cụ thể ở đây chính là chi phí cho băng thông khi phải chuyển một lượng dữ
liệu khổng lồ như thế. Đó là lí do sử dụng Chống trùng lặp dữ liệu ở đây là một lựa chọn
khôn ngoan, nó sẽ đem lại hiệu quả không ngờ tới, giảm chi phí cho băng thông một
cách rất hiệu quả. Với việc sử dụng phương pháp Delta Versioning thì lượng dữ liệu
phải chuyển sẽ bị giảm đi rất nhiều mà vẫn có thể đáp ứng được việc khôi phục dữ liệu
gốc một cách đầy đủ, ngoài ra việc sử dụng Delta Versioning cũng sẽ tiết kiệm được
không ít thời gian cho người sử dụng.

1.3.3 Lưu trữ dữ liệu
Việc lưu trữ dữ liệu trong thời gian dài cũng là một vấn đề nan giải để tiết kiệm
chi phí, thay vì phải lưu trữ toàn bộ dữ liệu thì chỉ cần lưu trữ những dữ liệu mới hoặc
thay đổi. Giả sử như như ta phải lưu trữ dữ liệu trong vòng 5 tuần giống như hinh 2.15,
2.16 thì nếu như có thể sử dụng 24.3 TB để lưu trữ hơn 110 TB thì số chi phí mà ta tiết
kiệm được sẽ là rất lớn. (Chi tiết trong [3])


15


Hình 1.2 Lưu trữ dữ liệu khi không sử dụng chống trùng lặp [3]

Hình 1.3 Lưu trữ dữ liệu khi sử dụng chống trùng lặp [3]

Hình 1.1 là ví dụ về việc một tập dữ liệu khoảng 20TB được backup trong vòng 5
tuần bao gồm sự độ lớn dữ liệu và tốc độ thay đổi khi không sử dụng các phương pháp
chống trùng lặp. Trong khi đó hình 2.16 cùng là lượng dữ liệu và thời gian nhưng có sử
dụng phương pháp chống trùng lặp.


16
Nếu như sử dụng phương pháp thông thường (không chống trùng lặp) thì chúng ta
cần mất tới nhiều hơn 110 TB trong vòng 5 tuần. Lượng dữ liệu sẽ tăng dần theo thời
gian và trong dó có cả những dữ liệu trùng lặp không cần thiết. Kế đó khi nhìn xuống
hình 1.2 ta có thể thấy khi sử dụng phương pháp chống trùng lặp thì dung lượng cần
thiết trong vòng 5 tuần đã giảm xuống một cách đáng kể trong khi vẫn giữ được tiến độ
lưu trữ. Có tói 78% dữ liệu đã bị loại bỏ, những dữ liệu này là trùng lặp và không cần
thiết. Rõ ràng là khi ứng dụng chống trùng lặp vào lưu trữ dữ liệu sẽ giúp ta tiết kiệm
được chi phí cho không gian lưu trữ.


17
Chương 2: Phân loại các phương pháp chống trùng lặp dữ liệu
2.1 Các phương pháp chống trùng lặp phân chia theo dữ liệu
Việc phân chia các phương pháp chống trùng lặp dựa vào việc chia nhỏ dữ liệu,
dữ liệu càng được chia nhỏ thì hiệu quả của chống trùng lặp lại càng cao. Theo các tài
liệu [2] [3] thì các phương pháp chống trùng lặp thông thường là:







File base compare
File-level Hashing
Block-level Hashing
Sub-Block-level Hashing
Delta Versioning

2.1.1 File Base Compare
Phương pháp đơn giản và dễ thực hiện nhất. File Base Compare xác định 2 file có
phải là có cùng dữ liệu hay không bằng cách so sánh các metadata của 2 file đó ví dụ
như tên file, ngày khởi tạo, dung lượng,… Nếu các metadata của 2 file là giống nhau thì
có thể kết luận 2 file là giống nhau và có thể xóa một file ngược lại nếu như metadata
của 2 file là khác nhau.
Đây là một phương pháp dễ thực hiện và tốn ít chi phí nhất nhưng hiệu suất của
nó là không cao, bằng cách áp dụng phương pháp này chúng ta có thể tiết kiệm khoảng
50% dung lượng cần thiết.

Hình 2.1 File Base Compare

2.1.2 File Level Hashing
Hash là việc tạo ra một chuỗi ký tự đại diện cho 1 đoạn nội dung dữ liệu. Hash là
một bước tiến lớn của việc chống trùng lặp. File hashing tạo ra một chuỗi ký tự duy nhất
đại diện cho các file mà ta gọi nó là các hash, bằng cách so sánh các hash này ta có thể
xác định file nào là trùng lặp file nào không. Sau đó sẽ thực hiện việc xóa hoặc giữ lại
file.


18

Một trong những cách sử dụng File Level hashing thông dụng nhất là sử dụng một
bảng index lưu trữ những hash của các file từ đó giúp chúng ta có thể dễ dàng so sánh
các hash được với nhau.
Có rất nhiều thuật toán Hashing khác nhau nhưng cách thực hiện cơ bản là giống
nhau, quy trình Hashing dữ liệu có nghĩa là mã hóa những dữ liệu đó theo một cách nào
đó để có được kết quả đầu ra là độc nhất. Có nghĩa là dữ liệu khác nhau sẽ có hash khác
nhau.

Hashing 1
File thành
index

So sánh
các index

Giống
Xóa File

Khác
Giữ File

Hình 2.2 Quy trình hoạt động của File Level Hashing

2.1.3 Block Level Hashing
Để sử dụng được phương pháp này, chúng ta cần chia nhỏ các file thành các block,
kế đó sử dụng các thuật toán hash cho các block và tạo ra các hash cho mỗi block này.
Sau khi so sánh các hash này với nhau ta sẽ thực hiện việc xóa hoặc giữ lại các block
này.
Block-Level hashing có thể sử dụng trên cả dữ liệu có cấu trúc hoặc dữ liệu không
có cấu trúc, tức là dữ liệc được chứa trên đĩa (không có cấu trúc) và dữ liệu được chứa

trong bảng cơ sở dữ liệu (có cấu trúc). Bỡi phương pháp này làm việc với các block dữ
liệu đã có và các block dữ liệu mới cho nên việc nó là dữ liệu gì, đến từ đâu là không
quan trọng.
Mỗi một block dữ liệu mới được đưa vào sẽ được hash và có được hash của mình,
sau khi so sánh hash của nó với các hash của các block cũ ta có thể quyết định sẽ giữ nó
lại hoặc xóa nó đi.


19
Chia 1 File
thành các
Block

Hashing
Block
thành hash

So sánh
các hash

Giống

Khác

Xóa block

Giữ Block

Hình 2.3 Quy trình làm việc của Block Level Hashing


2.1.4 Sub Block Level Hashing
Phương pháp này cũng giống như block level hashing nhưng ở tốt hơn rất nhiều.
Bởi sau khi chia nhỏ file thành các block ta lại tiếp tục chia nhỏ các block thành các subblock sau đó sẽ làm việc trên các sub-block đó. Bởi vì size của mỗi sub-block rất nhỏ
kết quả thu được sẽ rất khả quan và bởi vì nó làm việc trên các sub-block cho nên phương
pháp này giống như block level hashing có thể được áp dụng trong cả dữ liệu có cấu
trúc và không có cấu trúc.

File gốc size
128KB

4 Block 32

16 sub-block

Hình 2.4 Chia nhỏ File

Đối phương pháp Block Level Hashing, Sub-Block Level Hashing xuất hiện một
vấn đề đó là việc xử lí dữ liệu sau khi đã xóa đi dữ liệu trùng lặp bởi chống trùng lặp
không thể làm mất đi dữ liệu của một file. Vậy phải xử lý như thế nào để có thể đảm
bảo việc toàn vẹn dữ liệu mà không làm mất đi mục tiêu ban đầu của chống trùng lặp.
Để giải quyết vấn đề này ta sử dụng các hash như là các con trỏ của block/sub-block. Ta
lập một bảng lưu trữ các hash gọi là index, đối với các hash trùng nhau trong index vẫn


20
lưu giữ lại hash của các block/sub-block đã bị xóa và thay thế dữ liệu chứa trong
block/sub-block bằng hash của chính nó.
0687fe473298accf5b74d3f
1239bdeac57b64f3cde71e


01afdcb435396758213ea
(data 1)
Data 2

775aec678bbcae543981ac

Data 3

01afdcb435396758213eac

Data 4

01afdcb435396758123eac

Data 5

0787fe47329457ac5b74d3

Data 6

23476bea33bce9985bcaf3

Data 7

36458ahs44bgf8293gfya4

Data 8

Hình 2.5 Dữ liệu sau khi xóa block/sub-block


Bảng index chứa tất cả các hash và các hash trỏ tới các dữ liệu độc nhất và bất cứ
một sub-block/block bị chống trùng lặp sẽ bị thay thế bằng 1 con trỏ hash. Đến khi cần
tái tạo dữ liệu gốc các hash sẽ trỏ tới dữ liệu gốc và thực hiện việc tái tạo dữ liệu. Ví dụ
như hình 2.4 dữ liệu của block 1 và dữ liệu của block 5 có cùng hash, 1 trong 2 data sẽ
bị xóa và được thay thế bằng hash. Khi cần tái tạo dữ liệu của block 1 ta sẽ dùng dữ liệu
của block 5.

2.1.5 Delta Versioning
Phương pháp này sử dụng những dữ liệu gọi là Delta để làm tối ưu hóa việc lưu
trữ dữ liệu. Vậy Delta là gì? Đó là những dữ liệu gốc và duy nhất làm nên tính khác biệt
giữa hai file. Chẳng hạn như ta tạo ra một file word và làm việc với nó, sau khi làm việc
xong ta đóng file lại và save vào máy. Một vài ngày sau ta lấy file word ra và sửa một
số chữ trong nó rồi save lại. Vậy thì một vài chữ đó là điểm gây nên khác biệt giữa file
word cũ và mới, những chữ đó chính là dữ liệu mà ta gọi là Delta.
Thế Delta Versioning làm việc như thế nào và Delta Versioning có thể tối ưu hóa
việc lưu trữ dữ liệu như thê nào?
Phương pháp làm việc của Delta Versioning thực chất rất đơn giản, tất cả mọi hoạt
động của nó đều thực hiện trên phần dữ liệu Delta ví dụ như lưu lại Delta hoặc xóa. Về
cơ bản mà nói thì phần lớn dữ liệu khác ngoài Delta của một file là giống nhau cho nên
việc chỉ lưu trữ các dữ liệu Delta tốc độ lưu trữ hoặc backup dữ liệu trở nên nhanh hơn


21
rất nhiều. Vẫn là ví dụ file Word ở trên, thay vì phải lưu file mới rồi xóa file cũ đi thì ta
chỉ cẩn lưu lại dữ liệu Delta. Như vậy lượng data phải lưu và trong đĩa là rất ít, không
chiếm nhiều dung lượng và tốc độ lưu trữ cũng sẽ rất nhanh. Ngoài ra khi cần backup
lại một file thì chỉ cần xóa đi delta là được.
Delta Versioning làm việc trên cả các block, subblock hoặc file cho nên ta có thể
chia nó làm 3 dạng:
 File-level Detal Versioning: Phương pháp này làm việc trực tiếp trên file,

khi các file bị trùng lặp nó sẽ lưu lại các metadata của các file có dữ liệu
trùng lặp với nó thay vì lưu lại cả hai file. Khi cần sử dụng tới các file đã bị
xóa này, metadata được lưu trữ sẽ làm nhiệm vụ như một con trỏ, trỏ tới
file trùng lặp và dùng dữ liệu ở đó.
 Block-level Delta Versioning: Phương pháp này làm việc trực tiếp trên các
block và chỉ chứa các dữ liệu bị thay đổi so với dữ liệu gốc. Block-level
Delta Versioning tạo ra các snapshot, mỗi snapshot chỉ lưu trữ những thay
đổi so với dữ liệu gốc
 Block-level Delta Versioning cũng có thể giảm sự trung lặp dữ liệu khi thực
hiện việc khôi phục dữ liệu sau thảm họa (DS). Giả sử như chúng ta muốn
cứ 6 tiếng là lại update một lần, theo cách thông thường thì chúng ta phải
lặp lại việc lưu trữ thông tin mỗi 6 tiếng. Như vậy không những tốn kém về
thời gian mà còn làm chậm tốc độ xử lý và lưu trữ. Khi chúng ta sử dụng
phương pháp này thì thay vì phải lặp lại các dữ liệu đã có nó sẽ giúp chúng
ta chỉ đưa lượng thông tin mới hoặc thông tin đã bị sửa đổi trong dữ liệu
gốc.
 Sub-block Delta Versioning: Phương pháp này cũng giống như Block-level
Delta Versioning nhưng ở triệt để hơn. Đó lại vì lí do dung lượng xử lý,
dung lượng càng nhỏ thì việc xử lý càng triệt để. Ta có thể hiểu như thế này
khi ta dùng phương pháp Block Delta, dữ liệu bị chia nhỏ tới mức block
nhưng dữ liệu trong các block cũng có những đoạn trùng nhau vậy thì việc
chống trùng lặp sẽ trở nên không triệt để. Thay vì đó ta chia nhỏ các block
đó thành các sub-block rồi thực hiện chống trùng lặp thì hiệu suất sẽ cao
hơn rất nhiều. Ngoài ra việc update dữ liệu cũng nhanh hơn do thay vì ta
phải update cả block thì chỉ cần update các sub-block có dung lượng nhỏ
hơn nhiều.

2.1.6 So sánh các phương pháp chống trùng lặp
Lợi ích mà các phương pháp chống trùng lặp đem lại phụ thuộc vào 3 điều kiện
sau:



22
 Thời gian xử lý
 Tính triệt để
 Chi phí cho mỗi phương pháp.
Điều đó có nghĩa là mỗi phương pháp sẽ được ứng dụng trong những trường hợp
khác nhau phụ thuộc vào yêu cầu của người sử dụng. Mức độ phức tạp của các phương
pháp khiến cho thời gian xử lý của nó trở nên nhanh hoặc chậm, cũng ảnh hưởng đến
tính triệt để của các phương pháp đó, hiển nhiên càng phức tạp thì chi phí để sử dụng
càng lớn. Vì vậy khi chọn lựa các phương pháp chống trùng lặp để đưa vào thực tiễn thì
cần chọn lựa kỹ càng.

Tên phương pháp

Thời gian xử lý

File Base Compare Nhanh nhất bởi
không cần chia nhỏ
dữ liệu, không cần
thuật toán để tìm
Hash chỉ việc so
sánh metadata với
nhau
File Level Hashing Vẫn rất nhanh bởi
không cần chia nhỏ
dữ liệu mà chỉ cần sử
dụng thuật toán để
tìm Hash


Tính triệt để

Chi phí

Rất kém, chỉ cần
một chút sai khác về
thông tin là sẽ kết
luận không giống
nhau. Nhiều sai sót

Không hề phức
tạp nên chi phí
không cao thậm
chí là đơn giản

Tốt hơn File Base
Compare
nhưng
chưa đủ bởi không
cách nào làm việc
được trên dữ liệu của
một file
Rất triệt để, bởi dữ
liệu được làm việc
triệt
để
trên
block/sub-block

Phức tạp hơn

nhưng chi phí
cũng chưa cao
lắm.

Block Phương pháp này
phức tạp hơn những
phương pháp trước
bởi phải trải qua
bước chia nhỏ file
thành các block hoặc
sub block rồi mới
thực hiện thuật toán
Hashing
Delta Versioning
Phương pháp này rất Rất tốt
thích hợp với lưu trữ
và update dữ liệu
thường xuyên

Block/Sub
Hashing

Chi phí lớn bởi
thuật toán phức
tạp, nhiều công
đoạn

Phức tạp và tốn
kém.



23
Bảng 2.1 So sánh các phương pháp
Từ bảng trên có thể thấy được khi cần đến độ chính xác thì nên sử dụng block/subblock nhưng muốn tốn kém ít chi phí và mức độ chính xác không cần quá cao thì có thể
dùng File Compare và File Level Hashing.
Đối với việc khôi phục dữ liệu sau thảm hoa thì Delta Versioning là lựa chọn duy
nhất.
Ngoài ra với các dữ liệu có cấu trúc thì phương pháp lựa chọn là Block/sub-block
Hashing, bởi việc xử lý các dữ liệu kiểu này chỉ có thể thực hiện trên một file chính vì
vậy các phương pháp File Base không có cách nào ứng dụng được trên các dữ liệu như
thế.
Tóm lại, cần phải chọn lựa một cách cẩn thận các phương pháp chống trùng lặp
khi áp dụng vào thực tiễn sao cho phù hợp với hoàn cảnh của người sử dụng. Tránh
những trường hợp đem lại hiệu suất thấp hoặc lãng phí một cách không cần thiết.

2.2 Các phương pháp chống trùng lặp theo cách thức thực hiện
Các phương pháp chống trùng lặp thường được chia theo vị trí thực hiện chống
trùng lặp, phụ thuộc vào người sử dụng khác nhau mà sẽ có những vị trí chống trùng lặp
khác nhau, mỗi phương pháp lại có lợi ích khác nhau. Việc phân chia này dành cho khi
thực hiện quá trình chống trùng lặp trong mạng. Theo [5] có tất cả 7 phương pháp chống
trùng lặp được chia theo cách này:
 Inline: Dữ liệu được chống trùng lặp theo thời gian thực khi nó bắt đầu được
lưu trữ
 Post-Process: Dữ liệu sẽ được lưu trữ trước rồi sau đó mới bắt đầu được
chống trùng lặp
 Client-side: Dữ liệu sẽ được chống trùng lặp trước khi nó được gửi tới đích
 Target-base: Dữ liệu sẽ được chống trùng lặp sau khi nó được gửi tới đích
 NAS :Dữ liệu được gửi tới đích thông qua mạng IP
 SAN – base: Dữ liệu được gửi tới đích thông qua FC
 Global: Dữ liệu được chống trùng lặp nhờ một cơ sở hạ tầng trên các

transport protocol.

2.2.1 Inline
Đầu tiên là phương pháp thông dụng nhất: Inline, phương pháp này còn có một cái
tên khác là “phương pháp ngây thơ” bởi vì phương pháp này hết sức đơn giản. Phương
pháp này dồn toàn bộ dữ liệu sang đích và thực hiện chống trùng lặp theo thời gian thực
để giảm bớt dung lượng cần thiết để lưu trữ. Hiệu suất của phương pháp Inline này hoàn
toàn phụ thuộc vào không gian lưu trữ vì vậy mà không gian lưu trữ càng lớn thì tốc độ


24
xử lý lại càng nhanh. Lợi ích của phương pháp Inlien đó là rất dễ để triển khai và giúp
làm giảm dung lượng cần thiết cho phần cache. Điều bất lợi đó là để đảm bảo cho
phương pháp này thật đơn giản nó sử dụng cách tiếp cận cực kì trực tiếp và “thô bạo”
để chia nhỏ và chống trùng lặp dữ liệu và khi mà nó hoạt động thì có thể nó sẽ loại bỏ
“nhầm” các dữ liệu không trùng lặp. Hơn nữa vì nó dồn toàn bộ dữ liệu về đích nên dữ
liệu trùng lặp và dữ liệu độc nhất bị trộn lẫn với nhau điều này khiến cho tỉ suất chống
trùng lặp giảm xuống và khiến cho dung lượng cần để lưu trữ tăng dần lên theo thời gian.
Một bất lợi khác của phương pháp này đó là rất khó để có thể chia sẻ các index và
metadata, chính vì vậy mà phương pháp này nói chung là có tính ứng dụng vào thực tiễn
khá thấp.

Hình 2.6 Inline

2.2.2 Post-process
Phương pháp này dùng phần cache trên đĩa để lưu trữ thông tin trước khi thực hiện
chống trùng lặp. Điểm mạnh của phương pháp này chính là hiệu suất cao và khả năng
backup dữ liệu nhanh bởi quá trình chống trùng lặp không phải lưu trữ bất cứ thứ gì mà
tất cả dữ liệu đã được lưu lại trên cache khi thực hiện chống trùng lặp thì chỉ cần lấy dữ
liệu trong đó xử lý rồi lưu dữ liệu đó lại. Vì chống trùng lặp được thực hiện sau ki dữ

liệu được lưu trữ cho nên những dữ liệu đặc biệt rất khó chống trùng lặp hoặc không thể
chống trùng lặp (ví dụ như dữ liệu được mã hóa, bị nén hoặc là những file hình ảnh) có
thể được loại trừ từ giai đoạn thực hiện chống trùng lặp cho nên không gian lưu trữ sẽ
không bị lãng phí. Một lợi ích khác của post-process đó là khả năng chia sẻ index và
metadata khiến cho dữ liệu có phần linh động hơn. Tuy nhiên điểm yếu của nó là phụ
thuộc vào phần cache của đĩa chính vì vậy nó sẽ tốn kém hơn nhiều so với phương pháp
inline. Tuy nhiên vì các dữ liệu không thể chống trùng lặp không cần thiết phải lưu trữ
cho nên về thời gian dài thì post-process sẽ ít tốn kém hơn


25

Hình 2.7 Post-process

2.2.3 Client Base
Phương pháp này cũng có thể được gọi bằng cái tên source-base bởi vì dữ liệu sẽ
được chống trùng lặp trước khi nó được chuyển tới đích. Tức là khi bắt đầu chuyển dữ
liệu lên mạng, thì dữ liệu sẽ được xử lý trên máy khách, lọc bỏ những dữ liệu trùng lặp
rồi mới chuyển tới đích. Vì vậy mà ưu điểm của phương pháp này chính là làm giảm
băng thông cần thiết để chuyển dữ liệu. Thực vậy nếu như một file có dung lượng 20
mb sau khi chống trùng lặp chỉ còn lại 16mb thì băng thông cần thiết để chuyển file này
sẽ giảm xuống. Ngoài ra vì lượng dữ liệu được chuyển cũng nhỏ hơn cho nên khả năng
backup dữ liệu sẽ trở nên nhanh hơn, kết quả là khả năng backup dữ liệu sẽ tăng lên
không ít. Đương nhiên nó cũng có nhược điểm, đó là việc chống trùng lặp sẽ dồn lên
trên máy khách nên yêu cầu về không gian lưu trữ là rất cao, hơn nữa nến chống trùng
lặp một lượng dữ liệu lớn thì tốc độ của máy sẽ chậm lại, và rất có khả năng sẽ bị quá
tải.

Hình 2.8 Client Base


2.2.4 Target-base
Dữ liệu được chống trùng lặp sau khi được chuyển tới đích. Tại đây dữ liệu sẽ
được xử lý cẩn thận trước khi được lưu trữ. Điểm mạnh của phương pháp này là phía


×