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
Trang 1TRƯỜNG ĐẠI HỌC QUY NHƠN
Trang 2Tô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
Trang 3Trướ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
Trang 4LỜ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
Trang 51.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)
Trang 6TT TỪ VIẾT TẮT DIỄN GIẢI
database management system)
Trang 7Bả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 31
Bảng 2-5Cấu trúc bảng DmTrinhdoChuyenmon 31
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 41
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
Trang 8Hì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
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
Trang 9MỞ ĐẦ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à
Trang 10thay đổ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
Trang 11CHƯƠ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 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ị
Trang 12Trong 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ố
Trang 13cạ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,
ρ(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
Trang 14T 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 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
Trang 15kiể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
Trang 16duy 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,
Trang 17Ruby, 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
Trang 181.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 toán thực tế hơn
Hình 1.4 Relationship n ơ sở dữ liệu đồ thị
Trang 19Ở đâ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
Trang 20property 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
Trang 21nhấ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 toà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 tuân 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
Trang 22vớ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 yêu cầu
Thu c tính ACID: Neo4j h trợ đầy đủ các quy tắc ACID (Nguyên tử,
Nhất quán, Cách ly và Bền vững)
Khả năn ở r n v đ tin cậy:Có thể mở rộng cơ sở dữ liệu mà
không ảnh hưởng đến tốc độ xử lý truy vấn và tính toàn vẹn dữ liệu Neo4j cũng cung cấp h trợ khả năng sao chép để đảm bảo an toà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
Trang 23b 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 Ngoà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
Trang 24Đồ 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 :
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ỏ
Trang 25hơ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 vuông, 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 [:KNOWS]->(a), (c)-[:KNOWS]->(a), một trong số đó đã được nối với định
(c)-[:KNOWS]->(b)-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
Trang 26Cũ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 ệ s n ữ ệ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ể:
Trang 27Được chuyển thành nút trong CSDL đồ thị:
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 xuyên
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:
MaDV HoTen GioiTinh NgaySinh MaNgach
MaNgach TenNgach
Cho trước dữ liệu như hai bảng dưới:
DangVien
HoTen: Nguyễn Văn A GioiTinh: Nam
Trang 28MaNgach TenNgach
Khi đó sẽ chuyển thành hai nút trong CSDL đồ thị:
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) //(Quá trình công tác) Với dữ liệu cụ thể:
Trang 29MaDV Tu Den ChucVu TenCoQuan
0101 01/01/2005 30/9/2010 Chuyên viên UBND Huyện Tuy Phước
0101 01/10/2010 30/5/2020 P trưởng phòng Sở Giáo dục và Đào tạo tỉnh
Bình Định
Chuyển thành dữ liệu trong CSDL đồ thị:
(a)
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
CoQuan
TenCoQuan: Sở Giáo dục và Đào tạo
Tu: 01/01/2005 Den: 30/9/2010
Trang 30CHƯƠNG XÂY DỰNG CƠ SỞ DỮ LIỆU ĐẢNG VIÊN
THEO MÔ HÌNH ĐỒ THỊ
Chương này sẽ trình bày chi tiết tổ chức cơ sở dữ liệu Đảng viên theo
mô hình quan hệ và chuyển từ cơ sở dữ liệu này sang mô hình đồ thị Một số chức năng truy vấn thường dùng trên mô hình quan hệ cũng được chuyển đổi sang mô hình đồ thị để thấy được mô hình đồ thị vẫn đảm bảo được các thao tác cơ bản và có thể phát triển những chức năng đ c thù của mô hình đồ thị
2.1 G ệu về n Quản Đản v n
Hiện nay Ban Tổ chức Trung ương đã triển khai một hệ thống phần mềm quản lý đảng viên xuyên suốt từ trung ương đến các địa phương Phần mềm quản lý đảng viên đã h trợ cho việc tra cứu, quản lý thông tin về đảng viên một cách nhanh chóng, chính xác, giúp cho việc chỉ đạo của các cấp ủy Đảng được thuận tiện, kịp thời; Qua đó h trợ đắc lực cho cấp u các cấp trong công tác quản lý tổ chức đảng và đảng viên;công tác tổ chức, cán bộ, đào tạo bồi dưỡng, quy hoạch, quản lý sử dụng cấp ủy viên các cấp và đảng viên; công tác khen thưởng, k luật cán bộ, đảng viên; công tác kiểm tra giám sát của tổ chức đảng.Ngoài ra, h trợ các hoạt động phục vụ cho đại hội Đảng các cấp và các hoạt động chỉ đạo điều hành hàng ngày của Thường vụ, Thường trực Đảng ủy của các cơ quan nhà nước Trong phạm vi giới hạn của nhiệm vụ, luận văn chỉ giới hạn những dữ liệu và chức năng quản lý đảng viên của Đảng bộ Huyện Tuy Phước
Các chức năng chính của chương trình quản lý đảng viên:
- Quản lý hồ sơ đảng viên trong huyện Tuy Phước (thông tin cá
nhân; quan hệ gia đình; trình độ học vấn; trình độ chuyên môn)
- Quản lý sinh hoạt Đảng của các chi bộ và đảng viên trong chi bộ
- Quản lý tình trạng đảng viên
Trang 31- Quản lý quá trình công tác của Đảng viên
- Quản lý và theo dõi kê khai thu nhậphàng năm
- Quản lý tổ chức cơ sở đảng (các chi bộ Đảng)
- Khai thác và tìm kiếm đảng viên
- Thống kê và báo cáo tổ chức đảng
Đối tượng phục vụ:
- Cán bộ, đảng viên thuộc Đảng bộ huyện Tuy Phước
- Cán bộ, đảng viên của Chi bộ trực thuộc
Chương trình quản lý đảng viên về cơ bản đã đáp ứng được những chức năng cơ bản của yêu cầu quản lý đảng viên tại Đảng bộ Huyện Tuy Phước Tuy nhiên, trong khi triển khai công việc quản lý phát sinh những yêu cầu mà chương trình chưa đáp ứng được Đ c biệt với yêu cầu quản lý ngày càng cao
và toàn diện về mọi m t, mọi quan hệ của đảng viên nên nhiều yêu cầu trên thực tế phải làm thủ công vì chương trình không đáp ứng được Ch ng hạn yêu cầu:
- "Tìm những đảng viên mà trong gia đình có 3 thế hệ đều có những đảng viên xuất sắc"
- “Tìm những Đảng viên thuộc chi bộ Thôn Vân hội, thuộc Đảng
bộ TT Diêu Trì, thuộc Đảng Bộ Tuy Phước Bình Định, là cán bộ cách mạng”
thì với tổ chức cơ sở dữ liệu như hiện nay đây là yêu cầu khó vì bài toán này
có sự phân cấp tới 3 cấp Trường hợp nâng thêm 1 cấp nữa là từ Đảng bộ Bình Định truy vấn thông tin với các yêu cầu dạng tương tự như trên là rất khó, đôi khi là không thể thực hiện được (như kết quả khảo sát, so sánh khả năng thực thi giữa hai mô hình) Trong thực tế, những nhu cầu dạng này là thường xảy ra và không phải là hiếm
2.2 Lý do chọn mô hình đồ thị đ quản Đảng viên
Qua tìm hiểu tôi thấy cơ sở dữ liệu mô hình đồ thị là một mô hình dữ
Trang 32liệu đang được quan tâm ứng dụng nhiều hiện nay và đ c biệt là sử dụng cho những dữ liệu có nhiều mối quan hệ phức tạp, việc tìm kiếm theo mối quan hệ
là thế mạnh của mô hình này Chính vì điều đó nên tôi đ t vấn đề chuyển dữ liệu đảng viên đang được lưu trữ hiện nay trong mô hình quan hệ sang mô hình đồ thị để thử nghiệm những yêu cầu phức tạp của công việc quản lý đảng
Hình 2.1 Mối quan hệ giữ đảng viên và chi b n n đồ thị
Mối quan hệ giữa Đảng viên và chi bộ Đảng là trực thuộc (thành viên của chi bộ)
Mối quan hệ giữa chi bộ với Đảng viên là quản lý, theo dõi và đánh giá Với CSDL đồ thị khi thêm hay bớt thực thể/mối quan hệ hoàn toàn dễ dàng, tuy nhiên, với CSDL quan hệ, do sự ràng buộc giữa 2 thực thể rất ch t chẽ nên việc thêm hay bớt thực thể ho c tạo/xóa mối quan hệ rất khó khăn và khó bảo toàn tính nguyên vẹn của dữ liệu
CSDL đồ thị chỉ gồm các nút, các thuộc tính và mối quan hệ mang lại khả năng mở rộng rất cao, khi thêm nút (hầu hết là thực thể) hay thêm các thuộc tính, mối quan hệ, nó không đ i hỏi một điều kiện gì, không ràng buộc phải có quan hệ này quan hệ khác Việc mở rộng hay thu hẹp quy mô đều rất linh động
Trực thuộc / thành
viên
Đảng viên
Chi bộ Đảng Quản lý, theo
dõi
Trang 33Một cách tổng quát, đây là bài toán khá phức tạp và đa cấp nếu mở rộng áp dụng cho nhiều đảng bộ ho c cấp cao hơn Khi đó việc phân cấp của
mô hình sẽ là dạng cây phân cấp với nhiều cấp độ khác nhau, việc sử dụng cơ
sở dữ liệu quan hệ cũng có thể giải quyết đƣợc vấn đề nhƣng rất khó khăn khi
số cấp lớn hơn 3 và tính hiệu quả sẽ không cao, nhất là về khả năng xử lý, truy xuất và mở rộng, càng nhiều cấp thì tốc độ truy xuất càng giảm Nhƣ vậy, việc ứng dụng cơ sở dữ liệu đồ thị vào quản lý sẽ dễ dàng giải quyết nhu cầu
mở rộng này mà không cần thay đổi gì nhiều
Ví dụ: Đ t vấn đề mở rộng bài toán thêm tính năng quản lý bạn bè của Đảng viên Ta có các mối quan hệ sau: Đảng viên A là bạn của Đảng viên B, Đảng viên B là bạn của Đảng viên C Hãy so sánh 2 câu truy vấn tìm tất cả những đảng viên C có bạn là B mà B có bạn là A trên 2 CSDL quan hệ và CSDL đồ thị
CSDL quan hệ mô tả mối quan hệ theo dạng liên kết vòng:
Hình 2.2 Minh họa bảng DANGVIEN
Câu lệnh SQL trong mô hình quan hệ:
Select * From DANGVIEN c
inner join (select * from DANGVIEN b inner join (select * from DANGVIEN where ma=’A’ a on a.MA=b.FK FRIENDwhere ma=’B’ b on b.MA=c.FK_FRIEND
Trang 34Trong mô hình này, nếu xóa B đi thì sẽ rất khó khăn và không bảo đảm toàn vẹn dữ liệu
Đối với truy vấn, đây là câu truy vấn khá phức tạp, nếu có thêm mối quan hệ C là bạn của D nữa thì mức độ phức tạp sẽ tăng lên, càng sâu càng phức tạp, trong khi trong thực tế tồn tại các mối quan hệ ấy Truy vấn càng phức tạp thì thời gian truy xuất sẽ càng tăng lên
Cơ sở dữ liệu đồ thị mô tả mối quan hệ theo thực tế:
Hình 2.3 Minh họa mối quan hệ Friend_Of c đảng viên
Câu lệnh truy vấn b ng Cypher trong Neo4J:
MATCH (a:Dangvien)
-[:FRIEND_OF]->(b:Dangvien)-[:FRIEND_OF]->(c:Dangvien) Where a.Ma=’A’ and b.Ma=’B’ RETURN c
Truy vấn đối với bài toán này là khá đơn giản, khả năng mở rộng rất dễ dàng, chỉ cần chỉ ra các mối quan hệ của chúng nếu muốn mở rộng thêm
Ngoài ra, đối với các hệ thống đã và đang sử dụng CSDL quan hệ để quản lý Đảng viên hoàn toàn dễ dàng chuyển qua CSDL đồ thị b ng cách chuyển đổi các thực thể từ các bảng (table) thành các thực thể riêng lẻ, các mối quan hệ (ràng buộc) sẽ đƣợc chuyển thành các mối quan hệ thông qua
một module chuyển đổi CSDL
Ví dụ: chuyển thông tin Đảng viên từ 1 bảng trong CSDL quan hệ sang CSDL đồ thị có thể đƣợc mô tả nhƣ sau:
Trang 35Hình 2.4 Minh họa chuy n dữ liệu từ bản s n đồ thị
Do cơ sở dữ liệu đảng viên đã được thiết kế và ứng dụng theo mô hình quan hệ nên trong chương này luận văn sử dụng thiết kế có s n của cơ sở dữ liệu đảng viên theo mô hình quan hệ và chuyển sang mô hình đồ thị
2.3 Cơ sở dữ liệu đảng viên trong mô hình quan hệ
MS: 002
Trang 36Hình 2.5 Sơ đồ c ơ sở dữ liệu đảng viên trong mô hình quan hệ
Về tổng thể, cơ sở dữ liệu quan hệ Quản lý đảng viên gồm có 23 bảng (tables), chia làm nhiều nhóm thông tin, m i nhóm liên quan đến một số loại thông tin và một số bảng khác nhau
2.3.2 Chi tiết các bảng
2.3.2.1 Nhóm thông tin quản lý hồ sơ đảng viên của các chi bộ t ong Đảng bộ
Đây là nhóm quản lý chi tiết danh sách Đảng viên của các chi bộ Đảng trực thuộc Đảng bộ huyện Tuy Phước, Bình Định
Mô tả bảng và ý nghĩa:
Để diễn giải mối quan hệ này cần 3 bảng: DangBo, ChiBo và Dangvien
DangBo: trong phạm vi bài toán này, bảng DangBo chứa 1 dòng duy
nhất lưu thông tin của đảng bộ Tuy phước BìnhĐịnh Tuy nhiên, việc sử dụng bảng này với mục đích có thể mở rộng áp dụng cho bất kỳ Đảng bộ nào
Bản 2-1Cấu trúc bảng DangB`o
5 Stthienthi Là số thứ tự hiển thị trên báo cáo
ChiBo: Quản lý thông tin các chi bộ trong 1 đảng bộ, mối quan hệ giữa
ChiBo và DangBo thể hiện qua cột ChiBo.madangbo
DangBo key
ten truso dienthoai stthienthi
varchar(30) nvarchar(200) nvarchar(400) varchar(30) int
<pk>
Trang 37Bản 2-2Cấu trúc bảng ChiBo
4 Dienthoai Số điện thoại
5 Madangbo Là khóa ngoại, cột key trong bảng DangBo Thể hiện
mối quan hệ trực thuộc (Chi bộ trực thuộc Đảng bộ)
6 Stthienthi Là số thứ tự hiển thị trên báo cáo
Dangvien: Là đối tượng chính của bài toán này Lưu trữ các thông tin
chính của Đảng viên nh m xác định và phân biệt giữa đảng viên này với đảng viên khác và xác định 1 đảng viên cụ thể đang thuộc quyền quản lý của chi bộ
cụ thể của đảng bộ
Bản 2-3Cấu trúc bảng Dangvien
ChiBo key
ten truso dienthoai madangbo stthienthi
varchar(30) nvarchar(200) nvarchar(400) varchar(30) varchar(30) int
<pk>
<fk>
Dangvien key
ten ngaysinh phai ngaydubi ngaychinhthuc chucvudang noio noicongtac sdt email madangbo machibo matrinhdohv matrinhdochuyenmon miensinhhoat tungaymiensinhoat ngungsinhhoat tungayngungsinhhoat dengayngungsinhoat ghichu
varchar(30) nvarchar(30) date nvarchar(10) date date nvarchar(50) nvarchar(200) nvarchar(200) varchar(30) varchar(150) varchar(30) varchar(30) varchar(10) varchar(10) bit date bit date date nvarchar(500)
Trang 38TT Tên ƣờng Ý n
16 Tungaymiensinhhoat Miễn sinh hoạt từ
17 Ngungsinhhoat Ngƣng sinh hoạt đảng? (0 vẫn còn sinh
hoạt; 1 – ngƣng
18 Tungayngungsinhhoat Ngƣng sinh hoạt từ
19 Denngayngungsinhhoat Ngƣng sinh hoạt đến
2.3.2.2 hóm th ng tin t nh độ học vấn, chuyên môn
Nhóm này quản lý trình độ học vấn và chuyên môn của Đảng viên
ten ghichu stthienthi
varchar(10) nvarchar(100) nvarchar(300) int
<pk>
Trang 39Bản 2-4Cấu trúc bảng DmTrinhdoHocvan T
T
Tên ƣờng
4 Stthienthi Là số thứ tự hiển thị trên báo cáo
2.3.2.3 Nhóm thông tin Sinh hoạt đảng củ các Đảng viên và chi bộ Đảng
Mục đích của nhóm thông tin này là quản lý quá trình sinh hoạt đảng của Chi bộ và sự tham gia của Đảng viên vào các kỳ sinh hoạt ấy của chi bộ nhƣ thế nào
Mô tả bảng và ý nghĩa:
DmTrinhdoChuyenmon key
ten ghichu stthienthi
varchar(10) nvarchar(100) nvarchar(300) int
<pk>
Trang 40Nhóm này liên quan đến 4 bảng: Dangvien, Chibo, Sinhhoatdang, Thamgiasinhhoatdang
Dangvien: đã mô tả
Chibo: đã mô tả
Sinhhoatdang: Bảng này lưu trữ các lần tổ chức sinh hoạt đảng của
từng chi bộ, các thông tin gồm có như: ngày sinh hoạt, phân loại (định kỳ, đột xuất), nội dung (tóm tắt nội dung sinh hoạt)
Bản 2-6Cấu trúc bảng Sinhhoatdang
3 Ngaysinhhoat Ngày sinh hoạt
4 Nội dung Tóm tắt nội dung sinh hoạt
5 Phân loại Định kỳ hay đột xuất
Dangvienthamgiasinhhoatdang: Bảng này lưu trữ chi tiết việc tham
gia sinh hoạt đảng của đảng viên trong từng lần sinh hoạt chi bộ, các thông tin gồm có như: mã đảng viên, mã sinh hoạt, tình trạng, ghi chú (tóm tắt ghi chú)
Bản 2-7Cấu trúc bảng Dangvienthamgiasinhhoatdang
1 Key Khóa chính, mã sinh hoạt đảng của đảng viên
Sinhoatdang key
machibo ngaysinhhoat noidung phanloai
varchar(30) varchar(30) date nvarchar(150) nvarchar(15)
<pk>
<fk>
Dangvienthamgiasinhhoatdang key
madangvien masinhhoat tinhtrang ghichu
varchar(50) varchar(30) varchar(30) nvarchar(10) nvarchar(500)
<pk>
<fk2>
<fk1>