BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC QUY NHƠN
TRÌNH THỊ BÍCH PHƯỢNG
ỨNG DỤNG MÔ HÌNH CƠ SỞ DỮ LIỆU ĐỒ THỊ
XÂY DỰNG CƠ SỞ DỮ LIỆU MẠNG THÔNG TIN
•••
ĐẢNG VIÊN TẠI HUYỆN TUY PHƯỚC,
TỈNH BÌNH ĐỊNH
Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số: 8480101
Người hướng dẫn: TS. Trần Thiên Thành
LỜI CAM ĐOAN
Tôi xin cam đoan đây là quá trình nghiên cứu của riêng tôi. Các số liệu,
kết quả nêu trong luận văn là hoàn toàn trung thực và có nguồn gốc rõ ràng.
Quy Nhơn, ngày tháng năm 2020
Người thực hiện
Trình Thị Bích Phượng
LỜI CẢM ƠN
Trước hết em xin được bày tỏ lòng biết ơn sâu sắc đối với thầy giáo
hướng dẫn TS. Trần Thiên Thành, Khoa Công nghệ thông tin - Trường Đại
học Quy Nhơn đã tận tình giúp đỡ, hướng dẫn em trong thời gian vừa qua và
đã dành rất nhiều thời gian quý báu để giúp em hoàn thành đề tài luận văn
được giao. Em xin chân thành cảm ơn Thầy.
Em xin gửi lời cảm ơn đến các Thầy cô giáo trong Khoa Công nghệ
thông tin, trường Đại học Quy Nhơn đã giảng dạy em trong suốt quãng thời
gian qua, cung cấp cho chúng em những kiến thức chuyên môn cần thiết và
quý báu giúp chúng em hiểu rõ hơn các lĩnh vực đã nghiên cứu để hoàn thành
đề tài luận văn được giao.
Cuối cùng, em xin cảm ơn gia đình và đồng nghiệp, bạn bè đã động viên
cổ vũ, đóng góp ý kiến cho em trong suốt quá trình học cũng như làm luận văn
tốt nghiệp giúp em hoàn thành đề tài luận văn đúng thời hạn.
Quy Nhơn, ngày tháng năm 2020
Người thực hiện
Trình Thị Bích Phượng
MỤC LỤC
••
LỜI CAM ĐOAN
LỜI CẢM ƠN
DANH MỤC CÁC CHỮ VIẾT TẮT
DANH MỤC CÁC BẢNG
DANH MỤC CÁC HÌNH
MỞ ĐẦU.........................................................................................................1
CHƯƠNG 1. CƠ SỞ DỮ LIỆU ĐỒ THỊ........................................................3
1.1. Cơ sở dữ liệu đồ thị ............................................................................. 3
1.2. Đặc trưng của cơ sở dữ liệu đồ thị.........................................................6
1.2.1 Hiệu suất (Performance)............................................................ 6
1.2.2 Linh động (Flexibility) ............................................................. 6
1.2.3 Dễ dàng phát triển và nâng cấp ................................................. 7
1.3. Một số ứng dụng của cơ sở dữ liệu đồ thị .......................................... 7
1.4. Một số hệ quản trị cơ sở dữ liệu đồ thị................................................8
1.4.1 Neo4J ........................................................................................ 8
1.4.2 DEX .......................................................................................... 9
1.4.3 Infinite Graph ............................................................................ 9
1.4.4 Hyper GraphDB......................................................................... 9
1.5. Mô hình dữ liệu của CSDL đồ thị ...................................................... 10
1.6. Hệ quản trị cơ sở dữ liệu đồ thị Neo4J................................................ 13
1.6.1 Các tính năng của Neo4j.......................................................... 13
1.6.2 Mô hình dữ liệu của Neo4J ...................................................... 14
1.7. Thao tác với dữ liệu Neo4J ............................................................... 15
1.7.1 Truy vấn b ng Cypher ............................................................. 15
1.8. Chuyển đổi từ dữ liệu quan hệ sang dữ liệu đồ thị............................. 18
1.9. Kết luận chương 1...............................................................................21
CHƯƠNG 2. XÂY DỰNG CƠ SỞ DỮ LIỆU ĐẢNG VIÊN THEO MÔ HÌNH
ĐỒ THỊ ...........................................................................................................22
2.1. Giới thiệu về bài toán Quản lý Đảng viên...........................................22
2.2. Lý do chọn mô hình đồ thị để quản lý Đảng viên ..............................23
2.3. Cơ sở dữ liệu đảng viên trong mô hình quan hệ ................................27
2.3.1 Sơ đồ tổng thể ..........................................................................27
2.3.2 Chi tiết các bảng ......................................................................28
2.4. Chuyển đổi sang cơ sở dữ liệu đồ thị ................................................43
Chi tiết ý nghĩa các thực thể: .............................................................44
Chi tiết ý nghĩa các mối quan hệ: .......................................................51
2.5. Truy vấn trên cơ sở dữ liệu đảng viên................................................52
2.6. Kết luận chương 2 .............................................................................61
CHƯƠNG 3. THỰC NGHIỆM .....................................................................62
3.1. Xây dựng cơ sở dữ liệu đảng viên trên mô hình đồ thị .....................62
3.1.1 Tạo cơ sở dữ liệu đảng viên .....................................................62
3.1.2 Chuyển dữ liệu từ cơ sở dữ liệu quan hệ sang cơ sở dữ liệu đồ
thị ........................................................................................................64
3.1.3 Minh họa..................................................................................68
3.2. Thực hiện các truy vấn ......................................................................71
3.3. Nhận xét và đánh giá .........................................................................77
3.4. Kết luận chương 3 ..............................................................................77
KẾT LUẬN ...................................................................................................78
DANH MỤC TÀI LIỆU THAM KHẢO .......................................................79
PHỤ LỤC
QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN THẠC SĨ (bản sao)
DANH MỤC CÁC TỪ VIẾT TẮT
TT
1
2
3
TỪ VIẾT TẮT
DIỄN GIẢI
TW
Trung ương
DB
Database (cơ sở dữ liệu)
RDBMS
Hệ quản trị cơ sở dữ liệu quan hệ (Relational
database management system)
4
Graph Database /
Cơ sở dữ liệu đồ thị
GraphDB
5
CSDL
Cơ sở dữ liệu
6
QLDV
Quản lý Đảng viên
DANH MỤC CÁC BẢNG
Bảng 2- 1Cấu trúc bảng DangB'o...................................................................28
Bảng 2-2Cấu trúc bảng ChiBo ........................................................................29
Bảng 2-3Cấu trúc bảng Dangvien ..................................................................29
Bảng 2-4Cấu trúc bảng DmTrinhdoHocvan ..................................................3 1
Bảng 2-5Cấu trúc bảng DmTrinhdoChuyenmon ...........................................3 1
Bảng 2-6Cấu trúc bảng Sinhhoatdang ...........................................................32
Bảng 2-7Cấu trúc bảng Dangvienthamgiasinhhoatdang ................................32
Bảng 2-8Cấu trúc bảng Vanban .....................................................................33
Bảng 2-9Cấu trúc bảng Banhanhvanbantoichibo ...........................................34
Bảng 2-10Cấu trúc bảng DmKqXeploai..........................................................35
Bảng 2-11Cấu trúc bảng DanhmucXeploainam .............................................35
Bảng 2-12Cấu trúc bảng Xeploaidangviennam ..............................................36
Bảng 2-13Cấu trúc bảng Dmtinhtp .................................................................36
Bảng 2-14Cấu trúc bảng Dmquanhuyen..........................................................37
Bảng 2-15Cấu trúc bảng Dmchucvu ...............................................................37
Bảng 2-16Cấu trúc bảng Dmxeploaicongtac ..................................................37
Bảng 2-17Cấu trúc bảng Quatrinhcongtac.......................................................38
Bảng 2-18Cấu trúc bảng Dmquanhe ...............................................................39
Bảng 2-19Cấu trúc bảng Quanhegiadinh ........................................................40
Bảng 2-20Cấu trúc bảng Dmloaitaisan ..........................................................4 1
Bảng 2-21Cấu trúc bảng Dmlydotanggiamts...................................................41
Bảng 2-22Cấu trúc bảng Kekhaithunhaphangnam .........................................42
Bảng 2-23Cấu trúc bảng Kekhaithunhapchitiettaisan ....................................42
Bảng 3-1 Danh sách các bảng trích từ cơ sở dữ liệu đảng viên......................64
Hình 1.1Toàn cảnh các mô hình CSDL thông dụng 4 ....................................3
Hình 1.2. Đồ thị thuộc tính biểu diễn thông tin thư mục của các công bố khoa
học 2 ..................................................................................................4
Hình 1.3 Node trong cơ sở dữ liệu đồ thị........................................................10
Hình 1.4 Relationship trong cơ sở dữ liệu đồ thị ............................................10
Hình 1.5 Minh họa mối quan hệ một nút đến chính nó ..................................11
Hình 1.6 Minh họa nhãn trong các nodes .......................................................12
Hình 1.7 Minh họa Traversal ..........................................................................13
Hình 1.8 Đồ thị minh họa cho câu lệnh Cypher .............................................15
DANH MỤC CÁC
HÌNH
Hình 2.1 Mối quan hệ giữa đảng viên và chi bộ trong mô hình đồ thị ...........24
Hình 2.2 Minh họa bảng DANGVIEN ...........................................................25
Hình 2.3 Minh họa mối quan hệ Friend_Of của các đảng viên ......................26
Hình 2.4 Minh họa chuyển dữ liệu từ bảng sang đồ thị..................................27
Hình 2.5 Sơ đồ của cơ sở dữ liệu đảng viên trong mô hình quan hệ ..............28
Hình 2.1 Lược đồ cơ sở dữ liệu đảng viên trong mô hình đồ thị.....................43
Hình 3.1 Tạo CSDL QLDVTuyPhuoc............................................................62
Hình 3.2 Khởi động CSDL QLDVTuyPhuoc..................................................62
Hình 3.3 CSDL QLDVTuyPhuoc đã khởi động..............................................63
Hình 3.4 Giao diện quản lý CSDL QLDVTuyPhuoc .....................................63
Hình 3.5 Import dữ liệu vào CSDL QLDVTuyPhuoc ....................................67
Hình 3.6 Minh họa CSDL QLDVTuyPhuoc với 2 loại nút DangBo và ChiBo70
1
MỞ ĐẦU
Lí do chọn đề tài:
Cơ sở dữ liệu mô hình quan hệ (RDBMS có vai tr to lớn trong việc quản
lý dữ liệu trong thời gian trước đây. Tuy vậy, đến nay do nhu cầu quản lý
thông tin đa dạng, phong phú và phức tạp hơn nên việc dùng mô hình quan hệ
để quản lý dữ liệu g p nhiều khó khăn trong việc triển khai và sử dụng. Một số
mô hình cơ sở dữ liệu mới ra đời đáp ứng nhu cầu quản lý dữ liệu phức tạp
như mô hình hướng đối tượng, mô hình đồ thị, mô hình họ cột,..
Cơ sở dữ liệu đồ thị (Graph database được sử dụng trong các dữ liệu có
nhiều mối quan hệ như mạng xã hội, các hệ gợi ý, các hệ thống điều khiển truy
cập, Điểm mạnh của cơ sở dữ liệu đồ thị là khả năng lưu trữ các mối quan hệ
và truy vấn trên những quan hệ.
Trong những năm vừa qua việc quản lý cơ sở dữ liệu Đảng viên đã và
đang được xây dựng đâu đó ở nhiều Đảng bộ nh m lưu trữ và tìm kiếm, thống
kê về dữ liệu Đảng viên. Tuy nhiên, nhu cầu về lưu trữ và tìm kiếm thông tin
Đảng viên ngày càng nhiều và phức tạp nên cơ sở dữ liệu Đảng viên đã xây
dựng đôi khi không đáp ứng được, đ c biệt với các Đảng bộ lớn có nhiều đảng
viên, có nhiều cấp Đảng bộ ho c chi bộ trực thuộc thì việc quản lý trở nên khó
khăn, phức tạp hơn rất nhiều. Trong bối cảnh đó, việc xây dựng hệ thống cơ sở
dữ liệu Quản lý Đảng viên là một giải pháp đáp ứng nhu cầu quản lý và tìm
kiếm thông tin Đảng viên đa dạng, phong phú và nhanh chóng.
Sở dĩ việc chọn mô hình đồ thị thay cho mô hình quan hệ vì mô hình quan
hệ bắt buộc dữ liệu phải có cấu trúc ch t chẽ và việc lưu trữ các mối quan hệ
trong mô hình quan hệ rất hạn chế. Trong khi đó nhu cầu quản lý dữ liệu Đảng
viên cần nhiều thông tin không có cấu trúc ch t và cần lưu nhiều mối quan hệ
của Đảng viên, hơn nữa, do nhu cầu quản lý việc mở rộng và thay đổi thường
xuyên diễn ra. Cơ sở dữ liệu đồ thị là một cơ sở dữ liệu NoSQL, mô hình dữ
2
liệu dựa trên lý thuyết đồ thị với khả năng biểu diễn các mối quan hệ giữa các
đối tượng rất phong phú. Cơ sở dữ liệu đồ thị cho phép lưu trữ dữ liệu không
cần cấu trúc ch t như mô hình quan hệ, cho phép truy vấn trên dữ liệu thuộc
tính và các quan hệ nên thuận tiện nhanh chóng khi cần tìm kiếm thông tin
quan hệ của những Đảng viên.
Luận văn này tạ p trung vào ứng dụng cơ sở dữ liệu đồ thị để thiết kế và
xây dựng cơ sở dữ liệu Quản lý Đảng viên tại huyện Tuy Phước, Tỉnh Bình
Định sao cho đáp ứng được nhu cầu lưu trữ, xử lý dữ liệu và tìm kiếm thông
tin nhanh chóng, đáp ứng nhu cầu phong phú của nghiệp vụ Quản lý Đảng
viên.
CHƯƠNG 1. CƠ SỞ DỮ LIỆU ĐỒ THỊ
Trong chương này sẽ trình bày về mô hình cơ sở dữ liệu đồ thị và giới
thiệu một hệ quản trị cơ sở dữ liệu mô hình đồ thị được sử dụng phổ biến là
Neo4J.
1.1. Cơ sở dữ liệu đồ thị
Cơ sở dữ liệu mô hình đồ thị được dựa vào lý thuyết đồ thị và mô hình
cơ sở dữ liệu ngữ nghĩa (xem hình 1.1).
Hình 1.1T n ản
n CSDL n ụn
Đồ thị G là một c p G = (V, E , trong đó V là tập hữu hạn các phần tử,
gọi là các đỉnh; E c V X V là tập các c ặp đỉnh, gọi là các cạnh.
Đồ thị gọi là có hướng nếu m i cạnh xác định thứ tự của hai đỉnh. Một
đồ thị gọi là đồ thị đơn nếu giữa hai đỉnh có không quá một cạnh. Một đồ thị
mà giữa hai đỉnh có nhiều hơn một cạnh gọi là đa đồ thị.
Trong cơ sở dữ liệu đồ thị thường dùng khái niệm đồ thị thuộc tính
(Property Graph) được định nghĩa như sau.
Cho L là tập hữu hạn các nhãn, P là tập hữu hạn các tên thuộc tính, V là
tập các giá trị nguyên tố.
Địn n 1 đồ ị u n 2 Đồ thị thuộc tính G là một bộ G = (N, E, p, Ằ, ơ),
trong đó:
- N là tập hữu hạn các nút (gọi là các đỉnh ,
- E là tập hữu hạn các cạnh,
- p : E ^(N X N) là một ánh xạ mỗ i cạnh với một c ặp đỉnh,
SET+(Z) là hàm kết hợp mỗ i đỉnh ho ặc cạnh
Ằ : (N u E)
-
với một nhãn thuộc tập L,
- ơ : (N^ E)XP ^SET'( V là một ánh xạ kết hợp mỗ i đỉnh hoặc cạnh với
một những thuộc tính và m i thuộc tính gán cho nó một tập những giá trị
trong V.
Author
order-'1”
/
has author
order=“l”
Author
/
Entry,
InProceedings
title=“GraphLog: a
pages—‘404-416”
X booktitle
f
simple paths ...”
numpages—“24”
\ keyword=“recursive queries” /
keyword—‘paths”
\
s'
X
fk
title-‘SIAM J. Comput.
year—‘1995”
vol=“24
X
\
J
Hình 1.2. Đồ thị thu ộ c tín h biếu d iễn th ôn g tin th ư m ụ c củ a các cô n g bố kh 0 a
h ọ c [2]
Ví dụ 1. Đồ thị thuộc tính biểu diễn thông tin thư mục của các công bố khoa
học được cho như hình 1. Các nút là bài viết, tạp chí, k yếu hội thảo,
tác giả được gán các nhãn Author , Journal , Proceedings , Entry,
InProceedings , Entry, Article . Các cạnh là các đường nối giữa các nút, m i
cạnh có một nhãn has author , cites , booktitle , published in . Các đỉnh và cạnh
có các thuộc tính và giá trị, ch ng hạn order= 1 , fname= Mariano ,
N = { n1, n2, n3, n4, n5, n6, n7}
E = { e1, e2, e3, e4, e5, e6, e7}
Ấ(n1)={Author}, (n, fname )=’’Mariano’ ’, (n1, lname )=’’Consens ’ ’
^(n2)={Author}; (n2; fname ) = “ ‘Alberto ’’, (n2, lname ) =
’’Mendelzon’ ’
Ấ(n3)={Author}, (n3, fname )=’’Peter’ (n3, lname )=’’Wood’ ’
Ấ(n4)={Article}, (n4, title )=’’GraphLog
(n4, numpages )=’’13’ (n4,
keyword = Datalog
Ấ(n5)={Article}, (n5, title )=’ ’Finding
(n5, numpages )=’ ’24 ’ ’
(n5,keyword = recursive queries , (n5, keyword = paths
Ấ(n6)={Conference}, (n6, title )=’’PODS’ (n6, year)= “‘1990’(n6, month
= April
Ấ(n7)={Joumal}, (n7, title) = “SIAM
(n7, year)=”1995”, (n7,
vol = 24 , (n7, num = 6
p(ei) = (n4, n1), Ấ(e1)={has_author}, (e1, order) =’’1’ ’
p(e2) = (n4, ni), Ấ(e2)={has_author}, (e2, order) = “‘2 ’’
p(e3) = (n5, n2), Ấ(e3)={has_author}, (e3, order) = ’’1’ ’
p(e4) = (n5, n3), Ấ(e4)={has_author}, (e4, order) = “‘2 ’’
p(e5) = (n5, n4), Ấ(e5)={cites}
p(e6) = (n4, n6), Ấ(e6)={booktitle}, (e6, pages) = ’’404-416’ ’
p(e7) = (n5, n7), Ấ(e7)={published_in}, (e7, pages) = ’’1234-1258’ ’
Theo Wikipedia:
Cơ sở dữ liệu đồ thị (Graph Database) là cơ sở dữ liệu sử dụng cấu trúc
đồ thị với các nút (node), cạnh (edge) và thuộc tính (property) để biểu diễn và
lưu trữ dữ liệu.
Tùy theo mô hình dữ liệu của mỗ i cơ sở dữ liệu mà loại đồ thị tương
ứng được sử dụng. Chẳng hạn cơ sở dữ liệu Neo4J sử dụng loại đồ thị thuộc
tính.
Cơ sở dữ liệu đồ thị là một loại cơ sở dữ liệu NoSQL, trong đó dữ liệu
được lưu tại các nút, các cạnh và các thuộc tính. Khác với mô hình quan hệ, cơ
sở dữ liệu mô hình đồ thị đ t trọng tâm vào các mối quan hệ của dữ liệu nên ph
hợp với những loại dữ liệu có nhiều mối quan hệ và những truy vấn phức tạp
trên các mối quan hệ.
1.2. Đặ c t rưng của cơ sở dữ liệu đồ thị
1.2.1
Hiệu suất (Performance)
Trong các CSDL quan hệ, khi các tập dữ liệu ngày càng lớn thì việc
thực hiện các truy vấn sâu và phải kết hợp nhiều bảng dữ liệu sẽ tạo ra các
bảng dữ liệu trung gian có kích thước lớn và tốn thời gian xử lý do sử dụng
phép kết nối. Với CSDL đồ thị thì dữ liệu không phải kết nối dữ liệu vì bản
thân dữ liệu đã có s n các kết nối trong các mối quan hệ, vì các truy vấn đã
được nội bộ hóa thành một phần của đồ thị. Như vậy, thời gian thực hiện truy
vấn t lệ với kích thước của một phần đồ thị được duyệt để đáp ứng truy vấn
chứ không phụ thuộc vào kích thước của toàn bộ CSDL đồ thị. Do vậy dù kích
thước của tập dữ liệu có tăng lên thì thời gian thực hiện truy vấn vẫn không
ảnh hưởng.
1.2.2
Linh động (Flexibility)
Tính linh động là một đ c trưng thấy rõ và khác biệt nhất của CSDL
NoSQL mà CSDL đồ thị là một trong số đó, so với các CSDL khác, rõ nhất là
CSDL mô hình quan hệ. Với CSDL đồ thị, chúng ta không cần xác định trước
cấu trúc hay mô hình của CSDL. Có thể so với CSDL quan hệ, khi xây dựng
một CSDL cho một bài toán, chúng ta phải xác định cấu trúc của các bảng là
các trường, kiểu của trường và sau đó gần như là không thay đổi gì ho c thay
đổi cũng rất khó khăn, đơn cử như việc thêm bớt trường hay thay đổi kiểu của
trường . . . Với CSDL đồ thị thì chúng ta hoàn toàn có thể thêm vào nút hay
các mối quan hệ, các thuộc tính mới mà không làm ảnh hưởng tới các nút
khác, cũng không làm thay đổi kết quả truy vấn đang thực hiện.
Như vậy, có thể thấy CSDL đồ thị rất linh động, phù hợp cho các công
việc có tính chất hay thay đổi và độ ổn định không cao. Bởi tính linh động này
mà người ta không cần phải cam kết một mô hình nào đó mà sau một thời gian
lại thấy không phù hợp và phải xây dựng lại. Ngoài ra thì tính linh động này
còn giảm bớt chi phí bảo trì và rủi ro như các CSDL khác mang lại.
1.2.3
Dễ dàng phát triển và nâng cấp
Với tính chất tự nhiên trong các lược đồ tự do của mô hình dữ liệu của
CDL đồ thị cộng với việc được h trợ tốt các giao diện lập trình ứng dụng (API
cũng như ngôn ngữ truy vấn, CSDL đồ thị cho phép chúng ta phát triển các
ứng dụng một cách có kiểm soát. Chúng ta có thể dễ dàng vận dụng và thử các
xu hướng mới một cách nhanh nhẹn và đưa ra xu hướng phù hợp nhất có thể.
1.3. M t số ứng dụng c
ơ sở dữ liệu đồ thị
Khả năng thực thi nhanh (Performance là ưu điểm rất lớn của CSDL đồ
thị so với CSDL quan hệ (RDBMS). Khi dữ liệu lớn cùng với việc sử dụng
nhiều câu lệnh join sẽ khiến hiệu suất trở nênchậm chạp, trong khi thì CSDL
đồ thị với cách truy vấn dữ liệu chỉ tập trung vào một phân khu của đồ thị có
chứa các dữ liệu liên quan nên hiệu suất không thay đổi nhiều.
Ngoài ra, CSDL đồ thị có thể thêm vào các nodes, các relationships, các
subgraph mà không làm ảnh hưởng đến dữ liệu cũ, các truy vấn cũ.
Với các ưu điểm này, CSDL đồ thịthường được dùng trong các hệ
thống: mạng nơron, mạng xã hội (tìm bạn bè), giới thiệu sản phẩm(dựa theo sở
thích/lịch sử mua sắm của người dùng), . Với những kiểu ứng dụng như vậy thì
cách lưu trữ dữ liệu của RDBMS đều không thích hợp khi mà chúng chỉ chuẩn
hóa dữ liệu để lưu vào các bảng và làm giảm đi tính kết nối. Cách duy nhất để
tạo kết nối ở mô hình quan hệ là tạo các khóa ngoại (foreign key) đến các bản
ghi ở bảng khác, và việc join các bảng là việc phức tạp, kém hiệu quả và dễ
gây l i, đ c biệt nếu các mối quan hệ là phức tạp.
Ví dụ với mạng xã hội có dữ liệu liên kết nhiều, CSDL đồ thị là 1 lựa
chọn tốt hơn nhiều so với RDBMS. Facebook hiện d ng CSDL đồ thị để liệt kê
và minh họa các mối quan hệ khác nhau giữa những người dùng.
Ví dụ vớicác giải pháp về giám sát mạng (security & network
monitoring . CSDL đồ thị được sử dụng nhiều, đơn giản vì các ứng dụng đó
cần phân tích nhiều các kết nối từ nơi này sang nơi khác. Thực tế thì các dữ
liệu trong 1 hệ thống mạng là dữ liệu có nhiều kết nối. Ví dụ: Máy A truy vấn
DNS tới server B để vào website C download file D Chính vì vậy, nếu xây
dựng CSDL của hệ thống Network Monitoring sử dụng RDBMS chắc chắn sẽ
rất phức tạp. Trong tình huống này nếu ứng dụng CSDL đồ thị thì sẽ đơn giản
hơn, ví dụ các máy tính là 1 loại node, các truy vấn sẽ là quan hệ, máy chủ ho c
thiết bị mạng có thể được xếp thêm vào 1 loại node khác. Giả sử 1 tình huống
như sau: Một số máy tính trong hệ thống mạng có phần mềm quản lý nhân sự
bị xung đột với một phần mềm nào đó. Trong khi, các máy tính c n lại không
bị xung đột. Dựa vào CSDL đồ thị ta sẽ nhanh chóng tìm ra các phần mềm tr
ng nhau trên các máy tính có bị xung đột. Để từ đó khoanh v ng được nguyên
nhân.
1.4. M số ệ uản ị ơ sở ữ ệu đồ ị
1.4.1 Neo4J
Neo4J là CSDL đồ thị của công ty Neo Technology được viết b ng Java
và giới thiệu lần đầu vào năm 2007. Neo4J là phần mềm nguồn mở cho phiên
bản cộng đồng theo giấy phép GPLv3, ngoài ra c n có phiên bản thương mại
cho doanh nghiệp với các chức năng nâng cao. Neo4J có thể d ng nhiều ngôn
ngữ lập trình để lập trình thao tác với dữ liệu như Java, Python, Ruby, C ,
Neo4J là một CSDL đồ thị tốt nhất cho doanh nghiệp, nó có thể mở rộng đến
hàng t nút và các mối quan hệ giữa chúng.
Trong Neo4J các nút và mối quan hệ đều có thuộc tính. Nó được phát
triển dựa trên mô hình đồ thị thuộc tính. Neo4J đảm bảo tính ACID nhưng
không h trợ sharding. Chi tiết hơn về Neo4J sẽ được trình bày trong phần sau.
1.4.2 DEX
DEX là một CSDL đồ thị dựa trên bitmap, được viết b ng C , ra đời vào
năm 2008. Các phiên bản gần đây DEX h trợ cả Java, .Net để lập trình thao tác
với dữ liệu. DEX là một phần mềm nhỏ gọn nhưng h trợ các truy vấn đa dạng
với các mạng khác nhau như phân tích mạng xã hội, nhận dạng mẫu, DEX
được biết đến như một CSDL đồ thị hiệu năng cao và là một trong những
CSDL NoSQL được sử dụng phổ biến trong các ứng dụng.
1.4.3
Infinite Graph
Là sản phẩm của tổ chức Objectivity, một tổ chức chuyên tập trung vào
các giải pháp cơ sở dữ liệu có tính co giãn lớn sử dụng k thuật hướng đối
tượng và phân tích mối quan hệ. Infinite Graph là CSDL đồ thị phân tán phát
triển trên Java và dựa trên cấu trúc kiểu đồ thị. Infinite Graph cho phép làm
việc trên đám mây, được thiết kế để làm việc với thông lượng cao. Infinite
Graph h trợ index trên nhiều trường để truy vấn hiệu năng cao.
1.4.4
Hyper GraphDB
Hyper GraphDB là CSDL đồ thị nguồn mở h trợ hyper đồ thị. Hyper đồ
thị là một dạng đồ thị khác, trong đó cạnh này là điểm đến của những cạnh
khác. Hyper GraphDB h trợ truy vấn trực tuyến với API được viết b ng Java.
Hyper GraphDB được sử dụng cho những ứng dụng có độ phức tạp cao và tri
thức tính co giãn lớn. Hyper GraphDB lưu trữ hướng đồ thị và lập chỉ mục t y
biến. Trong CSDL đồ thị này, một hyper cạnh dễ dàng chuyển đổi sang một
bộ. Hyper GraphDB là CSDL hướng đồ thị và phân tán
1.5. Mô hình dữ liệu c CSDL đồ thị
Mô hình dữ liệu được biểu diễn dưới dạng đồ thị và có các yếu tố liên
kết với nhau, với số lượng quan hệ không xác định giữa chúng.
Thành phần cơ bản trong mô hình cơ sở dữ liệu đồ thị gồm có:
- Đỉnh (Node): Nút là một đơn vị cơ bản của đồ thị. Thường được sử dụng để
biểu diễn các thực thể (entities như người, tài khoản,.. Nó chứa các thuộc tính
với các c p khóa-giá trị, gần tương đương với bản ghi, quan hệ ho c hàng
trong cơ sở dữ liệu quan hệ.
Ví dụ: Chúng ta có thể coi Person là một node cơ bản.
ĩ
Person
name = Tom Hanks'
born = 1958
)
Hình 1.3 N e n ơ sở dữ liệu đồ thị
- Cạnh (Edge/relationship : c n được gọi là mối quan hệ (relationship), là
các đường kết nối các node, đại diện cho mối quan hệ giữa chúng. Ngoài
ra relationship c n có thể cấu trúc phân chia các nodes thành những cấu
trúc khác nhau, biến đồ thị thành các dạng cấu trúc giống như là list,
tree, map, ho c có thể là thực thể phức hợp (compound entity . Thực thể
phức hợp là thực thể có nhiều liên kết phức tạp liên kết với nhau.
Cácrelationships sẽ giúp cho đồ thị sẽ có ý nghĩa hơn, gẫn gũi với bài
toán thực tế hơn.
Hình 1.4 Relationship n ơ sở dữ liệu đồ thị
Ở đây ta có thể thấy có hai quan hệ là ACTED_IN và
DIRECTED, hai quan hệ này giúp cho chúng ta có thể hiểu rõ hơn về dữ
liệu mà chúng ta đang có.
Giống như các nút, các mối quan hệ cũng có thể chứa các thuộc
tính như các cặp khóa-giá trị. Đồ thị trong hình 1.4, quan hệ
ACTED_IN có thuộc tính roles cung cấp thêm thông tin cho mối quan
hệ.
-
Loại quan hệ (relationship type):
M i một quan hệ chỉ được phép có đúng một kiểu quan hệ. Ở ví dụ trên
chúng ta đã sử dụng ACTED_IN và DIRECTED như là 2 kiểu quan hệ giữa
các thực thể. Thuộc tính roles trong liên kết ACTED_IN có cấu trúc dữ liệu là
một mảng (array) với chỉ một phần tử trong nó.
Với việc sử dụng liên kết ACTED_IN, với node Tom Hanks ta có thể
hiểu đây chính là source node và node Forrest Gump là target node.
Ta có thể dễ dàng nhìn thấy được là node Tom Hanks đang hướng đến
node Forrest Gump. Chú ý một điều là Relationships luôn luôn phải có
hướng (direction). Một node cũng có thể có Relationships đến chính nó. Nếu
như chúng ta muốn biểu diễn Tom HanksKNOWNS đến chính bản thân node
đó, chúng ta có thể biểu diễn như sau:
[ name = 'Tom Hanks'
I tom =1856
I ‘VkL'ki/’LhjiHo
l_>NOWS
Hình 1.5 Minh họa mối quan hệ m nú đến chính nó
-
Thuộc tính (Properties :
Là một c p khóa (key)-giá trị (value) được d ng để biểu diễn cho các
thuộc tính của các nodes cũng như là các relationships. Trong ví dụ về đồ thị
ban đầu chúng ta sử dụng các properties là name và born cho các nodes có
labels là Person, title và released cho node Movie. Đồng thời ta cũng sử dụng
property roles trong :ACTED_IN liên kết.
Các property có thể lưu trữ các kiểu dữ liệu đa dạng khác nhau như là
number, string và boolean với các miền giá trị tương ứng. Để hiểu rõ hơn về
vấn đề này chúng ta có thể tìm hiểu thêm phần Cypher.
- Nhãn (label):
Có thể được sử dụng để mô hình hóa miền giá trị của các node lại với
nhau, thông thường chúng ta sẽ gộp nhóm các node có cùng kiểu dữ liệu ho c
là thuộc tính thành một tập hợp rồi sau đó gắn label vào cho chúng. Ví dụ, tất
cả những nodes mà biểu diễn cho một đối tượng là users thì có thể được gắn
labels là :Users. Lúc này bạn có thể thuận tiện làm việc với Neo4j thông qua
các nodes đã được gắn labels này, ch ng hạn như là tìm tất cả các users có tên
khớp với ABC,. . .
M i một node thì có thể có một ho c nhiều lables, ở hình trên, các nodes
sẽ có các nhãn tương ứng là Person và Movie.
Ta có thể thấy m i một nhãn lúc này sẽ biểu diễn một lớp đối tượng khác
nhau. Nhưng trong những bài toán khác khi mà chúng ta muốn biểu diễn thêm
những chiều khác nhau của dữ liệu thì sao? Lúc này ta có thể thêm labels vào
cho các nodes. Hình vẽ phía bên dưới sẽ minh họa rõ hơn cho việc sử dụng
nhiều labels cho cùng một node.
Hình 1.6 Minh họa nhãn trong các nodes
- Traversals and paths:
Traversals là cách để làm thế nào có thể truy vấn được cơ sở dữ liệu đồ
thị. Traversals đồ thị có nghĩa là duyệt qua tất cả các nodes b ng cách "lần"
theo các liên kết (following relationships) và phải tuân thủ theo một số luật
nhất định. Trong hầu hết các trường hợp chúng ta sẽ chỉ phải duyệt qua các tập
- Xem thêm -