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ả tron
Trang 1LỜI MỞ ĐẦU 2
CHƯƠNG I TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU ĐỒ THỊ (GRAPH DATABASE)3 1 Tổng quan về đồ thị 3
2 Cơ sở dữ liệu đồ thị 5
3 Ứng dụng của Cơ sở dữ liệu đồ thị 6
CHƯƠNG II GIẢI QUYẾT BÀI TOÁN 7
1 Giới thiệu bài toán 7
2 Giải quyết bài toán 8
CHƯƠNG III KẾT QUẢ ĐẠT ĐƯỢC 14
CHƯƠNG IV TÀI LIỆU THAM KHẢO 15
1 Tài liệu giấy: 15
2 Tài liệu Web: 15
Trang 2LỜ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.
Trang 3CHƯƠ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
Trang 4 Đồ 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ừ
http://vi.wikipedia.org/wiki/%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
Trang 52 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ị :
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…
Để 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ì 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ị
Trang 6 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,…
Trang 7CHƯƠ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
Trang 82 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”
Trang 9Tê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 :
Trang 10Hì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 = |L11 L11 L20 00 00 00 00 00 L 90
Cho giá trị cụ thể tập cạnh (L1,L2,…,L10)
E
[ L1= L2=¿¿12
L 3=¿3
L 4=¿4
L 5=¿6
L 6=¿5
L 7=¿3
L 8=¿4
L 9=¿1
L10=¿2]
Trang 11G1 = |1 1 0 0 0 0 0 0 11 1 2 0 0 0 0 0 0
0 2 1 0 0 3 0 0 0
0 0 0 1 2 0 0 0 4
0 0 0 2 1 6 0 5 0
0 0 3 0 6 1 4 0 0
0 0 0 0 0 4 1 5 0
0 0 0 0 5 0 5 1 3
Giải thuật trên máy tính
Create Table “Graph” trong SQL Server
Create Table “Node” trong SQL Server
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]
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]
Trang 12 Create Table “Edge” trong SQL Server
Giao diện Form sử dụng
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”
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]
Trang 13Hì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.
Trang 14CHƯƠ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
Trang 15CHƯƠ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:
http://vi.wikipedia.org/wiki/%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.9Bng
http://en.wikipedia.org/wiki/Graph_database
http://www.graph-database.org/