Cơ sở dữ liệu nâng cao
MỤC LỤC
GVHD : PGS.TS Đỗ Phúc Trang 1
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
LỜI MỞ ĐẦU
Ngày nay các hệ thống lưu trữ ảnh vân tay thô xuống database trong các công ty
ngày càng phát triển, mỗi khi khách hàng hoặc nhân viên đăng nhập (không cần gõ
username + pass world mà chỉ cần sử dụng vân tay) hệ thống sẽ tải từng file ảnh
lên rồi dùng thuật toán so khớp. Tuy nhiên khi dữ liệu quá lớn thì việc này là bất
khả thi về thời gian chờ cũng như dung lượng đường truyền. Việc xử lý đòi hỏi phải
linh hoạt và không làm gián đoạn ứng dụng.Với hệ thống lưu trữ hiện tại không thể
linh động với đòi hỏi này.
Người sử dụng muốn có một cầu nối, một biện pháp để giải quyết những vấn đề
trên do đó dữ liệu đồ thị ra đời. Cơ sở dữ liệu đồ thị là cách thức lưu trữ thông tin
ở dạng đồ thị những đỉnh (Node) và cạnh (Edge).Với cách thức lưu trữ này, việc
quản lý dữ liệu trở nên mềm dẽo và dễ dàng hơn ngay cả trong việc ứng dụng tri
thức vào khối dữ liệu lưu trữ.
Tiểu luận này là sự khởi đầu cho việc thực hiện bài luận tốt nghiệp cuối khóa, do
thời gian có hạn nên em chỉ trình bày khái quát về cơ sở dữ liệu đồ thị, đồng thời
ứng dụng trong việc lưu trữ dữ liệu đồ thị (được biểu diễn bằng ma trận) xuống
“Cơ sở dữ liệu”.
Em xin chân thành cảm ơn PGS.TS. Đỗ Phúc – Giảng viên phụ trách giảng dạy
chuyên đề “cơ sở dữ liệu nâng cao” đã truyền đạt những kiến thức cùng kinh
nghiệm vô cùng quý báu đồng thời gợi ý về việc thực hiện đề tài này, xin chân
thành cám ơn ban cố vấn học tập và ban quản trị chương trình đào tạo”Thạc sĩ
Khoa học máy tính” của Đại Học Quốc Gia TPHCM đã tạo điều kiện về tài liệu
tham khảo để em có thể hoàn thành môn học này.
GVHD : PGS.TS Đỗ Phúc Trang 2
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
CHƯƠNG I. TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU
ĐỒ THỊ (GRAPH DATABASE)
1. Tổng quan về đồ thị
• Trong toán học và tin học, đồ thị là đối tượng nghiên cứu cơ bản của lý thuyết đồ
thị. Một cách không chính thức, đồ thị là một tập các đối tượng gọi là đỉnh nối
với nhau bởi các cạnh. Thông thường, đồ thị được vẽ dưới dạng một tập các điểm
(đỉnh, nút - Node) nối với nhau bởi các đoạn thẳng (cạnh - Edge). Tùy theo ứng
dụng mà một số cạnh có thể có hướng.
Đồ thị vô hướng
Hình 1.1.1: Đồ thị vô hướng
Đồ thị vô hướng hoặc đồ thị G là một cặp không có thứ tự (ordered pair) G:=(V,
E), trong đó
V, tập các đỉnh hoặc nút (Node)
E, tập các cặp không thứ tự chứa các đỉnh phân biệt, được gọi là cạnh
(Edge). Hai đỉnh thuộc một cạnh được gọi là các đỉnh đầu cuối của cạnh đó.
Tập các cạnh bao gồm cả các cặp đỉnh không phân biệt, các cạnh này được gọi là
các khuyên. V (và E) thường là các tập hữu hạn, phần lớn các kết quả nghiên cứu đã
biết không đúng (hoặc khác) khi áp dụng cho đồ thị vô hạn (infinite graph) vì nhiều
luận cứ không dùng được trong trường hợp vô hạn.
GVHD : PGS.TS Đỗ Phúc Trang 3
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
Đồ thị có hướng
Hình 1.1.1: Đồ thị vô hướng
Đồ thị có hướng G là một cặp có thứ tự G:=(V, A), trong đó
V, tập các đỉnh hoặc nút,
E, tập các cặp có thứ tự chứa các đỉnh, được gọi là các cạnh có hướng hoặc
cung. Một cạnh e = (x, y) được coi là có hướng từ x tới y; x được gọi là điểm
đầu/gốc và y được gọi là điểm cuối/ngọn của cạnh.
• Cấu trúc đồ thị có thể mở rộng bằng cách gán trọng số cho các cạnh của đồ thị. Có
thể sử dụng đồ thị có trọng số để ứng dụng trong thực tế như chiều dài con đường
(tìm đường đi ngắn nhất giữa 2 điểm), thời gian đi giữa hai nút, độ mạnh liên kết
giữa các nút, số giao tác kết nối giữa 2 nút cùng thời điểm.
Tham khảo và trích dẫn từ />%C4%90%E1%BB%93_th%E1%BB%8B_%28l%C3%BD_thuy
%E1%BA%BFt_%C4%91%E1%BB%93_th%E1%BB%8B
%29#.C4.90.E1.BB.93_th.E1.BB.8B_v.C3.B4_h.C6.B0.E1.BB.9Bn
g
GVHD : PGS.TS Đỗ Phúc Trang 4
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
2. Cơ sở dữ liệu đồ thị
a. Giới thiệu :
Cơ sở dữ liệu đồ thị là tập các đồ thị.Một cơ sở dữ liệu đồ thị có thể có nhiều
đồ thị nhưng cũng có thể chỉ có một đồ thị, đó là một đồ thị rất lớn chứa nhiều
nút và đỉnh ví dụ như mạng xã hội
b. Cách lưu trữ dữ liệu đồ thị :
Lưu trữ bằng RDBMS
Dữ liệu được lưu trữ thành những dòng và cột trong những table khác
nhau. Dữ liệu được truy xuất bằng câu lệnh SQL.SQL cho phép người sử
dụng truy xuất khá mạnh mẽ dữ liệu đồ thị bao gồm cả việc trích xuất dữ liệu
mới từ dữ liệu đã lưu trữ .
Mặc dù có nhiều điểm mạnh nhưng SQL không thể hổ trợ những thao tác
tính toán, những biểu thức phức tạp một cách linh hoạt và tùy lúc.Ví dụ như
tính chi phí một con đường đi từ đỉnh này để đỉnh khác, tìm chi phí thấp nhất
để đi giữa hai nút cho trước…
Lưu trữ bằng SBGE
Để giải quyết vấn đề trên DB2 và RDBMS đã mở rộng SQL bằng cách
xây dựng nhưng hàm cụ thể được gọi là user-defined functions (UDFs).
UDFs được sử dụng mọi nơi mà người sử dụng muốn.
SBGE sử dụng những hàm mở rộng của DB2 để thao tác trên dữ liệu đồ
thị.Với SBGE có thể dễ dàng quản lý dữ liệu đồ thị thông qua các nút, cạnh.
Với RDBMSs cho phép người sử dụng định nghĩa cũng như tìm kiếm
những đồ thị con. RDBMSs có thể linh hoạt trên một đồ thị dữ liệu lớn bởi vì
GVHD : PGS.TS Đỗ Phúc Trang 5
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
SQL có thể tìm kiếm mà không đòi hỏi việc load cả dữ liệu đồ thị lên bộ nhớ
tạm. Do đó, SBGE chính là sự kết hợp giữa SQL để quản lý dữ liệu của đồ
thị và những hàm mở rộng để quản lý những hàm truy xuất của đồ thị.
Lưu trữ bằng network data model trong oracle
Oracle hỗ trợ những procedure để tạo dữ liệu đồ thị.Tiểu luận này sẽ trình
bày chi tiết cách sử dụng data network model để lưu trữ cũng như phân tích
dữ liệu đồ thị.
Tham khảo và trích dẫn từ “Nguyễn Ngọc Diễm - Tiểu luận chuyên
đề Cơ Sở Dữ Liệu Nâng Cao”
3. Ứng dụng của Cơ sở dữ liệu đồ thị
• Trong sinh học: lưu trữ cấu trúc Gien, protein,…
• Trong hóa học: lưu trữ cấu tạo phân tử các chất, hợp chất,…
• Trong tin học: Mạng xã hội, lưu trữ hình ảnh,…
GVHD : PGS.TS Đỗ Phúc Trang 6
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
CHƯƠNG II. GIẢI QUYẾT BÀI TOÁN
1. Giới thiệu bài toán
Bài toán đặt ra là: chúng ta sẽ dùng các thiết bị hỗ trợ để scan các dấu vân
tay và mã hóa các hình ảnh này sang đồ thị và lưu trữ vào cơ sở dữ liệu. Khi
khách hàng đăng nhập bằng dấu vân tay, hệ thống sẽ scan dấu vân tay này và xử
lý bên dưới cơ sở dữ liệu đồ thị để tối ưu hóa thời gian chờ khi dữ liệu lưu trữ
khổng lồ.
Hình 2.1.1.1: Hình ảnh về các dấu vân tay (Finger print)
Trong bài tiểu luận này, em sẽ trình bày quá trình lưu 1 đồ thị (đã mã hóa
thành ma trận) vào cơ sở dữ liệu. Vấn đề về mã hóa hình ảnh vân tay thành đồ
thị và tìm kiếm dấu vân tay trong cơ sở dữ liệu đồ thị em sẽ cố gắng nghiên cứu
và hoàn chỉnh đề tài này để trình bày trong bài luận cuối khóa.
GVHD : PGS.TS Đỗ Phúc Trang 7
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
2. Giải quyết bài toán
Trong báo cáo này, em sử dụng C# (Visual 2005) giao diện Form để người dùng
nhập đồ thị được biểu diễn dạng ma trận vào cơ sở dữ liệu. Cơ sỡ dữ liệu sử dụng là
SQL Server 2005.
Hình 2.2.1: Mô hình dữ liệu đồ thị
Table “Graph”
Tên thuộc tính Kiểu Mô tả
graphID Int ID của Graph, là duy nhất không được trùng với
các id khác.
graphNAME Varchar Tên của Graph
graphDescription Text Mô tả
Table “Node”
GVHD : PGS.TS Đỗ Phúc Trang 8
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
Tên thuộc tính Kiểu Mô tả
nodeID Int ID của Node (đỉnh), là duy nhất không được
trùng với các id khác.
nodeNAME Varchar Tên của Node
graphID Int Khóa ngoại, Link tới table “Graph”
nodeLevel Int Bậc của Node (chỉ xét đồ thị vô hướng).
Table “Edge”
Tên thuộc tính Kiểu Mô tả
edgeID Int ID của Edge (cạnh), là duy nhất không được
trùng với các id khác.
graphID Int Khóa ngoại, link tới table “Graph”
nodeID1 Int Khóa ngoại, Link tới table “Node”
nodeID2 Int Khóa ngoại, Link tới table “Node”
Length Int Độ dài giữa nodeID1 và nodeID2 (độ dài giữa 2
đỉnh).
Ví dụ với đồ thị dữ liệu sau :
GVHD : PGS.TS Đỗ Phúc Trang 9
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
Hình 2.2.2: Đồ thị vô hướng G1
Tập đỉnh: V(A, B, C, D, E, F, L, H, G)
Tập cạnh: E(AB, AG, BC, CF, DG, DE, EF, EH, FL, LH, HG)
Biểu diễn đồ thị G1 dưới dạng ma trận
G1 =
Cho giá trị cụ thể tập cạnh (L1,L2,…,L10)
E
G1 =
Giải thuật trên máy tính
• Create Table “Graph” trong SQL Server
GVHD : PGS.TS Đỗ Phúc Trang 10
HVTH : Mã Tuấn Huy
CREATE TABLE [dbo].[graph](
[graphID] [int] IDENTITY(1,1) NOT NULL,
[graphName] [nvarchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL,
[graphDescription] [text] COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_graph] PRIMARY KEY CLUSTERED
(
[graphID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
Cơ sở dữ liệu nâng cao
• Create Table “Node” trong SQL Server
• Create Table “Edge” trong SQL Server
Giao diện Form sử dụng
GVHD : PGS.TS Đỗ Phúc Trang 11
HVTH : Mã Tuấn Huy
CREATE TABLE [dbo].[node](
[nodeID] [int] NOT NULL,
[nodeName] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL,
[graphID] [int] NOT NULL,
[nodeLevel] [int] NOT NULL,
CONSTRAINT [PK_node] PRIMARY KEY CLUSTERED
(
[nodeID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[edge](
[edgeID] [int] NOT NULL,
[graphID] [int] NOT NULL,
[nodeID1] [int] NOT NULL,
[nodeID2] [int] NOT NULL,
[length] [int] NOT NULL,
CONSTRAINT [PK_edge] PRIMARY KEY CLUSTERED
(
[edgeID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
Cơ sở dữ liệu nâng cao
Hình 2.2.3: Giao diện ban đầu.
Nhập tên và số đỉnh của đồ thị cần lưu trữ xuống cơ sở dữ liệu sau đó nhấn nút “New
Graph”.
GVHD : PGS.TS Đỗ Phúc Trang 12
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
Hình 2.2.3
Danh sách bên dưới tự động tạo số dòng và số cột bằng với số đỉnh mà ta vừa nhập.
Ta nhập đồ thị được biểu diễn dưới dạng ma trận vào danh sách như “Hình 2.2.3”
sau đó nhấn nút “Save” để lưu dữ liệu vào cơ sở dữ liệu.
Hình 2.2.3: Thông báo đã lưu thành công.
GVHD : PGS.TS Đỗ Phúc Trang 13
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
CHƯƠNG III. KẾT QUẢ ĐẠT ĐƯỢC
Bước đầu tìm hiểu về đồ thị và cơ sở dữ liệu đồ thị, thực hiện thành công việc
lưu dữ liệu đồ thị vào cơ sở dữ liệu (SQL Server 2005).
Tuy nhiên do thời gian có hạn, nên kết quả còn nhiều hạn chế:
• Việc sử dụng mô hình lưu trữ như trên tuy đơn giản nhưng truy xuất chậm
nếu dữ liệu lớn.
• Chưa tối ưu hóa mô hình dữ liệu.
Hướng phát triển:
• Tiếp tục tìm hiểu và nghiên cứu “Cơ sở dữ liệu đồ thị” và áp dụng hệ cơ sở dữ
liệu khác trong việc lưu trữ dữ liệu đồ thị để tối ưu hóa thời gian tìm kiếm.
• Phát triển hoàn chỉnh thành bài luận cuối khóa với những mục tiêu đã đề ra lúc
đầu.
• Kết hợp với bài tiểu luận trong các chuyên đề trước đã thực hiện: “Tìm hiểu về
Logic Mờ” để áp dụng cho việc tìm gần đúng đối với trường hợp sử dụng ảnh
gương mặt để lưu trữ hoặc tìm theo ảnh dấu vân tay.
GVHD : PGS.TS Đỗ Phúc Trang 14
HVTH : Mã Tuấn Huy
Cơ sở dữ liệu nâng cao
CHƯƠNG IV. TÀI LIỆU THAM KHẢO
1. Tài liệu giấy:
• A/ Prof. Do Phuc - Mining, Indexing and Searching Graph Databases
• HOÀNG KIẾM – THANH THỦY – CHI MAI – “Đôi cánh I – CA – RƠ nhà
xuất bản thống kê HÀ NỘI – 1990”
• PGS.TS. Đỗ Văn Nhơn – TS. Đỗ Phúc – “Giáo trình Các Hệ Cơ Sở Tri Thức, Đại
học Quốc gia Tp.HCM, 2002”.
• Bài thu hoạch các khóa trước (khóa 2008 – 2009 - 2010).
2. Tài liệu Web:
• />%C3%BD_thuy%E1%BA%BFt_%C4%91%E1%BB%93_th%E1%BB%8B
%29#.C4.90.E1.BB.93_th.E1.BB.8B_v.C3.B4_h.C6.B0.E1.BB.9Bng
• />• />GVHD : PGS.TS Đỗ Phúc Trang 15
HVTH : Mã Tuấn Huy