1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

96 42 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 96
Dung lượng 1,11 MB

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

Nội dung

Để 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ả

Trang 1

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

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

Trang 2

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

Chuyên ngành : Kỹ thuật phần mềm

Mã số

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ờicam đ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

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ủamì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ôitrong 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ốtquá 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 đangcô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

Chương 1: TỔNG QUAN XML

1.1.Tổng quan XML

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

1.3.So sánh XML và HTML

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

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

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

1.5.Cú pháp

1.5.1 Khai báo XML

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

1.5.3 Thuộc tính (Attribute)

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

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

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

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

2.1.Nén dữ liệu

2.1.1 Định nghĩa

2.1.2 Phân loại

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

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

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

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

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

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

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

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

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

2.2.1.3

Trang 6

3.1.1 Tổng quan về XMill

3.1.2 Kiến trúc của XMill

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

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

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

3.2 3.2.1 Tổng quan về XGrind

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

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

3.2.2.2 Quá trình nén giá trị của thuộc tính kiểu 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

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

3.2.4 Kiến trúc của XGrind

3.3 XAUST

3.3.1 Tổng quan về XAUST

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

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

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

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

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

3.4 XSAQCT

3.4.1 Tổng quan về XSAQCT

3.4.2 Kiến trúc của XSAQCT

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

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

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

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

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

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

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

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

3.5 EXI

3.5.1 Tổng quan về EXI

3.5.2 EXI Header

3.5.2.2 Các bit phân biệt

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

Trang 7

3.5.2.5.EXI Options

3.5.2.6.Padding bits

3.5.3 EXI Body

3.5.3.1.Event Code

3.5.3.2.Event Content

3.5.4 String Table

3.5.5 EXI Grammar

3.5.5.1.Built-In Grammar

3.5.5.2.Schema-informed Grammar

3.5.6 Quá trình nén EXI

3.5.6.1.Block

3.5.6.2.Channel

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

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

3.5.6.3 Dòng nén (Compressed Stream)

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

4.1 Dữ liệu thử nghiệm

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

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

4.3.1 Tỷ lệ nén Compression ratio

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

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

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

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

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

TÀI LIỆU THAM KHẢO

Trang 8

LanguageExtensible Markup LanguageXML Schema Definition LanguageExtensible Stylesheet Language

Transformations

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

Định nghĩa kiểu tài liệu Hệ thống định vị toàn cầu Ngôn ngữ đánh dấu siêu văn bản

Ngôn ngữ đánh dấu tổng quát hóa tiêu chuẩn

Ngôn ngữ đánh dấu mở rộng.Ngôn ngữ định nghĩa lược đồ

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

Hình 1.1: XSLT style sheets được sử dụng để chuyển đổi giữa các tài liệu XML [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]

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

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]

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]

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]

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

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

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

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

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

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

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

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

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

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]

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]

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

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]

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]

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]

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]

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

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

Hình 3.19: EXI Cookie [6]

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

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

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

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

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

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

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

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

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

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 67

Biể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ềntả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ảmkhô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ìmhiể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 XMLbao 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ướngdẫ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ậnvă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ề địnhnghĩa kiểu tài liệu Document Type Definition - DTD , ngôn ngữ định nghĩa lược đồ XMLSchema 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énvă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éncủ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 ramộ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ợpnhấ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 khaibá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ểutà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ởiliên minh mạng toàn cầu World Wide Web Consortium với mục đích đơn giản hoá quá trìnhtrao đổ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ếtnối qua Internet Giống như HTML, XML cũng là một tập con của SGML StandardGeneralized 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âncấ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ìnhmá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ượngcủ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àiliệ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 ProcedureCalls 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

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

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

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

Trang 14

Kiểm tra tính hợp lệ

Được định nghĩa một cách chặt chẽ

Các phần từ phải được đó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 prologdocument 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áoXML, đị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ácphầ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

Prolog(tùy chọn)

Trang 15

Phần tử gốcbắt buộc

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 16

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 17

<!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úctà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, thaotác nội dung tài liệu Tuy nhiên, không như HTML sử dụng một DTD đã được định nghĩatrướ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ệncho 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ấtcủ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ângcao 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 18

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àysang 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 haylọ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áckịch bản chuyển đổi tài liệu

Trang 19

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>

</book>

<book category="Non-Fiction"> <title>Integration

for Durnrnies</title> <author>John Doe</author>

Trang 20

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 XMLgồ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ểnthao 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 giantê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 21

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énXML 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ũngtrì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átmộ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 ảnhhay â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 ítthô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 Trongphươ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ệugố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 22

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

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

Tỷ lệ nén là một trong các đặc trưng quan trọng nhất của mọi phương pháp nén Tỷ

lệ nén được tính theo công thức sau:

ỷ ệ é

2.1.3.2 Hiệu suất nén

Hiệu suất nén được tính theo công thức sau:

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ừachí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ấtthấ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ớiphươ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ếpnhau 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áchhợ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ễntrong 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 23

11khá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ápné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énthườ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ôngthườ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énvă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 24

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 chonê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àothông tin lược đồ của tài liệu gồm có bộ nén phụ thuộc lược đồ schema-dependentcompressors 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-dependentcompressors), 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-independentcompressors , 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 25

13đí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ănbả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 truyvấ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àiliệ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ếpcá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áytí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 địnhnhó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ệucủ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ộtcá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ướidạ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énvă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 26

ộ 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ốngnhau, 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ữuhạ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 đắtnhấ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ặcgiả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ữacá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 trongkhi 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ầuphả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]

Trang 27

AXECHOP

Trang 28

Bộ nén đồng cấu (homomorphic compressors) là loại bộ nén giữ lại cấu trúc ban đầucủ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ộtcá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ấutrú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 trongquá 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]

Trang 29

XQueC

Trang 30

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énkhô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ôngtruy 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ậtnén XML bao gồm XMill, XGrind, XAUST, XSAQCT và EXI

Trang 31

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ácthẻ 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 dataitem 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ệudata 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 containerkhá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ứacontainer 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ểuthứ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 địnhbằ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ứctạ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ủaXMill, 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 queryprocessor 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ảmkhông gian bộ nhớ Hạn chế thứ hai của XMill đó là nó chỉ đạt được kết quả tốt cho nhữngtập tin lớn, thường lớn hơn 20KB

Trang 32

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àiXML đượ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 DataContainer) 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ềukhiể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 đượclư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énbằ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ấutrúc này được thẻ hóa tokenized trong XMill như sau: các thẻ bắt đầu được mã hóa từ

Trang 33

19đ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ủachú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 34

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ínhquy (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 35

21Mỗ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 theothứ 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 địnhphù 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ìnhghé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 địnhnghĩa bởi i, Match c, p

Trang 36

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ếthợ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]

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ôngtạ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 trongcá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 37

23Trong đó, 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ướidescription 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áchdelimiter , 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ườidù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 trongXMill và XDemill bằng cách cài dặt sử dụng SCAPI Semantic Compressor API APIyê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ênduy 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 38

class UserCompressor {

virtual unsigned GetContainerNum()=0;

virtual bool IsRejecting()=0;

virtual bool ParseString (char *

virtual void CompressString(char *str, int len,

Container *contarray, void *state)=0; classvirtual 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 đầucủ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ệuné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àiliệ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ênbả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ớità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ộctí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átchung

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 39

25cá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ị duynhấ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ệnzipcode … Giá trị liệt kê thường được khai báo trong DTD XGrind nhận biết các thuộc tínhliệ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ệtkê

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ếtphả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ộtcá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 chomộ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ínhkhô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ôngcầ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-matchkhó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 Trongkhi đó, 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ủaphầ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 40

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ệuXML 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ìnhgiả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ínhsau: 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ộctí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ựavà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óabằng ký tự “T” được theo sau bởi một định danh duy nhất - ID Tất cả các thẻ kếtthú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ó

Ngày đăng: 11/11/2020, 22:21

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w