1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu và so sánh một số kỹ thuật nén xml

83 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 83
Dung lượng 2,93 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hình 2.2: Quá trình truyền dữ liệu XML mà không có quá trình nén XML [17] Hình 2.3: Quá trình truyền dữ liệu XML có sử dụng quá trình nén XML [17] Có hai cách phân loại bộ nén XML Phân

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

ĐẶNG THỊ HOÀNG ANH

TÌM HIỂU VÀ SO SÁNH MỘT SỐ KỸ THUẬT NÉN XML

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

Hà nội - 2014

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐẶNG THỊ HOÀNG ANH

TÌM HIỂU VÀ SO SÁNH MỘT SỐ KỸ THUẬT NÉN XML

Ngành : Công nghệ thông tin Chuyên ngành : Kỹ thuật phần mềm

Mã số : 60480103

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

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS VÕ ĐÌNH HIẾU

Hà nội - 2014

Trang 3

Lời cam đoan

Tôi xin cam đoan kết quả đạt được trong luận văn là sản phẩm của riêng cá nhân tôi Trong toàn bộ nội dung của luận văn, những điều được trình bày hoặc là của cá nhân hoặc là được tổng hợp từ nhiều nguồn tài liệu Tất cả cá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à chịu 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 30 tháng 9 năm 2014

Người cam đoan

Đặng Thị Hoàng Anh

Trang 4

Lời cảm ơn

Trong quá trình học tập và hoàn thành luận văn tốt nghiệp, tôi đã nhận được rẩt nhiều

sự giúp đỡ, động viên từ thầy cô, gia đình và bạn bè Tôi muốn bày tỏ sự cảm ơn sâu sắc của mình tới tất cả mọi người

Tôi xin bày tỏ sự cám ơn đặc biệt tới TS Võ Đình Hiếu, người đã định hướng cho tôi trong lựa chọn đề tài, đưa ra những nhận xét quý giá và trực tiếp hướng dẫn tôi trong suốt quá trình nghiên cứu và hoàn thành luận văn tốt nghiệp

Tôi xin cảm ơn các thầy cô trong khoa CNTT - Trường Đại học Công nghệ - ĐHQG Hà Nội đã dạy bảo tận tình cho tôi trong suốt khoảng thời gian học tập tại trường

Tôi xin cảm ơn toàn thể bạn bè đồng nghiệp tại Công ty IFI Solution, đơn vị mà tôi đang công tác, đã chia sẻ, giúp đỡ tạo điều kiện cho tôi tham gia khoá học và hoàn thành khoá luận này Xin cảm ơn tất cả những bạn bè đã giúp đỡ tôi trong suốt quá trình học tập và công tác

Cuối cùng, tôi xin gửi lời cảm ơn sâu sắc nhất tới gia đình của mình, nguồn động viên

và cổ vũ lớn lao và là động lực giúp tôi thành công trong công việc và trong cuộc sống

Hà Nội, ngày 30 tháng 9 năm 2014

Đặng Thị Hoàng Anh

Trang 5

Mục lục

Lời cam đoan

Lời cảm ơn

Mục lục

Danh mục các ký hiệu và chữ viết tắt

Danh mục các bảng

Danh mục các hình vẽ

Danh mục các biểu đồ

Mở đầu 1

Chương 1: TỔNG QUAN XML 2

1.1 Tổng quan XML 2

1.2 Ưu điểm của XML 2

1.3 So sánh XML và HTML 2

1.3.1 Sự giống nhau giữa XML và HTML 2

1.3.2 Sự khác nhau giữa XML và HTML 2

1.4 Cấu trúc tài liệu XML 3

1.5 Cú pháp 4

1.5.1 Khai báo XML 4

1.5.2 Thể hiện tài liệu (Document Instance) 4

1.5.3 Thuộc tính (Attribute) 4

1.5.4 Khai báo kiểu tài liệu 4

1.6 Định nghĩa kiểu tài liệu 5

1.7 Ngôn ngữ định nghĩa lược đồ XML 5

1.8 XSLT 6

Chương 2 TỔNG QUAN NÉN DỮ LIỆU 9

2.1 Nén dữ liệu 9

2.1.1 Định nghĩa 9

2.1.2 Phân loại 9

2.1.2.1 Nén tổn hao (lossy compression) 9

2.1.2.2 Nén không tổn hao (lossess compression) 9

2.1.3 Một số khái niệm 10

2.1.3.1 Tỷ lệ nén (compression ratio) 10

2.1.3.2 Hiệu suất nén 10

2.1.3.3 Độ dư thừa dữ liệu 10

2.2 Các kỹ thuật nén XML 11

2.2.1 Tính năng và phân loại 11

2.2.1.1 Các kỹ thuật nén văn bản tổng quát 13

2.2.1.2 Các kỹ thuật nén XML không truy vấn 14

2.2.1.3 Các kỹ thuật nén XML truy vấn 15

Trang 6

Chương 3 MỘT SỐ KỸ THUẬT NÉN XML 17

3.1 XMill 17

3.1.1 Tổng quan về XMill 17

3.1.2 Kiến trúc của XMill 18

3.1.2.1 Phân chia cấu trúc từ nội dung 18

3.1.2.2 Nhóm các giá trị dữ liệu dựa trên ngữ nghĩa 19

3.1.2.3 Các bộ nén ngữ nghĩa 22

3.2 XGrind 24

3.2.1 Tổng quan về XGrind 24

3.2.2 Các kỹ thuật nén được sử dụng trong XGrind 24

3.2.2.1 Quá trình nén siêu dữ liệu 24

3.2.2.2 Quá trình nén giá trị của thuộc tính kiểu liệt kê 25

3.2.2.3 Quá trình nén giá trị của phần tử hoặc thuộc tính tổng quát 25

3.2.3 Nén đồng cấu (Homomorphic Compression) 25

3.2.4 Kiến trúc của XGrind 26

3.3 XAUST 28

3.3.1 Tổng quan về XAUST 28

3.3.2 Mã hóa số học và mô hình ngữ cảnh hữu hạn 29

3.3.2.1 Mã hóa số học (Arithmetic Coding) 29

3.3.2.2 Mô hình ngữ cảnh hữu hạn (Finite Context Modeling) 29

3.3.3 Máy tự động hữu hạn xác định 29

3.3.4 Quá trình nén và giải nén sử dụng XAUST 31

3.4 XSAQCT 33

3.4.1 Tổng quan về XSAQCT 33

3.4.2 Kiến trúc của XSAQCT 34

3.4.3 Quá trình xử lý thuộc tính và nội dung tài liệu được trộn 36

3.4.4 Quá trình cài đặt XSAQCT 37

3.4.4.1 Quá trình xây dựng cây chú thích TA,D 37

3.4.4.1.1 Đặc điểm của cây chú thích TA,D 37

3.4.4.1.2 Cài đặt cây chú thích TA,D 37

3.4.4.2 Quá trình giải nén của XSAQCT 44

3.4.4.2.1 Bộ chú thích lại (Reannotator) 44

3.4.4.2.2 Bộ phục hồi (Restorer) 45

3.5 EXI 46

3.5.1 Tổng quan về EXI 46

3.5.2 EXI Header 47

3.5.2.1 EXI Cookie 47

3.5.2.2 Các bit phân biệt 47

3.5.2.3 Bit hiện diện cho tùy chọn EXI 47

3.5.2.4 Phiên bản định dạng EXI 47

Trang 7

3.5.2.5 EXI Options 48

3.5.2.6 Padding bits 49

3.5.3 EXI Body 49

3.5.3.1 Event Code 51

3.5.3.2 Event Content 53

3.5.4 String Table 54

3.5.5 EXI Grammar 57

3.5.5.1 Built-In Grammar 58

3.5.5.2 Schema-informed Grammar 58

3.5.6 Quá trình nén EXI 58

3.5.6.1 Block 59

3.5.6.2 Channel 59

3.5.6.2.1 Kênh cấu trúc (Structure Channel) 60

3.5.6.2.2 Kênh giá trị (Value Channel) 60

3.5.6.3 Dòng nén (Compressed Stream) 61

Chương 4 CÀI ĐẶT THỰC NGHIỆM VÀ SO SÁNH MỘT SỐ KỸ THUẬT NÉN 63

4.1 Dữ liệu thử nghiệm 63

4.2 Môi trường cài đặt 64

4.3 Đo hiệu năng thực hiện 64

4.3.1 Tỷ lệ nén Compression ratio 64

4.3.2 Hiệu suất nén (Compression Performance) 64

4.3.3 Thời gian nén (Compression Time) 64

4.3.4 Thời gian giải nén Decompression Time 64

4.4 Kết quả thực nghiệm 64

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 70

TÀI LIỆU THAM KHẢO 71

Trang 8

Danh mục các ký hiệu và chữ viết tắt

DFA Deterministic Finite Automata Máy tự động hữu hạn xác

định

DTD Document Type Definition Định nghĩa kiểu tài liệu

GPS Global Positioning System Hệ thống định vị toàn cầu

HTML HyperText Markup Language Ngôn ngữ đánh dấu siêu văn

XML Extensible Markup Language Ngôn ngữ đánh dấu mở rộng

XSD XML Schema Definition Language Ngôn ngữ định nghĩa lược đồ

XSLT

Extensible Stylesheet Language Transformations Ngôn ngữ định dạng chuyển

đổi mở rộng.

Trang 9

Danh mục các bảng

Bảng 1.1: So sánh XML và HTML 2

Bảng 1.2: Các thành phần cơ bản của một tài liệu XML 3

Bảng 2.1: Danh sách các bộ nén không truy vấn [16] 14

Bảng 2.2: Danh sách các bộ nén có khả năng truy vấn [16] 15

Bảng 3.1: Định nghĩa hàm Match c, p [11] 21

Bảng 3.2: Các bộ xử lý ngữ nghĩa nguyên tử (Atomic Semantic Compressors) [11] 22

Bảng 3.3: Mô tả các bước thực hiện thuật toán 3.1 khi tạo mới cây chú thích của tài liệu D trong hình 3.13 [20] 41

Bảng 3.4: Một số phiên bản định dạng EXI 48

Bảng 3.5: Các tuỳ chọn EXI [6] 48

Bảng 3.6: EXI Events [7] 50

Bảng 3.7: Quá trình mã hóa mã sự kiện khi EXI compression không được thiết lập và tùy chọn bit-packed aligment được sử dụng [6] 52

Bảng 3.8: Quá trình mã hóa mã sự kiện khi EXI compression được thiết lập bằng true và giá trị pre-compression của tùy chọn byte-aligment được sử dụng [6] 52

Bảng 3.9: Các kiểu dữ liệu đã được xây dựng sẵn trong EXI [6] 53

Bảng 3.10: Quá trình thiết lập phân vùng của String Table [7] 54

Bảng 4.1: Tập dữ liệu thử nghiệm 63

Bảng 4.2: Môi trường cài đặt thực nghiệm 64

Bảng 4.3: Trình bày kết quả thực nghiệm khi sử dụng bộ nén gzip 65

Bảng 4.4: Trình bày kết quả thực nghiệm khi sử dụng bộ nén XMill 65

Bảng 4.5: Trình bày kết quả thực nghiệm khi sử dụng bộ nén XGrind 65

Bảng 4.6: Trình bày kết quả thực nghiệm khi sử dụng bộ nén XAUST 66

Bảng 4.7: Trình bày kết quả thực nghiệm khi sử dụng bộ nén EXI (Exificient) 66

Trang 10

Danh mục các hình vẽ

Hình 1.1: XSLT style sheets được sử dụng để chuyển đổi giữa các tài liệu XML [18] 6

Hình 1.2: XSLT style sheets được sử dụng để chuyển đổi một tài liệu XML sang các cách biểu diễn khác nhau [18] 7

Hình 2.1: Quá trình nén/giải nén dữ liệu 9

Hình 2.2: Quá trình truyền dữ liệu XML mà không có quá trình nén XML [17] 11

Hình 2.3: Quá trình truyền dữ liệu XML có sử dụng quá trình nén XML [17] 11

Hình 2.4: Phân loại các bộ nén XML dựa vào sự nhận biết cấu trúc của các tài liệu XML [17] 12

Hình 2.5: Phân loại bộ nén XML dựa vào sự hỗ trợ khả năng truy vấn [17] 13

Hình 3.1: Kiến trúc của XMill [11] 18

Hình 3.2: Mô tả quá trình XMill phân tách cấu trúc và dữ liệu 19

Hình 3.3: Kiến trúc của bộ nén XGrind [15] 27

Hình 3.4: DFA của phần tử card trong ví dụ 3.14 30

Hình 3.5: Kiến trúc của XSAQCT [20] 34

Hình 3.6: Minh họa một tài liệu D đơn giản [20] 35

Hình 3.7: Cây chú thích TA,D của tài liệu D trong hình 3.6 [20] 35

Hình 3.8: Quá trình xử lý nội dung tài liệu được trộn [20] 36

Hình 3.9: Cây chú thích TA,D và các bộ chứa văn bản [20] 36

Hình 3.10: Biểu diễn một tài liệu D có chứa chu trình đơn giản [20] 38

Hình 3.11: Biểu diễn cây chú thích của tài liệu D có thêm các node giả “$” [20] 39

Hình 3.12: Khôi phục lại cây tài liệu D với các node giả “$” [20] 39

Hình 3.13: Biểu diễn một tài liệu D sẽ được áp dụng thuật toán 3.1 [20] 40

Hình 3.14: Biểu diễn cây chú thích của tài liệu D trong hình 3.13 [20] 42

Hình 3.15: Biểu diễn cây chú thích hoàn chỉnh của tài liệu D trong hình 3.13 [20] 43

Hình 3.16: Khôi phục lại cây tài liệu D từ cây chú thích TA,D trong hình 3.15 [20] 44

Hình 3.17: Cấu trúc cơ bản của EXI Stream [7] 46

Hình 3.18: Định dạng EXI Header [6] 47

Hình 3.19: EXI Cookie [6] 47

Hình 3.20: Các bit phân biệt (Distinguishing Bits) [6] 47

Hình 3.21: Minh họa EXI Stream Body của tài liệu Notebook trong ví dụ 3.23 [7] 51

Hình 3.22: Các đầu vào khởi tạo trong phân vùng URI [7] 56

Hình 3.23: Các đầu vào khởi tạo trong phân vùng Prefix [7] 56

Hình 3.24: Các đầu vào khởi tạo trong phân vùng LocalName [7] 56

Hình 3.25: Các đầu vào được khởi tạo trong phân vùng Value [7] 57

Hình 3.26: Tổng quan quá trình nén EXI [6] 59

Hình 3.27: Quá trình dồn kênh các sự kiện EXI [6] 60

Hình 3.28: Minh họa quá trình nén của EXI Body Stream trong hình 3.21 [7] 61

Trang 11

Danh mục các biểu đ

Biểu đồ 4.1: So sánh tỷ lệ nén của các bộ nén gzip, XMill, XGrind, XAUST và EXI 66Biểu đồ 4.2: So sánh hiệu suất nén của các bộ nén gzip, XMill, XGrind, XAUST và EXI 67Biểu đồ 4.3: So sánh thời gian nén của các bộ nén gzip, XMill, XGrind, XAUST và EXI 67Biểu đồ 4.4: So sánh thời gian giải nén của các bộ nén gzip, XMill, XGrind, XAUST và EXI 68

Trang 12

mà kết quả là kích thước tập tin rất lớn Kích thước lớn dẫn đến lượng thông tin được truyền tải, xử lý, lưu trữ, truy vấn thường lớn hơn các định dạng dữ liệu khác Để giải quyết vấn đề này, một số kỹ thuật nén đã được giới thiệu như: XMill, XGrind, XAUST, EXI, XSAQCT Việc sử dụng các công cụ nén XML có nhiều lợi thế như làm giảm băng thông mạng, giảm không gian lưu trữ đĩa cũng như giảm bộ nhớ trong việc xử lý và truy vấn các tài liệu XML

Luận văn sẽ tập trung nghiên cứu bốn nội dung chính: tìm hiểu chung về XML, tìm hiểu về nén dữ liệu và nén dữ liệu XML, trong đó tìm hiểu chi tiết năm kỹ thuật nén XML bao gồm: XMill [11,23], XGrind [15,22], XAUST [10,21], XSAQCT [19-20], EXI [6-8,13] Luận văn tiến hành thực nghiệm, so sánh các kỹ thuật nén với nhau, đưa ra một số hướng dẫn, khuyến nghị hữu ích giúp cho người sử dụng có thể đưa ra các quyết định hiệu quả, đúng đắn khi lựa chọn các công cụ nén XML phù hợp nhất với yêu cầu của họ Lý do luận văn lựa chọn, tìm hiểu năm bộ nén XML trên bởi vì đây là các bộ nén mới, phổ biến, một số

bộ nén chưa được so sánh, đánh giá bằng thực nghiệm

Nội dung chính của luận văn được tổng hợp, trình bày trong 4 chương

Chương 1: Giới thiệu về XML, so sánh XML với HTML, cấu trúc và cú pháp khai

báo một tài liệu XML Chương này cũng trình bày các khái niệm và đưa ra ví dụ về định nghĩa kiểu tài liệu Document Type Definition - DTD , ngôn ngữ định nghĩa lược đồ XML Schema Definition Language - XSD và ngôn ngữ định dạng chuyển đổi mở rộng

(Extensible Stylesheet Language Transformations - XSLT).

Chương 2: Tập trung vào tìm hiểu và phân loại các kỹ thuật nén dữ liệu nói chung

bao gồm nén tổn hao, nén không tổn hao và nén XML nói riêng bao gồm các kỹ thuật nén văn bản tổng quát, kỹ thuật nén XML không truy vấn, kỹ thuật nén XML hỗ trợ truy vấn

Chương 3: Giới thiệu chi tiết năm kỹ thuật nén XML bao gồm XMill, XGrind,

XAUST, XSAQCT và EXI Kiến trúc cũng như chi tiết quá trình cài đặt bộ nén, bộ giải nén của từng công cụ được trình bày chi tiết trong chương này

Chương 4: Cài đặt thực nghiệm và so sánh các kỹ thuật nén XMill, XGrind,

XAUST, EXI trên các tập dữ liệu XML chuẩn Từ các kết quả thu được luận văn sẽ đưa ra một số hướng dẫn, khuyến nghị hữu ích giúp người dùng lựa chọn các công cụ nén phù hợp nhất với yêu cầu sử dụng

Trang 13

Chương 1: TỔNG QUAN XML

Chương này giới thiệu về XML, so sánh XML với HTML, cấu trúc và cú pháp khai báo một tài liệu XML Chương này cũng trình bày khái quát các khái niệm định nghĩa kiểu tài liệu, ngôn ngữ định nghĩa lược đồ và ngôn ngữ định dạng chuyển đổi mở rộng XSLT

1.1 Tổng quan XML

XML Extensible Markup Language là một ngôn ngữ đánh dấu được dùng để lưu trữ và định nghĩa cấu trúc của dữ liệu thông qua các thẻ có nghĩa XML được chuẩn hoá bởi liên minh mạng toàn cầu World Wide Web Consortium với mục đích đơn giản hoá quá trình trao đổi dữ liệu giữa các hệ thống khác nhau khác nhau, đặc biệt là các hệ thống được kết nối qua Internet Giống như HTML, XML cũng là một tập con của SGML Standard Generalized Markup Language) - ngôn ngữ đánh dấu tổng quát hóa tiêu chuẩn

1.2 Ưu điểm của XML

Dữ liệu độc lập được mô tả dưới dạng text thông qua các thẻ với cấu trúc và sự phân cấp rõ ràng rõ ràng giúp XML dễ dàng đọc và phân tích bởi con người hay chương trình máy tính XML cho phép dễ dàng xử lý, chuyển tải, trao đổi dữ liệu giữa nhiều ứng dụng và tài liệu với các định dạng khác nhau XML c n cung cấp nhiều cách để kiểm tra chất lượng của một tài liệu với các quy tắc cú pháp, kiểm tra liên kết bên trong, so sánh các mô hình tài liệu và các kiểu dữ liệu với nhau Với Unicode là bộ ký tự chuẩn, XML hỗ trợ hầu hết các hệ thống văn bản, biểu tượng, ký tự của hầu hết quốc gia trên thế giới Ngoài

ra, XML c n được lưu trữ làm cấu hình cho website hay sử dụng cho phương thức Remote Procedure Calls RPC phục vụ web service Vì là một chuẩn mở nên XML không gắn liền với bất kỳ công ty hay phần mềm cụ thể nào

1.3 So sánh XML và HTML

1.3.1 Sự giống nhau giữa XML và HTML

XML và HTML đều dựa trên SGML Standard Generalized Markup Language

1.3.2 Sự khác nhau giữa XML và HTML

ảng 1.1: So sánh XML và HTML

XML được thiết kế cho mục đích lưu trữ

và chuyển đổi dữ liệu giữa các hệ thống

khác nhau

HTML được thiết kế cho mục đích trình bày dữ liệu

XML dùng để mô tả dữ liệu và chú trọng

vào nội dung dữ liệu

HTML được dùng để hiển thị dữ liệu và chú trọng vào việc dữ liệu được hiển thị

Trang 14

như thế nào

Cho phép người dùng định nghĩa các

phần tử

Các phần tử đã được định nghĩa trước

Kiểm tra tính hợp lệ Hầu như không bắt lỗi

Được định nghĩa một cách chặt chẽ Không bắt buộc

Các phần từ phải được đóng Các phần tử rỗng không cần phải đóng

1.4 Cấu trúc tài liệu XML

Một tài liệu XML gồm có hai phần: phần thứ nhất là prolog của tài liệu prolog document Phần này là tùy chọn, lưu trữ thông tin của tài liệu XML bao gồm khai báo XML, định nghĩa kiểu tài liệu DTD, chú thích, các chỉ dẫn xử lý Phần thứ hai là phần tử gốc root element hay c n gọi là phần tử tài liệu document element) Phần này chứa tất cả các phần tử con và nội dung của nó, đây là phần bắt buộc phải có trong một tài liệu XML

ảng 1.2: Các thành phần cơ bản của một tài liệu XML

Ví dụ 1.1: Biểu diễn một tài liệu XML đơn giản [25]

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE document system "tutorials.dtd">

<! Here is a comment >

<?xml-stylesheet type="text/css" href="myStyles.css"?>

<tutorials>

Trang 15

1.5.2 Thể hiện tài liệu (Document Instance)

Phần của một tài liệu mà bên trong đó dữ liệu được biểu diễn được gọi là một thể hiện tài liệu document instance Mỗi document instance sắp xếp thứ tự các thông tin của

nó theo cấu trúc phân cấp, được định nghĩa bởi các mối quan hệ giữa các phần tử cha-con Thông thường các phần từ cha thiết lập một ngữ cảnh và nó được kế thừa bởi các phần tử con

Ví dụ 1.3: Mối quan hệ cha con đơn giản giữa các phần tử trong XML

1.5.4 Khai báo kiểu tài liệu

Để kết hợp một tài liệu với một lược đồ, một câu lệnh khai báo riêng được yêu cầu

Ví dụ khai báo liên kết đến một DTD trong tài liệu XML

Ví dụ 1.5: Khai báo kiểu tài liệu

Trang 16

<!DOCTYPE book SYSTEM "book.dtd">

1.6 Định nghĩa kiểu tài liệu

Trong XML, DTD Document Type Definition được sử dụng để định nghĩa cấu trúc tài liệu XML các loại phần tử và mối quan hệ cha-con và tất cả các quy tắc điều khiển, thao tác nội dung tài liệu Tuy nhiên, không như HTML sử dụng một DTD đã được định nghĩa trước với một tập hợp các loại phần tử cố định, DTD trong XML có thể được tùy chỉnh

Ví dụ 1.6: Mô tả quá trình khai báo một DTD hoàn chỉnh

<!DOCTYPE book [

<!ELEMENT book(title,author)>

<!ATTLIST book CATEGORY (Fiction | Non-Fiction)>

<!ELEMENT title (#PCDATA)>

<!ELEMENT author (#PCDATA)>

]>

1.7 Ngôn ngữ định nghĩa lược đ XML

XSD XML Schema Definition Language là một ngôn ngữ mô hình dữ liệu toàn diện cho các tài liệu XML Không như DTD, XSD là một cài đặt thực sự của ngôn ngữ XML, các lược đồ bản thân nó chính là tài liệu XML Một trong những tính năng quan trọng nhất của XSD là hỗ trợ nhiều kiểu dữ liệu Nó cải thiện chất lượng biểu diễn dữ liệu XML

và đóng vai tr như là một chuẩn vận chuyển dữ liệu doanh nghiệp Các lược đồ XSD hỗ trợ không gian tên (namespace) Điều này cho phép thiết lập các miền logic, trong đó một số hay toàn bộ các phần của lược đồ được áp dụng

XSD cung cấp một số tính năng nâng cao bao gồm hỗ trợ nhiều kiểu dữ liệu, nâng cao cú pháp kiểm tra tính hợp lệ, mô phỏng các mô hình lược đồ quan hệ thông qua việc sử

dụng khóa (key và ràng buộc constraint , có khả năng mở rộng qua phần tử any và module hóa bằng cách sử dụng phần tử include, import.

Ví dụ 1.7: Mô tả quá trình định nghĩa một lược đồ XSD hoàn chỉnh

Trang 17

XSLT thực hiện 2 nhiệm vụ chính là chuyển đổi cấu trúc và chuyển đổi mỹ học.

Chuyển đổi cấu trúc

XSLT cho phép thực hiện quá trình chuyển đổi một loại tài liệu XML từ dạng này sang dạng khác

Hình 1.1: XSLT style sheets được sử dụng để chuyển đổi giữa các tài liệu XML [18] Chuyển đổi mỹ học

XSLT cho phép chuyển đổi hiệu quả tài liệu XML thành một số định dạng khác nhau Tập hợp tính năng XSLT tạo điều kiện thuận lợi cho quá trình thao tác, sử dụng, sắp xếp hay lọc dữ liệu, cung cấp những khung nhìn để lưạ chọn thay thế và biểu diễn thông tin cho các kịch bản chuyển đổi tài liệu

Trang 18

Hình 1.2: XSLT style sheets được sử dụng để chuyển đổi một tài liệu XML sang các

cách biểu diễn khác nhau [18]

Ví dụ 1.8, 1.9 minh họa sử dụng một mẫu XSLT đơn giản, chuyển đổi tài liệu XML thành một bảng HTML

Ví dụ 1.8: Biểu diễn một tài liệu XML có chứa khai báo đến XSLT

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="book.xsl"?>

<inventory>

<book category="Fiction">

<title> Anna Karenina</title>

<author>Leo Tolstoy</author>

Trang 19

Trong chương này, chúng ta đã tìm hiểu về XML là một ngôn ngữ đánh dấu được dùng

để lưu trữ và định nghĩa cấu trúc của dữ liệu thông qua các thẻ có nghĩa Một tài liệu XML gồm có hai phần: prolog của tài liệu và phần tử tài liệu Prolog của tài liệu là phần tùy chọn, chứa thông tin của tài liệu XML như khai báo XML, định nghĩa DTD, chú thích và các chỉ dẫn xử lý Phần tử tài liệu hay phần tử gốc là phần bắt buộc, chứa tất cả các phần tử con Trong XML, DTD được dùng để định nghĩa cấu trúc tài liệu XML và các quy tắc điều khiển thao tác nội dung tài liệu Bên cạnh đó, XSD được dùng để hỗ trợ kiểu dữ liệu, không gian tên và cung cấp một số tính năng nâng cao cú pháp kiểm tra tính hợp lệ, khả năng mở rộng

và module hóa Dữ liệu XML có thể được chuyển đổi từ dạng này sang dạng khác một cách

tự dộng dựa trên chuẩn XSLT Chương tiếp theo sẽ giới thiệu tổng quan về nén dữ liệu và các kỹ thuật nén XML

Trang 20

Chương 2 TỔNG QUAN NÉN DỮ LIỆU

Chương này tập trung vào tìm hiểu và phân loại nén dữ liệu bao gồm nén tổn hao, nén không tổn hao và nén XML bao gồm các kỹ thuật nén văn bản tổng quát, kỹ thuật nén XML không truy vấn, kỹ thuật nén XML hỗ trợ truy vấn Bên cạnh đó, chương này cũng trình bày một số khái niệm liên quan đến nén dữ liệu như tỷ lệ nén, hiệu suất nén và độ dư thừa dữ liệu

2.1.2.1 Nén tổn hao (lossy compression)

Nén tổn hao c n gọi là nén có mất mát thông tin Kỹ thuật nén này chấp nhận mất mát một lượng thông tin nhất định để thu được hiệu suất nén cao hơn, do vậy, sau khi giải nén, ta sẽ không thu được dữ liệu gốc Nén tổn hao thường được áp dụng cho các tập tin hình ảnh hay âm thanh được số hóa bởi vì đối với các tập tin thuộc loại này thì việc mất mát một ít thông tin là điều có thể chấp nhận được Một số thuật toán nén tổn hao điển hình là JPEG [4], MPEG-4 [4]

2.1.2.2 Nén không tổn hao (lossess compression)

Nén không tổn hao c n gọi là nén chính xác hay nén không mất thông tin Trong phương pháp nén không tổn hao, dữ liệu được nén sau khi giải nén sẽ giống y như dữ liệu gốc ban đầu Các thuật toán nén không tổn hao được dùng để nén các file như exe, word, excel Một số thuật toán nén không tổn hao là:Shannon-Fano [4], LZW [4]

Trang 21

2.1.3.3 Độ dư thừa dữ liệu

Nguyên tắc chung của các phương pháp nén dữ liệu là loại bỏ thông tin trùng lặp, dữ liệu dư thừa đến mức tối thiểu có thể được Việc xác định bản chất kiểu dư thừa dữ liệu rất

có ích trong việc xây dựng các phương pháp nén phù hợp Nhìn chung, có bốn kiểu dư thừa chính trong dữ liệu

Sự phân bố ký tự

Trong một chuỗi ký tự, có một số ký tự có tần suất xuất hiện nhiều hơn những ký tự khác Do vậy, có thể giảm bớt lượng dữ liệu bằng cách mã hóa các dãy ký tự có tần xuất cao được thay thế bởi một từ mã nhị phân với số bít nhỏ Ngược lại, các dãy ký tự có tần xuất thấp sẽ được mã hoá bởi từ mã có số bít nhiều hơn Kiểu dư thừa này đặc biệt phù hợp với phương pháp mã hóa Huffman [3]

Sự lặp lại của các ký tự

Trong các tập tin ảnh, thường có những kí tự và chuỗi kí tự lặp lại nhiều lần liên tiếp nhau Khi đó, dữ liệu có thể được giảm bớt bằng cách thay thế những dãy kí tự đó bằng mã của chúng và số kí tự lặp lại Phương pháp nén với mô hình từ điển khai thác rất hiệu quả loại dư thừa này

Có nhiều trường hợp, dữ liệu trong một nguồn số liệu có sự phụ thuộc lẫn nhau, do

đó nếu biết được kí hiệu xuất hiện tại một vị trí nào đó, ta có thể phỏng đoán trước một cách hợp lý sự xuất hiện của các kí hiệu khác ở những vị trí khác nhau Ví dụ, ảnh biểu diễn trong một lưới hai chiều, một số điểm ở hàng dọc lại xuất hiện trong cùng vị trí ở các hàng

Trang 22

khác nhau Như vậy, thay vì lưu trữ dữ liệu ta chỉ lưu lại vị trí hàng và cột Phương pháp nén khai thác kiểu dư thừa này gọi là phương pháp mã hóa dự đoán.

Để đánh giá một thuật toán nén có hiệu quả hay không, người ta sẽ dựa vào cách mà thuật toán xử lý các kiểu dư thừa dữ liệu Thực tế cho thấy rằng, hầu hết các kỹ thuật nén đều không đủ mềm dẻo để xử lý tất cả các kiểu dư thừa dữ liệu Mỗi phương pháp nén thường được áp dụng cho từng kiểu số liệu

2.2 Các kỹ thuật nén XML

2.2.1 Tính năng và phân loại

Việc sử dụng công cụ nén XML có nhiều lợi thế hơn so với các công cụ nén thông thường như là làm giảm băng thông mạng, giảm không gian lưu trữ đĩa cũng như giảm bộ nhớ trong việc xử lý và truy vấn tài liệu XML Chính vì vậy mà bộ nén XML thường được

sử dụng để giảm chi phí của quá trình truyền tải dữ liệu XML qua mạng

Hình 2.2: Quá trình truyền dữ liệu XML mà không có quá trình nén XML [17]

Hình 2.3: Quá trình truyền dữ liệu XML có sử dụng quá trình nén XML [17]

Có hai cách phân loại bộ nén XML

Phân loại dựa vào sự nhận biết cấu trúc tài liệu XML

Theo cách phân loại này, các bộ nén XML được chia làm hai nhóm chính: các bộ nén văn bản tổng quát (general text compressors) và các bộ nén có sự nhận biết XML (XML-conscious compressors)

Trang 23

Trong bộ nén văn bản tổng quát, dữ liệu XML được lưu trữ dưới dạng văn bản cho nên cách tiếp cận logic đầu tiên của quá trình nén tài liệu XML đó là sử dụng các công cụ nén văn bản mục đích chung general-purpose text compression tool như là: gzip [9], bzip2 [2] Nhóm các công cụ nén XML này c n gọi là XML - blind XML mù vì nó coi tài liệu XML như là văn bản thông thường và áp dụng những kỹ thuật nén văn bản truyền thống.

Nhóm các bộ nén có sự nhận biết XML XML-conscious compressors) được thiết kế

để tận dụng lợi thế của sự nhận biết về cấu trúc tài liệu XML để đạt được tỷ lệ nén tốt hơn

so với bộ nén văn bản tổng quát Nhóm các bộ nén này có thể được phân loại thêm dựa vào thông tin lược đồ của tài liệu gồm có bộ nén phụ thuộc lược đồ schema-dependent compressors và các bộ nén không phụ thuộc lược đồ schema-independent compressors)

Trong quá trình xử lý nén của bộ nén phụ thuộc lược đồ (schema-dependent compressors), quá trình mã hóa và giải mã phải có quyền truy cập vào thông tin lược đồ Ví

dụ cho nhóm này là rngzip [17]

Trong quá trình nén của các bộ nén không phụ thuộc lược đồ schema-independent compressors , quá trình mã hóa và giải mã không cần thiết phải sử dụng thông tin lược đồ

Ví dụ cho nhóm là XMill

Hình 2.4: Phân loại các bộ nén XML dựa vào sự nhận biết cấu trúc của các tài liệu

XML [17]

Phân loại dựa vào sự hỗ trợ khả năng truy vấn

Theo cách phân loại này, các bộ nén XML cũng được chia làm hai nhóm chính: bộ nén không có khả năng truy vấn và bộ nén có khả năng truy vấn

Nhóm các bộ nén không có khả năng truy vấn non-queriable XML compressors) không hỗ trợ bất kỳ truy vấn nào trong quá trình nén dữ liệu ví dụ gzip, bzip2, XMill Mục

Trang 24

đích chung của nhóm này là tập trung đạt được tỉ lệ nén tốt nhất Mặc định các bộ nén văn bản tổng quát là thuộc nhóm không hỗ trợ truy vấn.

Nhóm các bộ nén có khả năng truy vấn queriable XML compressors cho phép truy vấn dữ liệu ngay trong định dạng nén Tỉ lệ nén của nhóm này không tốt bằng nhóm các bộ nén không có khả năng truy vấn Mục đích chung của nhóm này là tránh giải nén đầy đủ tài liệu trong quá trình thực hiện truy vấn Trong thực tế, khả năng thực hiện truy vấn trực tiếp các định dạng XML nén là quan trọng đối với nhiều ứng dụng được lưu trữ trên thiết bị máy tính nguồn lực hạn chế, chẳng hạn như các thiết bị di động và hệ thống GPS Mặc định nhóm các bộ nén có khả năng truy vấn đều thuộc nhóm bộ nén có sự nhận biết XML Có thể phân loại thêm nhóm này dựa vào cách mà bộ nén mã hóa cấu trúc và các phần dữ liệu của tài liệu XML bao gồm bộ nén đồng cấu và bộ nén không đồng cấu

Trong nhóm bộ nén đồng cấu homomorphic compressors , cấu trúc của tài liệu nén

và tài liệu gốc là giống nhau và có thể truy cập, phân tích các định dạng nén trong cùng một cách như là định dạng ban đầu Ví dụ cho nhóm này là XGrind

Trong nhóm bộ nén không đồng cấu non-homomorphic compressors), quá trình mã hóa tài liệu XML sẽ tách riêng cấu trúc và dữ liệu Do đó, cấu trúc của tài liệu được nén sẽ khác so với cấu trúc của tài liệu gốc ban đầu Ví dụ cho nhóm này là XQueC [16]

Hình 2.5: Phân loại bộ nén XML dựa vào sự hỗ trợ khả năng truy vấn [17]

2.2.1.1 Các kỹ thuật nén văn bản tổng quát

XML biểu diễn dữ liệu dưới dạng cấu trúc hình cây và dữ liệu được lưu trữ dưới dạng văn bản Do đó một cách tiếp cận đơn giản để nén dữ liệu XML là sử dụng các bộ nén văn bản truyền thống Trong đó, đại diện phổ biến nhất và hiệu quả của nhóm này là: gzip, bzip2 và PPM [4]

Trang 25

ộ nén gzip dựa trên thuật toán nén dữ liệu không tổn hao DEFLATE [14] Thuật

toán này sử dụng kết hợp thuật toán LZ77 [4] và mã hóa Huffman

ộ nén bzip2 sử dụng biển đổi Burrows-Wheeler (Burrows-Wheeler transform để

chuyển đổi những chuỗi ký tự tuần hoàn thường xuyên vào các chuỗi chữ cái giống nhau, và sau đó áp dụng chuyển đổi move-to-font (move-to-front transformation và cuối cùng là mã hóa Huffman Các tập tin sử dụng bzip2 đạt được tỉ lệ nén cao hơn so với gzip nhưng hiệu suất lại chậm hơn gzip

PPM là một kỹ thuật nén dữ liệu thống kê có khả năng thích ứng dựa trên mô hình

ngữ cảnh và sự phỏng đoán Nó sử dụng một phương pháp mô hình thống kê ngữ cảnh hữu hạn để dự đoán sự xuất hiện của ký tự tiếp theo trong chuỗi đầu vào và sau đó sử dụng mã hóa số học cho sự phân bố đã được dự đoán của các biểu tượng Mặc dù, PPM đơn giản và

là phương pháp hiệu quả nhất so với gzip, bzip2 nhưng nó cũng là bộ nén có tính toán đắt nhất

Trong thực tế, bộ nén văn bản tổng quát được sử dụng cho mục đích lưu trữ hoặc giảm băng thông mạng trong quá trình trao đổi dữ liệu Nói chung, có một sự đổi lập giữa các bộ nén về tỉ lệ nén và thời gian nén/ giải nén PPM đạt được tỉ lệ nén tốt nhất, gzip là thấp nhất Tuy nhiên, gzip lại đạt được hiệu suất tốt nhất về thời gian nén và giải nén trong khi PPM lại chậm hơn nhiều trong khi bzip2 là ở giữa về tỉ lệ nén và thời gian nén/giải nén

Vì vậy, việc lựa chọn bộ nén nào để sử dụng chủ yếu phụ thuộc vào yêu cầu của người sử dụng

2.2.1.2 Các kỹ thuật nén XML không truy vấn

Các bộ nén trong nhóm này không cho phép bất kỳ truy vấn nào được xử lý trong định dạng nén Mục đích chính của nhóm này là đạt được tỉ lệ nén cao nhất Nhóm này có hai lớp chính làcác bộ nén phụ thuộc lược đồ các bộ nén không phụ thuộc lược đồ

Trong nhóm các bộ nén phụ thuộc lược đồ, quá trình xử lý mã hóa và giải mã yêu cầu phải có thông tin lược đồ Đối với nhóm các bộ nén không phụ thuộc lược đồ thì quá trình xử lý mã hóa và giải mã không cần thiết phải có thông tin lược đồ

ảng 2.1: Danh sách các bộ nén không truy vấn [16]

XMLPPM No Multiplexed Hierarchical PPM PPM

Trang 26

bộ nén đồng cấu và bộ nén không đồng cấu.

Bộ nén đồng cấu (homomorphic compressors) là loại bộ nén giữ lại cấu trúc ban đầu của tài liệu XML trong định dạng nén, vì vậy nó có thể truy cập và phân tích trong cùng một cách như là định dạng gốc ban đầu

Bộ nén không đồng cấu non-homomorphic compressors) là loại bộ nén tách phần cấu trúc và phần dữ liệu riêng rẽ nhau trong quá trình mã hóa tài liệu XML Vì vậy, cấu trúc của định dạng nén khác với tài liệu gốc và nó cần phải được phân tích theo một cách khác trong quá trình giải nén

ảng 2.2: Danh sách các bộ nén c khả năng truy vấn [16]

Encoding

XSeq No Context-Free Grammars Arithmetic Encoding

TREECHOP No Prefixed Dictionary-Based No

Trang 27

Kết luận

Trong chương này, chúng ta đã tìm hiểu một số khái niệm về nén dữ liệu như tỷ lệ nén, hiệu suất nén, độ dư thừa dữ liệu và phân loại nén dữ liệu bao gồm nén tổn hao và nén không tổn hao Nén dữ liệu XML cũng được giới thiệu trong chương này bao gồm các kỹ thuật nén văn bản tổng quát, kỹ thuật nén có sự nhận biết XML, kỹ thuật nén XML không truy vấn và kỹ thuật nén XML hỗ trợ truy vấn Chương tiếp theo sẽ giới thiệu năm kỹ thuật nén XML bao gồm XMill, XGrind, XAUST, XSAQCT và EXI

Trang 28

XMill áp dụng ba nguyên tắc cơ bản để nén dữ liệu XML.

Nguyên tắc thứ nhất: phân tách cấu trúc từ dữ liệu Cấu trúc structure bao gồm các thẻ tag và các thuộc tính attribute Dữ liệu data chứa một chuỗi các phần tử dữ liệu data item biểu diễn nội dung của phần tử và giá trị của thuộc tính

Nguyên tắc thứ hai: nhóm các phần tử có liên quan với nhau Các phần tử dữ liệu data item được nhóm vào trong các bộ chứa container , mỗi container được nén riêng rẽ nhau Ví dụ: các mục dữ liệu <name> được nén vào trong một container, trong khi các mục

dữ liệu <phone> được nén vào container thứ hai

Nguyên tắc thứ ba: áp dụng những bộ nén khác nhau cho những bộ chứa container khác nhau Một vài phần tử dữ liệu là ký tự hay số trong khi một số khác lại chuỗi DNA XMill áp dụng các bộ nén có tính chuyên môn hóa specialized compressors hay c n gọi là các bộ nén ngữ nghĩa semantic compressors cho từng bộ chứa

iểu thức bộ chứa (container expression) là thành phần cơ bản của XMill Đây là

một ngôn ngữ ngắn gọn được dùng cho việc nhóm phần tử dữ liệu vào trong các bộ chứa container và lựa chọn chính xác sự kết hợp giữa các bộ nén ngữ nghĩa với nhau Mỗi biểu thức xác định một bộ chứa container duy nhất hay là một tập các bộ chứa container phụ thuộc vào số lượng thẻ của tài liệu XML Sự lựa chọn bộ nén ngữ nghĩa được xác định bằng cách kết hợp các máy nén nguyên tử atomic compressor để tạo thành các bộ nén phức tạp hơn Điều này khá hữu ích khi dữ liệu XML có kiểu dữ liệu phức tạp, chẳng hạn như dấu phẩy tách các số nguyên Người dùng gõ các biểu thức bộ chứa trên d ng lệnh của XMill, hoặc lưu trữ chúng trong một tập tin d ng lệnh riêng biệt.XMill có hai hạn chế

Thứ nhất, XMill không được thiết kế để làm việc cùng với bộ xử lý truy vấn query processor Mục đích của nó là chuyển đổi và nén dữ liệu để giảm băng thông mạng, giảm không gian bộ nhớ Hạn chế thứ hai của XMill đó là nó chỉ đạt được kết quả tốt cho những tập tin lớn, thường lớn hơn 20KB

Trang 29

3.1.2 Kiến trúc của XMill

Hình 3.1: Kiến trúc của XMill [11]

Kiến trúc của XMill dựa trên ba nguyên tắc đã được miêu tả trong phần 3.1.1 và được minh họa trong hình 3.1 Tập tin XML được phân tách bởi bộ phân tích SAX-Parser Sau đó các thẻ bài token được đưa đến bộ xử lý đường dẫn Path Processor) Mỗi thẻ bài XML được đưa vào trong một bộ chứa container Các thẻ và thuộc tính được gửi đến các bộ chứa cấu trúc Structure Container) Giá trị dữ liệu được gửi đến bộ chứa dữ liệu Data Container) khác nhau và các container được nén độc lập Trước khi vào bộ chứa dữ liệu, giá trị dữ liệu phải được nén với một bộ nén ngữ nghĩa Semantic Compressor)

Thành phần quan trọng nhất của XMill là bộ xử lý đường dẫn Path Processor) Nó xác định cách ánh xạ dữ liệu vào trong các bộ chứa khác nhau Người dùng có thể điều khiển quá trình ánh xạ bằng cách sử dụng các biểu thức chứa để xác định giá trị phải được lưu trong một bộ chứa đã tồn tại hay là một bộ chứa mới Cuối cùng, các bộ chứa được nén bằng cách sử dụng gzip và sau đó được lưu trữ trong tập tin đầu ra

3.1.2.1 Phân chia cấu trúc từ nội dung

Cấu trúc của một tập tin XML bao gồm các thẻ tag và các thuộc tính attribute Cấu trúc này được thẻ hóa tokenized trong XMill như sau: các thẻ bắt đầu được mã hóa từ

Trang 30

điển tức là được gán bởi một giá trị số nguyên trong khi tất cả các thẻ kết thúc được thay thế bằng ký tự “/”, các giá trị dữ liệu được thay thế với chỉ số bộ chứa container number của chúng

Hình 3.2: Mô tả quá trình XMill phân tách cấu trúc và dữ liệu

Ví dụ 3.1: Minh họa cấu trúc một tập tin XML đơn giản như sau:

3.1.2.2 Nh m các giá trị dữ liệu dựa trên ngữ nghĩa

Mỗi giá trị dữ liệu được gán cho một container duy nhất Quá trình ánh xạ từ giá trị dữ liệu đến container được xác định bởi đường dẫn của giá trị dữ liệu và các biểu thức chứa (container expression) được chỉ định bởi người sử dụng

Đường d n: đường dẫn đến một giá trị dữ liệu là chuỗi các thẻ từ gốc tới giá trị Trong

ví dụ 3.1, đường dẫn của text1 là /a/b/c, text3 là /a/c; text4 là /a/d

Trang 31

iểu thức chứa (container expression): tạo ra một bộ chứa cho mỗi thẻ hoặc mỗi một

thuộc tính Bộ chứa được quyết định bởi thẻ hoặc thuộc tính cuối cùng trong đường dẫn Quá trình ánh xạ từ đường dẫn đến biểu thức bộ chứa được mô tả qua các biểu thức chính quy (regular expression Xem xét các biểu thức chính quy được dẫn xuất từ XPath:

c::=label|*|#|e1/e2|e1//e2|(e1|e2)|(e)+

Trong đó:

label: thẻ hoặc thuộc tính.

*: biểu thị bất kỳ thẻ hoặc thuộc tính.

e1/e2: phép ghép nối e1 đến e2, giữa e1 và e2 không có bất kỳ đường dẫn nào ở giữa e1//e2: phép ghép nối e1 đến e2 với bất kỳ đường dẫn ở giữa.

(e1|e2 : e1 hoặc e2.

(e +: e xuất hiện một hay nhiều lần.

#: viết tắt cho bất kỳ thẻ hoặc thuộc tính giống như *, nhưng mỗi sự xuất hiện của #

sẽ quyết định một container mới

Một container expression có dạng c::=/e|e// Trong đó, e khớp với e đầu tiên bắt đầu từ gốc cây XML, //e khớp với e ở bất kỳ độ sâu tùy ý Ở dây //* được viết tắt bởi //

Các biểu thức chứa container expression) c1 , cn được đưa ra trong d ng lệnh với tham số p:

xmill -p cl -p c2 -p cn file.xml file.xmi

Trang 32

Mỗi một giá trị dữ liệu, Path Processor sẽ khớp các đường dẫn của nó dựa vào c1, c2 theo thứ tự Giả sử tìm thấy sự phù hợp match đầu tiên tại ci: bộ xử lý tính toán “các giá trị” của # trong ci Các giá trị này xác định duy nhất bộ chứa của giá trị dữ liệu.

Ví dụ 3.5: Xét hai d ng lệnh sau:

xmill -p //# file.xml file.xmi

xmill -p //Person/Title -p //Person/(Name|Child) -p //# file.xml file.xmi

Nhóm đầu tiên nhóm và nén các giá trị dữ liệu dựa vào thẻ kết thúc Nhóm thứ hai nén tất cả các title của Person với nhau, tất cả name của Person và child của nó được nén chung nhau,

và tất cả các giá trị dữ liệu khác được nén dựa vào thẻ kết thúc của nó Trong thực tế, Doc/Book/Title và /Doc/Conference/Paper/Title được nén cùng nhau và riêng rẽ từ /Doc/Person/Title

Ví dụ 3.6: Xem xét d ng lệnh sau:

xmill file.xml file.xmi

bằng d ng lệnh:

xmill -p //# file.xml file.xmi

“-p //#” mặc định luôn luôn được chèn vào cuối d ng lệnh Điều này đảm bào rằng tất cả cả giá trị dữ liệu được lưu trữ ít nhất trong một container, và cung cấp một hành vi mặc định phù hợp khi người dùng không chỉ định bất kỳ một container expression nào

Ngữ nghĩa hình thức (formal semantic): bảng 3.1 đưa ra một biểu thức chứa c và

một đường dẫn p, hàm Match c, p tính toán một tập hợp các chuỗi ký hiệu các phép gán có thể từ # Có một sự phù hợp match khi và chỉ khi hàm Match c, p #  Match(c, p) có thể trả về nhiều hơn một kết quả Trong bảng 3.1,  ký hiệu cho chuỗi rỗng, / ký hiệu cho quá trình ghép nối chuỗi Nếu ci với i=1… n, là container expression đầu tiên khớp match với

p, thì giá trị dữ liệu với đường dẫn p sẽ được lưu trữ trong một container duy nhất được định nghĩa bởi i, Match c, p

ảng 3.1: Định nghĩa hàm Match(c, p) [11]

Match(|e,p) = Match(e,p) Match(#,l) = {l}

Match(||e,p) = q/p1=pMatch(e,p1) Match(e1/e2,p)=p1/p2=pMatch(e1,p1)/ Match(e2,p2)Match(l,l) = {} Match(e1/e2,p)= p1/q/p2=pMatch(e1,p1)/

Match(e2,p2)

Match(l1,l2) =  if l1 # l2 Match(e1|e2,p)=Match(e1,p)Match(e2,p)

Match(*,l) = {} Match((e)+,p)= p1/p2…/pn=pMatch(e,p1 / …/

Match(e,pn)

Trang 33

Ví dụ 3.7: Xem xét đường dẫn p=/Doc/Conf/Paper/Title cho ra kết quả như sau:

Match(/Doc/Title,p) = {} Match(//#/#,p) = {Paper/Title}

Match /Doc//Title,p = {ε} Match(/(#),p) = {Doc/Conf/Paper/Title}

Match(//#,p) = {Title} Match(//#//Title,p) = {Doc,Conf,Paper}

3.1.2.3 Các bộ nén ngữ nghĩa

XML thường được dùng để biểu diễn các loại dữ liệu như số nguyên, ngày tháng, mã sân bay… mà được nén tốt nhất bởi các bộ nén ngữ nghĩa có tính chuyên môn hóa (specialized semantic compressor)

Có 3 loại bộ nén ngữ nghĩa bao gồm bộ nén ngữ nghĩa nguyên tử, bộ nén ngữ nghĩa kết hợp và bộ nén ngữ nghĩa do người dùng tự định nghĩa

ộ nén ngữ nghĩa nguyên tử (automic semantic compressor): có tám bộ nén ngữ

nghĩa nguyên tử được mô tả trong bảng 3.2

ảng 3.2: Các bộ xử lý ngữ nghĩa nguyên tử (Atomic Semantic Compressors) [11]

mã hóa liệt kê e enumeration encoder sẽ gán một số nguyên dương cho mỗi giá trị dữ liệu mới và giữ một từ điển của tất cả các giá trị trước đó Bộ nén hằng constant compressor không tạo ra bất kỳ đầu ra nào nhưng kiểm tra đầu vào là hằng số, điều này đặc biệt hữu ích trong các bộ nén kết hợp combined compressor

Các bộ nén ngữ nghĩa thường được xác định trong các d ng lệnh như sau:

C ::= c | c=>s

Trang 34

Trong đó, c là một biểu thức chứa container expression và s là một bộ nén ngữ nghĩa Khi

bị thiếu bộ nén mặc định là bộ nén ngữ nghĩa văn bản

Ví dụ 3.8: Xét d ng lệnh sau:

xmill -p //price=>i -p //state=>e -p //description// file.xml file.xmi

Dữ liệu price được nén như các số nguyên, state như các giá trị liệt kê, và text nằm dưới description bất kể độ sâu nào được đặt trong bộ chứa riêng sử dụng bộ nén ngữ nghĩa Tất

cả dữ liệu c n lại được nhóm dựa trên các thẻ của cuối cùng và không sử dụng nén ngữ nghĩa

Bộ nén được kết hợp (Combined compressor): XMill có ba sự kết hợp bộ nén như

sau:

Bộ nén tuần tự Sequence Compressor : seq s1 s2 hoặc một biến thể khác là seqcomb s1 s2 Ví dụ u8 “.”u8“.”u8“.”u8 nén một địa chỉ IP như 4 số nguyên

Bộ nén luân phiên Alternate Compressor or s1 s2 Một bộ nén kết hợp là

or seq u u u hoặc một biến thể khác là orcomb s1 s2

Bộ nén lặp Repetition Compressor hoặc rep d s Ở đây d là dấu phân cách delimiter , và s là một bộ nén ngữ nghĩa khác Ví dụ, một chuỗi dấu phẩy được tách ra từ các từ khóa có thể được nén bởi rep "," e

Ví dụ 3.9: Minh họa việc sử dụng các bộ nén ngữ nghĩa kết hợp cho dữ liệu Weblog.

ộ nén ngữ nghĩa do người dùng tự định nghĩa (User-defined Compressor): một số

ứng dụng đ i hỏi các bộ nén có tính chuyên môn hóa cao như các chuỗi DNA, người dùng

có thể viết ra các bộ nén/ giải nén của riêng mình và liên kết chúng vào trong XMill và XDemill bằng cách cài dặt sử dụng SCAPI Semantic Compressor API API yêu cầu người dùng cài đặt một số phương thức C++ và định nghĩa bộ nén với tên duy nhất

Ví dụ 3.10: Giao diện SCAPI cho quá trình cài đặt các bộ nén ngữ nghĩa

class UserCompressorFactory {

virtual char *GetName()=0;

virtual UserCompressor *InstantiateCompressor (char

*paramstr, int len)=0;

virtual UserDecompressor *InstantiateDecompressor(char

*paramstr, int len)=0;

Trang 35

};

class UserCompressor {

virtual unsigned GetContainerNum()=0;

virtual bool IsRejecting()=0;

virtual bool ParseString (char *

virtual void CompressString(char *str, int len,

virtual void FinishCompress(Container *contarray, void

*state)=0;

};

class UserDecompressor {

virtual void DecompressItem(DecomprCont *contarray,

XMLOutput *output, void *state)=0;

Một điểm đặc trưng và đặc biệt của XGrind là tài liệu nén giữ lại cấu trúc ban đầu của tài liệu gốc bởi vì XGrind không phân tách riêng rẽ phần cấu trúc và dữ liệu Tài liệu nén có thể được phân tích cú pháp bằng cách sử dụng chính xác các kỹ thuật tương tự mà được sử dụng cho phân tích cú pháp của tài liệu XML gốc

Điểm nổi bật thứ hai là các chỉ mục XML XML indexes có thể được tạo ra trên tài liệu nén

Đặc điểm thứ ba của XGrind là có thể cập nhật trực tiếp dữ liệu XML trên các phiên bản nén Đặc điểm cuối cùng là có thể sử dụng DTD để kiểm tra tính hợp lệ validity đối với tài liệu nén hoặc tăng cường tỷ lệ nén

3.2.2 Các kỹ thuật nén được sử dụng trong XGrind

XGrind sử dụng các kỹ thuật khác nhau cho nén siêu dữ liệu meta-data , giá trị thuộc tính loại liệt kê enumerated-type attribute , và giá trị của phần tử hoặc thuộc tính tổng quát chung

3.2.2.1 Quá trình nén siêu dữ liệu

Các thẻ bắt đầu của một phần tử được mã hóa bởi ký tự „T‟ theo sau bởi một phần tử được gán giá trị duy nhất – ID Tất cả các thẻ kết thúc được mã hóa bởi ký tự “/” Tên của

Trang 36

các thuộc tính được mã hóa bởi ký tự “A” và theo sau là một thuộc tính được gán giá trị duy nhất – ID.

3.2.2.2 Quá trình nén giá trị của thuộc tính kiểu liệt kê

Giá trị của thuộc tính loại liệt kê xuất hiện phổ biến trong các tài liệu XML Ví dụ như: thành phố, bang của một quốc gia, tập hợp các ph ng ban của công ty, mã bưu điện zipcode … Giá trị liệt kê thường được khai báo trong DTD XGrind nhận biết các thuộc tính liệt kê bằng cách kiểm tra DTD của tài liệu và mã hóa các giá trị của chúng bằng cách

sử dụng một lược đồ mã hóa log2K đơn giản để biểu diễn một miền của các giá trị K được liệt kê

3.2.2.3 Quá trình nén giá trị của phần tử hoặc thuộc tính tổng quát

Mục tiêu của XGrind đó là thực hiện hiệu quả truy vấn tài liệu nén Vì vậy cần thiết phải có một giản đồ nén phi ngữ cảnh context-free compression schema , tức là một giản

đồ nén mà trong đó mỗi chuỗi trong tài liệu được gán một mã code độc lập về vị trí của nó trong tài liệu Tính năng này cho phép xác định vị trí xuất hiện của một chuỗi bất kỳ một cách trực tiếp trong tài liệu nén mà không cần phải giải nén tài liệu

Quá trình nén phi ngữ cảnh không thể thực hiện được với các thuật toán động (adaptive algorithms như LZ77 vì mã code được gán cho một mục dữ liệu data item phụ thuộc vào toàn bộ nội dung đã xuất hiện trước đó, nghĩa là khi thực hiện một truy vấn cho một chuỗi thì phải giải nén toàn bộ nội dung phía trước nó Mặt khác, quá trình nén phi ngữ cảnh có thể thực hiện được với các phiên bản tĩnh non-adaptive của thuật toán Huffman và

mã hóa số học Arithmetic Coding [12]) XGrind sử dụng thuật toán non-adaptive Huffman

Để hỗ trợ cho tính năng non-adaptive phải thực hiện hai bước chuyển đổi tài liệu XML: bước thứ nhất thu thập thống kê và bước thứ hai thực hiện quá trình mã hóa

XGrind sử dụng một bảng phân bổ tần số riêng biệt cho mỗi phần tử hoặc thuộc tính không liệt kê bởi vì các dữ liệu thuộc về cùng một phần tử hay một thuộc tính thường có liên quan về mặt ngữ nghĩa và được dự kiến là sẽ có sự phân bố giống nhau

Với lược đồ phi ngữ cảnh, các truy vấn có thể thực hiện trên tài liệu nén mà không cần giải nén toàn bộ tài liệu Chính xác hơn là, các truy vấn tìm kiếm chính xác exact-match khóa tìm kiếm là một giá trị cụ thể và tìm kiếm theo tiền tố prefix-match khóa tìm kiếm là một tiền tố của các giá trị dữ liệu được thực hiện hoàn toàn trực tiếp trên tài liệu nén Trong khi đó, tìm kiếm theo phạm vi range-match khóa tìm kiếm bao phủ một loạt các giá trị dữ liệu hoặc tìm kiếm từng phần partial-match khóa tìm kiếm là một chuỗi con của các giá trị

dữ liệu lại yêu cầu quá trình giải nén thực hiện ngay nhanh chóng chỉ trên các giá trị của phần tử hoặc thuộc tính mà là một phần của biểu thức truy vấn

3.2.3 Nén đ ng cấu (Homomorphic Compression)

Tính năng nổi bật của chương trình nén XGrind là tài liệu đầu ra của nó vẫn giữ nguyên cấu trúc giống như tài liệu đầu vào Thực tế, tài liệu nén XML có thể được hiển thị như tài liệu XML gốc với thẻ, giá trị của phần tử hay thuộc tính được thay thế với các mã

Trang 37

code tương ứng của chúng Thứ nhất, điều này rất thuận lợi cho quá trình sử dụng các kỹ thuật phân tích, truy vấn của tài liệu XML gốc cũng được áp dụng để xử lý các tài liệu nén Thứ hai là chỉ mục có thể được thiết lập trong các tài liệu nén tương tự như cách thức đã được thiết lập trong tài liệu XML thông thường Thứ ba là quá trình cập nhật đối với tài liệu XML có thể được thực hiện trực tiếp trên phiên bản nén Cuối cùng, một phiên bản nén có thể kiểm tra tính hợp lệ của nó bằng cách sử dụng DTD mà không cần đến bất kỳ quá trình giải nén nào được minh họa bởi thuộc tính sau đây:

Cho một tài liệu XML X mà hợp lệ đối với một DTD D, hD là đồng cấu trong quá trình xác định lược đồ mã hóa XGrind cho siêu dữ liệu meta-data và các giá trị thuộc tính loại liệt kê hD(D) là ký hiệu của DTD được nén và hD(X) là ký hiệu của tài liệu XML được nén Thuộc tính sau đây là một kết quả của quá trình “phi ngữ cảnh” (context freeness) của lược đồ nén và tính chất bán cấu trúc đầu ra: X là hợp lệ với D khi và chỉ khi hD(X) hợp lệ với hD(D).

Nói cách khác, tài liệu nén có tính hợp lệ đối với DTD nén của nó

3.2.4 Kiến trúc của XGrind

Kiến trúc của bộ nén XGrind được mô tả trong hình 3.3 bao gồm các thành phần chính sau:XML Parser, DTD Parser, XGrind Kernel, Enum-Encoder, Huffman-Encoder và XML-Gen

XGrind Kernel là thành phần trung tâm của chương trình nén Nó bắt đầu bằng việc

triệu gọi bộ phân tích DTD DTD Parser dùng để phân tích cú pháp DTD của tài liệu

XML, sau đó là quá trình khởi tạo các bảng tần số frequency tables cho từng phần tử hoặc thuộc tính không liệt kê, và sinh ra một bảng biểu tượng symbol table cho thuộc tính thuộc

loại liệt kê Tiếp theo, XGrind Kernel gọi tới bộ phân tích cú pháp XML XML Parser),

quét tài liệu XML và sinh ra tập hợp các bảng tần số cho từng phần tử hoặc thuộc tính không liệt kê Bộ phân tích cú pháp XML được XGrind Kernel gọi lần thứ hai để thiết lập một dạng thẻ bài hóa tokenized form cho thẻ, thuộc tính, giá trị của tài liệu XML XGrind Kernel sẽ dựa vào loại của từng thẻ bài mà triệu gọi các bộ mã hóa tương ứng bao gồm bộ

mã hóa liệt kê Enum-Encoder) và bộ nén Huffman Huffman-Compressor)

ộ mã h a liệt kê (Enum-Encoder) được sử dụng cho siêu dữ liệu meta-data và các

hạng mục dữ liệu thuộc loại liệt kê Mỗi thẻ bắt đầu của một phần tử được mã hóa bằng ký

tự “T” được theo sau bởi một định danh duy nhất - ID Tất cả các thẻ kết thúc được mã hóa bằng ký tự “/” Tên các thuộc tính được mã hóa bằng ký tự “A” theo sau bởi một định danh duy nhất – ID Các giá trị thuộc tính loại liệt kê được mã hóa bằng cách sử dụng thông tin bảng biểu tượng symbol table

ộ nén Huffman (Huffman-Compressor) được sử dụng cho các hạng mục dữ liệu

không liệt kê Module này cài đặt lược đồ nén mã hóa non-adaptive Huffman Nó mã hóa mỗi giá trị phần tử hoặc thuộc tính dựa vào cây Huffman mà được xây dựng từ bảng tần số tương ứng của nó

Trang 38

Đầu ra đã được nén bởi các bộ mã hóa ở trên, cùng với các bảng tần số và bảng biểu tượng được gọi là CIR Compressed Internal Representation của chương trình nén và được cung cấp cho XML-Gen XML-Gen sẽ chuyển đổi CIR thành một tài liệu XML nén bán cấu trúc.

Hình 3.3: Kiến trúc của bộ nén XGrind [15]

Ví dụ 3.11: Xét một phần nội dung của tài liệu Student.xml có nội dung như sau:

Ví dụ 3.12: DTD của tài liệu XML trong ví dụ 3.11 như sau:

<! DTD for the Student database >

Trang 39

<!ELEMENT STUDENT (NAME, YEAR, PROG, DEPT)>

<!ATTLIST STUDENT rollno CDATA #REQUIRED>

<!ELEMENT NAME (#PCDATA)>

<!ELEMENT YEAR (#PCDATA)>

<!ELEMENT PROG (#PCDATA)>

<!ELEMENT DEPT EMPTY>

<!ATTLIST DEPT name (Computer_Science

Xem xét một đoạn tài liệu XML trong ví dụ 3.11 minh họa một cơ sở dữ liệu sinh viên

và DTD của nó được biểu diễn trong ví dụ 3.12 Ta thấy có năm phần tử là STUDENT, NAME, YEAR, PROG VÀ DEPT Phần tử STUDENT có một thuộc tính rollno, trong khi DEPT có một thuộc tính loại liệt kê là name

Trong ví dụ 3.13, thẻ STUDENT được mã hóa là T0, NAME là T1, YEAR là T2, PROG

là T3 và DEPT là T4 Tất cả các thẻ kết thúc đều được mã hóa là “/” Các thuộc tính rollno

và name lần lượt được mã hóa là A0 và A1 ID của các phần tử hay thuộc tính và thuộc tính name của phần tử DEPT được xác định bởi bộ phân tích cú pháp DTD trong bước chuyển đầu tiên nahuff s biểu thị đầu ra của bộ nén Huffman cho dữ liệu đầu vào s, trong khi enum s biểu thị đầu ra của bộ mã hóa liệt kê cho dữ liệu đầu vào s, trong đó s là giá trị loại liệt kê của thuộc tính

3.3 XAUST

3.3.1 Tổng quan về XAUST

XAUST thuộc nhóm kỹ thuật nén XML không truy vấn và phụ thuộc vào thông tin lược đồ Bộ nén XML XAUST chuyển đổi thông tin lược đồ DTD thành một tập hợp máy

tự động hữu hạn xác định Deterministic Finite Automata - DFA , mỗi phần tử trong DTD

sẽ có một DFA Mỗi transition được gán nhãn bởi một phần tử và hành động action được kết hợp với một transition được gọi đến một bộ mô phỏng simulator cho DFA của phần tử đang được gán nhãn XAUST nhóm tất cả dữ liệu trong cùng một phần tử vào trong một

Trang 40

container duy nhất và sử dụng bộ nén số học số 4 arithmetic order-4 compressor để nén Bởi vì sử dụng thông tin lược đồ DTD, XAUST có khả năng tìm, kiểm tra cấu trúc của tài liệu và có khả năng dự đoán chính xác các biểu tượng mong đợi.

Các thành phần cơ bản của XAUST bao gồm: mã hóa số học và máy tự động hữu hạn xác định

3.3.2.2 Mô hình ngữ cảnh hữu hạn (Finite Context Modeling)

Trong một lược đồ ngữ cảnh hữu hạn, xác suất của mỗi biểu tượng hay kí hiệu được tính toán dựa trên ngữ cảnh mà biểu tượng xuất hiện trong đó Ngữ cảnh chỉ là những biểu tượng mà đã được xuất hiện trước đó Mô hình là một tập hợp các bảng đếm tần suất cho mỗi ngữ cảnh Khi gặp một biểu tượng, số đếm tần suất sẽ được cập nhật vào trong bảng Số đếm tần suất được sử dụng để tính xác suất và lược đồ tương ứng khi mỗi biểu tượng được quét qua Thứ tự của mô hình tham chiếu đến số lượng các biểu tượng đã xuất hiện trước đó và tạo lên một ngữ cảnh Trong một mô hình có thứ tự k, cả hai bộ nén và bộ giải nén đều bắt đầu cùng với một mô hình Bộ nén mã hóa biểu tượng với một mô hình đã tồn tại và sau đó cập nhật lại mô hình cho mô hình mới Bộ giải nén tương tự giải mã một biểu tượng bằng cách sử dụng mô hình đã có và sau đó cũng cập nhật lại mô hình Ta thấy rằng, quá trình cập nhập lại mô hình và lưu các bảng đếm tần suất là một quá trình tốn kém, tiêu tốn một số lượng lớn không gian bộ nhớ Điều này làm cho mã hóa số học chậm hơn các lược đồ dựa trên từ điển như Ziv-Lempel

3.3.3 Máy tự động hữu hạn xác định

Mỗi một phần tử trong DTD được kết hợp với một DFA

Ngày đăng: 16/03/2021, 12:26

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w