Tải bản đầy đủ (.docx) (125 trang)

Ứ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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.71 MB, 125 trang )

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à q 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à hồn tồ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 q 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


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à


2
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ữ 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.


3

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 ⊂ V × 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 q 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ị.



4
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, ρ, λ, σ , 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,

-

ρ : E →(N × N là một ánh xạ m i cạnh với một c p đỉnh,


-

λ : (N ∪ E) → SET (L) là hàm kết hợp m i đỉnh ho c cạnh với một

+

nhãn thuộc tập L,
-

σ : (N∪ E)×P →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.

Hình 1.2. Đồ



u

n

u

n

n

n


ƣ ụ

n





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


5
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}, (n1, 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,keyword = recursive queries , (n5, keyword =
λ(n6)={Conference},
month = April

λ(n7)={Journal}, (n7,
vol = 24 , (n7, num =
ρ(e1) = (n4, n1), λ(e1)={has_author}, (e1, order = 1
ρ(e2) = (n4, n2), λ(e2)={has_author}, (e2, order = 2
ρ(e3) = (n5, n2), λ(e3)={has_author}, (e3, order = 1
ρ(e4) = (n5, n3), λ(e4)={has_author}, (e4, order = 2
ρ(e5) = (n5, n4), λ(e5)={cites}
ρ(e6) = (n4, n6), λ(e6)={booktitle}, (e6, pages = 404-416
ρ(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.


6
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. Đ

ƣn


ơ sở ữ ệu đồ



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 tồ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


7
kiểu của trƣờng Với CSDL đồ thị thì chúng ta hồn tồ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. Ngồ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 số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.
Ngồ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



8
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,


9
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


10
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.

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 tốn thực tế hơn.

Hình 1.4 Relationship

n

ơ sở dữ liệu đồ thị


11


đâ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:

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


12
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


13
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 con của đồ thị mà khơng cần phải duyệt tồn bộ đồ thị.
Trong ví dụ phần mở đầu, nếu muốn tìm ra movie mà Tom Hanks đã
acted , traversal sẽ bắt đầu từ node Tom Hanks, đi theo relationship
ACTED_IN và nhận thấy relationship này có liên kết với một nodeForrest
Gumpvà đó chính là kết quả mà chúng ta cần tìm kiếm. (Minh họa b ng
đƣờng nét đứt trong Hình 1.7)

Hình 1.7 Minh họa Traversal


đây ta dễ dàng thấy đƣợc r ng chi phí để tìm ra đƣợc kết quả là 1.

Path ngắn nhất là path có độ dài b ng zero. Nó chính là 1 node đơn và khơng
có relationship.
1.6. Hệ quản trị cơ sở ữ ệu đồ thị Neo4J
Neo4j là một cơ sở dữ liệu NoSql dạng đồ thị mã nguồn mở xây dựng
b

ng Java và Scala do tập đoàn Neo technology tài trợ. Đƣợc phát triển từ

năm 2003 và đƣợc public từ năm 2007. Ngày nay đã có hàng ngàn cơng ty và
tổ chức sử dụng trên các lĩnh vực nhƣ quản lý mạng, phân tích phần mềm,
nghiên cứu khoa học, routing, mạng xã hội,...
1.6.1 Các tính năng của Neo4j

Mơ hình dữ liệu ƣợ đồ linh hoạt): Neo4j tn theo mơ hình dữ liệu
đồ thị. CSDL của Neo4J chứa các nút (thực thể) và các nút này đƣợc kết nối


14
với nhau (đƣợc mô tả bởi các mối quan hệ). Các nút và mối quan hệ lƣu trữ
dữ liệu trong các c p khóa-giá trị đƣợc gọi là thuộc tính.Trong Neo4j, khơng
cần phải theo một lƣợc đồ cố định, có thể thêm ho c xóa thuộc tính theo u
cầu.
Thu c tính ACID: Neo4j h
Nhất quán, Cách ly và Bền vững).
Khả nănở r n v đ
không ảnh hƣởng đến tốc độ xử lý truy vấn và tính tồn vẹn dữ liệu. Neo4j
cũng cung cấp h trợ khả năng sao chép để đảm bảo an tồn và tin cậy cho dữ
liệu.
Ngơn ngữ truy vấn Cypher: Neo4j cung cấp một ngôn ngữ truy vấn
khai báo mạnh mẽ đƣợc gọi là Cypher. Cypher có tính chất dễ học, đƣợc sử
dụng để tạo và truy vấn dữ liệu theo cấu trúc khá đơn giản.
Ứng dụng web tích hợp: Neo4j cung cấp ứng dụng web Neo4j
Browser tích hợp. Sử dụng ứng dụng này, ta có thể tạo và truy vấn dữ liệu
biểu đồ một cách trực quan.
T

n đ ều khi n: Neo4j có thể làm việc với API REST để làm việc

với các ngôn ngữ lập trình nhƣ Java, Scala, Java Script.Nó h trợ hai loại API
Java: API Cypher và API Java gốc để phát triển các ứng dụng Java.
Lập chỉ mục: Neo4j h

trợ lập chỉ mục b ng cách sử dụng Apache


Lucence.
1.6.2

h nh dữ liệu củ

o

Cơ sở dữ liệu đồ thị Neo4j tuân theo mô hình đồ thị thuộc tính để lƣu
trữ và quản lý dữ liệu.Sau đây là các tính năng chính của Mơ hình đồ thị:
-

Mơ hình đại diện cho dữ liệu trong Nút, Mối quan hệ và Thuộc tính

-

Thuộc tính là c p khóa-giá trị

-

Các nút đƣợc biểu diễn b ng vịng tròn và Mối quan hệ đƣợc thể hiện


15
b ng các phím mũi tên
-

Mối quan hệ có hƣớng: Đơn hƣớng và Hai chiều

-


M i Mối quan hệ chứa "Nút bắt đầu" ho c "Từ nút" và "Đến nút" ho c
"Nút kết thúc"

-

Cả Nút và Mối quan hệ đều chứa các thuộc tính

-

Mối quan hệ kết nối các nút
Cơ sở dữ liệu đồ thị Neo4j lƣu trữ tất cả dữ liệu của nó trong nút và

mối quan hệ.
1.7. Thao

v

ữ ệu Ne

J

Để thao tác với dữ liệu đồ thị, Neo4j sử dụng ngôn ngữ truy vấn
Cypher query language (Cypher . Cypher đƣợc d ng để truy vấn, cập nhập
hay quản trị cơ sở dữ liệu đồ thị một cách hiệu quả.
Cypher đƣợc lấy cảm hứng từ rất nhiều các cách tiếp cận khác nhau,
một số các từ khóa nhƣ là WHERE, ORDER BY đƣợc lấy cảm hứng từ
ngôn ngữ SQL, trong khi đó pattern matching thì lại đƣợc mƣợn từ SPARQL.
Ngồi ra một vài ngữ nghĩa thì lại đƣợc mƣợn từ các ngôn ngữ khác nhƣ là
Haskell và Python. Cấu trúc của Cypher đƣợc xây dựng dựa trên ngôn ngữ

Tiếng Anh với ngữ nghĩa thuận tiện cho ngƣời thao tác với ngôn ngữ, điều
này giúp cho việc viết và đọc các câu query cũng dễ dàng hơn.
1.7.1

u vấn

ng C ph

Để truy vấn b ng Cypher, hãy xem xét đồ thị dƣới đây:

Hình 1.8 Đồ thị minh họa cho câu lệnh Cypher


16
Đồ thị trên mô tả mối quan hệ bạn bè chung của ba ngƣời bạn. Ngôn ngữ
Cypher sử dụng các mã ASCII để biểu diễn các mối quan hệ này nhƣ sau:

(c)-[:KNOWS]->(b)-[:KNOWS]->(a), (c)-[:KNOWS]->(a)
Mẫu trên trong ngôn ngữ Cypher mô tả một con đƣờng kết nối c đến b,
b

đến a, và c đến a. Nhìn chung, ngơn ngữ Cypher thể hiện rất tự nhiên từ

cách chúng ta vẽ đồ thị trên bảng trắng.
Cũng nhƣ hầu hết các ngôn ngữ khác, Cypher cũng có các câu lệnh
riêng. Câu truy vấn đơn giản nhất bao gồm một mệnh đề START theo sau bởi
MATCHvà RETURN. Sau đây là một ví dụ đơn giản cho câu truy vấn sử
dụng 3 mệnh đề trên để tìm bạn chung của ngƣời dùng có tên Michael :
START a=node:user(name=’Michael’
MATCH (c)-[:KNOWS]->(b)-[:KNOWS]->(a), (c)-[:KNOWS]->(a)

RETURN b, c
1. Lệnh START
Lệnh START mô tả một ho c nhiều điểm bắt đầu có thể là các nút ho c
các mối quan hệ trong đồ thị. Những điểm bắt đầu sẽ đƣợc chọn thơng qua
tìm kiếm chỉ mục ho c tìm kiếm trực tiếp dựa trên các nút và các mối quan hệ.
Nhƣ ví dụ phía trên, điểm bắt đầu sẽ là điểm mà có thuộc tính name có giá trị
là Michael. Giá trị trả về từ việc tìm kiếm điểm này là nút a (định danh a là do
ngƣời dùng tự đ t . Định danh này đƣợc sử dụng trong suốt phần còn lại của
câu truy vấn.
2. Lệnh MATCH
Đây là phần đ c tả b ng ví dụ từng phần. Ta sử dụng các kí tự ASCII để
đại diện cho các nút và các mối quan hệ, vẽ ra các dữ liệu mà chúng ta quan
tâm. Chúng ta sử dụng dấu đóng ngo c và mở ngo c để vẽ các nút (Ví dụ: ( ), (
), (c),…), sử dụng c p dấu gạch ngang kết hợp với dấu lớn hơn ho c nhỏ hơn
để vẽ ra các mối quan hệ (–>, <–). Các dấu lớn hơn (>) và nhỏ


17
hơn (<) thể hiện hƣớng của quan hệ. Giữa c p dấu gạch ngang có c p đóng mở
ngo c vng, nội dung trong c p đóng mở ngo c vuông đƣợc bắt đầu b ng dấu
hai chấm và sau đó là tên của mối quan hệ (Ví dụ: -[:KNOWS]->).
Câu ví dụ trên miêu tả một đƣờng dẫn gồm ba nút (c)-[:KNOWS]>(b)-[:KNOWS]->(a), (c)-[:KNOWS]->(a), một trong số đó đã đƣợc nối với
định danh a, những nút còn lại nối với b. Các nút này đƣợc đƣợc kết nối bởi
các mối quan hệ KNOWS. Mơ hình này về lý thuyết có thể đƣợc sử dụng
nhiều lần trong dữ liệu đồ thị nên chúng ta nên ghim một phần chúng lại trong
đồ thị.
Nhƣ vậy, chúng ta đã thực hiện xong việc tìm kiếm một nút thực sự
trên đồ thị với mệnh đề START nút đại diện cho Michiael. Chúng ta gắn nút
này vào định danh a, rồi đƣa a sang mệnh đề MATCH. Từ đó ta đã ghim mơ
hình này đến một điểm trong đồ thị. Cypher khớp các phần còn lại của mơ

hình vào đồ thị vào xung quanh các điểm ghim. Từ đó thì nó tìm thấy các nút
khác để gắn với các định danh phù hợp. Và nhƣ vậy, định danh a đại điện cho
Michael, c n các định danh b, c sẽ theo định danh a mà gắn vào các nút xung
quanh khớp với điều kiện trong mệnh đề MATCH.
3. Lệnh RETURN
Mệnh đề này quy định việc các nút, các mối quan hệ và các thuộc tính
trong dữ liệu đƣợc nối nên đƣợc trả về nhƣ thế nào cho client. Trong ví dụ trên
thì chúng ta mong muốn việc trả về là các nút kết nối với định danh b và c.

4. Một số lệnh khác của Cypher
WHERE : cung cấp các tiêu chí để lọc các mẫu kết quả phù hợp
CREATE và CREAT UNIQUE : tạo nút và các mối quan hệ
DELETE : xóa nút, mối quan hệ và thuộc tính
SET : thiết lập các giá trị thuộc tính
FOREACH : biểu diễn một hành động cập nhật đối với m i


18
phần tử trong một danh sách
UNION : hợp các kết quả từ 1 ho c nhiều truy vấn
WITH : tạo chu i các phần truy vấn và chuyển tiếp các kết quả từ
một tới kết quả tiếp theo. Giống nhƣ tạo đƣờng ống các lệnh trong
Unix.
Cũng giống các ngôn ngữ truy vấn khác, Cypher còn nhiều mệnh
đề khác nhƣ SKIP, USING, MERGE, REMOVE,
1.8. C u n đ

ừ ữ ệu u n

ệsn


ữ ệu đồ



Thông thƣờng dữ liệu trƣớc đây đƣợc tổ chức và lƣu trữ trong các hệ
quản trị cơ sở dữ liệu mơ hình quan hệ. Để chuyển sang mơ hình CSDL đồ thị
thì tổ chức và lƣu trữ dữ liệu quan hệ là một cơ sở quan trọng để thiết kế
CSDL đồ thị vì giữa hai mơ hình có những mối liên hệ nhất định. Trong [5] đã
đƣa ra một số quy tắc chuyển đổi từ dữ liệu trong mơ hình quan hệ sang dữ
liệu mơ hình đồ thị.
Quy tắc 1.M i bảng thực thể đƣợc đại diện bởi một nhãn trên các nút
của dữ liệu trong bảng đó.
Quy tắc 2.M i hàng trong bảng thực thể là một nút.
Quy tắc 3. Các cột của bảng là các thuộc tính của nút.
Quy tắc 4. Xóa các khóa chính.
Ví dụ có bảng DangVien chứa các đảng viên với các thuộc tính MaDV,
HoTen, GioiTinh, NgaySinh, trong đó MaDV là khóa chính, dữ liệu cụ thể:
MaDV
0101


19
Đƣợc chuyển thành nút trong CSDL đồ thị:
DangVien

HoTen: Nguyễn Văn A
GioiTinh: Nam

Quy tắc 5.Thêm các ràng buộc duy nhất cho các khóa chính theocác

nghiệp vụ,thêm chỉ mục cho các thuộc tính tra cứu thƣờng xun.
Quy tắc 6.Thay thế khóa ngoại b ng các mối quan hệ tới bảng khác,
loại bỏ chúng sau đó.
Ví dụ cho lƣợc đồ CSDL đảng viên với hai lƣợc đồ con
DangVien(MaDV, HoTen, GioiTinh, NgaySinh, MaNgach)
Ngach(MaNgach, TenNgach)
Quan hệ giữa hai bảng:
DangVien

Ngach

MaDV

MaNgach

HoTen

TenNgach

GioiTinh
NgaySinh
MaNgach
Cho trƣớc dữ liệu nhƣ hai bảng dƣới:


MaDV

HoTen

0101


Nguyễn


MaNgach
02

Khi đó sẽ chuyển thành hai nút trong CSDL đồ thị:
DangVien

Ngach

Ngach_CC
HoTen: Nguyễn Văn A
GioiTinh: Nam

TenNgach: Chuyên viên
hạng 2

Quy tắc 7.Xóa dữ liệu có giá trị m c định, khơng cần lƣu trữnhững dữ
liệu này.
Quy tắc 8.Dữ liệu trong các bảng khơng chuẩn hóa và trùng l pcó thể
phải đƣợc tách ra thành các nút riêng biệt để có đƣợc mộtmơ hình rõ ràng
hơn.
Quy tắc 9. Các kết nối giữa các bảng đƣợc chuyển thành các mối quan
hệ,các cột trên các bảng đó là điều kiện kết nối trở thành các thuộc tính quan
hệ.
Ví dụ: Xét hai bảng
DangVien(MaDV, HoTen, GioiTinh, NgaySinh)
QTCT (MaDV, Tu, Den, ChucVu, TenCoQuan) //(Q trình cơng tác)

Với dữ liệu cụ thể:
MaDV
0101


21
MaDV

Tu

0101

01/01/2005

0101

01/10/2010

Chuyển thành dữ liệu trong CSDL đồ thị:

HoTen: Nguyễn Văn A
GioiTinh: Nam

(a)

CoQuan

TenCoQuan: Sở Giáo
dục và Đào tạo


1.9. Kết luận

ƣơn 1

Chƣơng 1 đã giới thiệu sơ lƣợc về mơ hình dữ liệu đồ thị và đ c trƣng
của mơ hình. Hệ quản trị cơ sở dữ liệu Neo4J cũng đƣợc giới thiệu và đây là hệ
quản trị sẽ sử dụng để minh họa cho luận văn. Cuối chƣơng là các quy tắc
chuyển dữ liệu từ mơ hình quan hệ sang mơ hình đồ thị, đây là các quy tắc để
xây dựng cơ sở dữ liệu đảng viên mơ hình đồ thị đƣợc trình bày trong chƣơng 2.


×