Nếu coicác nút là các thực thể, và chúng được nối với nhau bởi các mối quan hệ thì đồ thị có thể mô hình hóa bất kỳ đối tượng nào, vấn đề nào, tình huống nào trong thế giới thực.. Thuộc
Trang 1MỤC LỤC
Chương 1 : Giới thiệu chung 2
1.1 Đồ thị là gì? Đặc điểm của đồ thị 2
1.2 Sức mạnh của CSDL đồ thị 4
1.3 Các đồ thị trong thế giới thực 5
Chương 2 : CSDL đồ thị 9
2.1 Nhược điểm của các CSDL khác 9
2.2 CSDL đồ thị 12
2.2.1 Ngôn ngữ mô hình hóa dữ liệu trong CSDL đồ thị 14
2.2.1.1Mô hình hóa quan hệ trong miền quản lý hệ thống 16
2.2.1.2 Mô hình hóa đồ thị trong miền quản lý hệ thống 18
2.2.1.3Các mô hình đa miền 20
2.2.2Các phương pháp mô hình hóa dữ liệu 21
2.2.2.1Mô tả mô hình bằng các thuật ngữ của ứng dụng 21
2.2.2.2Các nút (node) đại diện cho các vật, các mối quan hệ (relationship) đại diện cho cấu trúc 22
2.2.2.3Các mối quan hệ chung và các mối quan hệ chi tiết 23
2.2.2.4Mô hình hóa các sự kiện 24
2.2.2.5Các kiểu giá trị phức tạp 24
2.2.2.6Thời gian 25
2.2.2.7 Phát triển theo vòng lặp và tăng tiến 26
2.2.3Ngôn ngữ xử lý dữ liệu trong CSDL đồ thị 27
2.2.3.1Ngôn ngữ truy vấn đồ thị : tổng quan về Cypher 27
2.2.3.2Cách cài đặt Neo4j và thực hiện truy vấn 29
Chương 3: Ứng dụng mạng xã hội sức khỏe 32
3.1 Giới thiệu khái quát mạng xã hội sức khỏe 32
3.1.1 Giới thiệu mạng xã hội sức khỏe 32
3.1.2 Các chức năng của mạng xã hội sức khỏe 33
3.1.2.1Quản lý định danh (quản lý người dùng) 33
3.1.2.2Quản lý liên lạc (Contact Management) 34
3.1.2.3Chia sẻ thông tin( Share information) 35
3.1.2.4 Tìm kiếm (Search) 36
3.2 Phân tích thiết kế 37
Trang 23.2.1.2Use case Identity Management (quản lý định danh) 38
3.2.1.3Usecase Contact Management (quản lý liên lạc) 38
3.2.1.4Use case Share information (Chia sẻ thông tin) 39
3.2.1.5Use case Search (Tìm kiếm) 39
3.2.2Biểu đồ lớp 40
3.2.3Biểu đồ hoạt động 40
3.2.3.1Chức năng quản lý định danh 40
3.2.3.2Chức năng quản lý liên lạc 41
3.2.3.3Chức năng chia sẻ thông tin 42
3.2.3.4Chức năng tìm kiếm 43
3.2.4 Biểu đồ tuần tự 44
3.2.5 Các chức năng bên client 44
3.2.6 Các chức năng bên server 45
3.2.7 Máy hữu hạn trạng thái 46
3.2.8 Thiết kế giao thức 48
3.3 Thiết kế CSDL 54
Chương 4 Cài đặt và kiểm thử 60
Chương 5 : Kết luận 61
DANH MỤC TÀI LIỆU THAM KHẢO 62
Trang 3Mục lục hình
Hình 1.1 Ví dụ mạng xã hội 5
Hình 1.2 Đồ thị thuộc tính 6
Hình 2.1 Dữ liệu kết nối trong CSDL quan hệ 12
Hình 2.2 Dữ liệu kết nối trong NoSQL 14
Hình 2.3 Lưu trữ dữ liệu kết nối 15
Hình 2.4 Thử nghiệm truy vấn trên CSDL đồ thị và CSDL quan hệ 16
Hình 2.5 Mô hình trung tâm quản lý dữ liệu 18
Hình 2.6 Biểu đồ quan hệ thực thể của trung tâm quản lý dữ liệu 20
Hình 2.7 Ánh xạ mô hình vào các bảng trong SQL 21
Hình 2.8 Mô hình hóa trung tâm quản lý dữ liệu bằng đồ thị 22
Hình 2.9 Ví dụ mô hình đa miền 23
Hình 2.10 Mô hình dữ liệu bằng các thuật ngữ ứng dụng 25
Hình 2.11 Mô hình các sự kiện bằng các nút 27
Hình 2.12 Kỹ thuật cây thời gian 28
Hình 2.13 Kỹ thuật danh sách liên kết 29
Hình 2.14 Ngôn ngữ truy vấn Cypher 30
Hình 2.15 Tạo nút 33
Hình 2.16 Giao diện đã tạo nút 33
Hình 2.17 Tạo property 33
Hình 2.18 Tạo relationship 34
Hình 3.1 Biểu đồ use case 40
Hình 3.2 Use case quản lý định danh 41
Hình 3.3 Use case quản lý liên lạc 41
Hình 3.4 Use case chia sẻ thông tin 42
Hình 3.5 Use case tìm kiếm 42
Hình 3.6 Biểu đồ lớp 43
Hình 3.7 Biểu đồ hoạt động : quản lý định danh 43
Hình 3.8 Biểu đồ hoạt động : quản lý liên lạc (1) 44
Hình 3.9 Biểu đồ hoạt động : quản lý liên lạc (2) 44
Hình 3.10 Biểu đồ hoạt động : quản lý liên lạc (3) 45
Hình 3.11 Biểu đồ hoạt động: chia sẻ thông tin (1) 45
Hình 3.12 Biểu đồ hoạt động: chia sẻ thông tin (2) 45
Hình 3.13 Biểu đồ hoạt động : chia sẻ thông tin (3) 46
Hình 3.14 Biểu đồ hoạt động : chia sẻ thông tin (4) 46
Trang 4Hình 3.17 Máy hữu hạn trạng thái phía server 50
Hình 3.18 Máy hữu hạn trạng thái phía client 51
Hình 3.18 Thiết kế CSDL – mối quan hệ FRIEND, FAMILY 58
Hình 3.19 Thiết kế CDSL – mối quan hệ PROFILE 59
Hình 3.20 Thiết kế CSDL – mối quan hệ User-Group 59
Hình 3.21 Thiết kế CSDL – chia sẻ thông tin 60
Hình 3.22 Thiết kế CSDL – PM & Notification 61
Hình 3.23 CSDL 62
Hình 4.1 CSDL 63
Hình 4.2 Giao diện 63
Trang 5MỞ ĐẦU
Trong nhiều năm gần đây, thuật ngữ NoSQL (Not-only SQL) đã không còn quá xa
lạ đối với chúng ta Ra đời từ những năm 1998, NoSQL ám chỉ những cơ sở dữ liệukhông dùng mô hình dữ liệu quan hệ để quản lý dữ liệu Cơ sở dữ liệu đồ thị (GraphDatabase) cũng là một dạng NoSQL dựa trên lý thuyết đồ thị để mô hình hóa dữ liệu vàtruy vấn Câu hỏi đặt ra là tại sao lại có sự xuất hiện của các loại cơ sở dữ liệu trên Ta cóthể thấy hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) vẫn được dùng một cách phổ biếntrong thời điểm này Nhưng với lượng dữ liệu ngày càng lớn, mức độ tăng nhanh khiếncho việc xử lý nhiều truy vấn phức tạp rất mất thời gian và hay gây lỗi Chưa kể tới cơ sở
dữ liệu quan hệ có cấu trúc rất chặt chẽ, khó thay đổi, khó mở rộng và nâng cấp… Cónhiều nguyên nhân và nhiều yếu tố dẫn đến sự ra đời của NoSQL và cơ sở dữ liệu đồ thị
Và tất nhiên không phải ứng dụng nào cũng cần tới NoSQL hay cơ sở dữ liệu đồ thị Tất
cả đều mang tính tương đối và cân nhắc hợp lý
Trong tài liệu này, chúng ta sẽ biết cơ sở dữ liệu đồ thị là gì, có những ưu nhượcđiểm và tính chất gì để từ đó biết được nên áp dụng chúng vào những ứng dụng như thếnào Sự khác biệt giữa cơ sở dữ liệu đồ thị và cơ sở dữ liệu quan hệ là gì? Ngôn ngữ truyvấn trong cơ sở dữ liệu đồ thị khác ngôn ngữ truy vấn trong cơ sở dữ liệu quan hệ ra sao.Một phần nữa của tài liệu sẽ là phần áp dụng cơ sở dữ liệu đồ thị vào một ứng dụng cụthể, đó là : mạng xã hội sức khỏe Trong đó cũng nêu rõ mục đích vì sao ứng dụng này lạicần tới cơ sở dữ liệu đồ thị và nó sử dụng cơ sở dữ liệu đồ thị để mô hình hóa dữ liệu mộtcách cụ thể thế nào
Hi vọng tài liệu này không chỉ có giá trị nhất thời, người đọc không chỉ thấy đượcmột ứng dụng trong này, mà tôi mong rằng nó có thể giúp người đọc có một kiến thứcnền vững chắc về cơ sở dữ liệu để từ đó áp dụng được cho nhiều ứng dụng khác
Trang 6Chương 1 : Giới thiệu chung1.1 Đồ thị là gì? Đặc điểm của đồ thị
Thông thường đồ thị được định nghĩa là một tập các đỉnh được nối với nhau bởi cáccạnh, hay có thể nói là gồm các nút và các mối quan hệ giữa các nút với nhau Nếu coicác nút là các thực thể, và chúng được nối với nhau bởi các mối quan hệ thì đồ thị có thể
mô hình hóa bất kỳ đối tượng nào, vấn đề nào, tình huống nào trong thế giới thực Từviệc mô hình một cái tủ đựng đồ cho tới cái máy bay hay mô hình các quan hệ trên mạng
xã hội, mô hình sự đa dạng của sinh vật sống, mô hình một quy trình sản xuất, mô hìnhmột cuộc khởi nghĩa…
Bởi vì thế giới thực quá đa dạng và có mối quan hệ với nhau chứ không tuân theomột tập quy luật bất biến nào nên muốn lưu trữ hay xử lý các thông tin như thế này đượchiệu quả, chúng ta nên dùng tới đồ thị Và thực tế thì người ta đã ứng dụng đồ thị vào rấtnhiều vấn đề trong cuộc sống Có thể lấy ví dụ đơn giản trên mạng xã hội facebook nhưsau :
Hình 1.1 Ví dụ mạng xã hội
Trong đồ thị trên, các nút biểu diễn các thực thể là các người dùng được định danhbằng tên và có các mối quan hệ là FRIEND_OF Mối quan hệ trong đồ thị có thể là mộtchiều, có thể là hai chiều Như trong đồ thị trên thì hầu hết là mối quan hệ hai chiều, chỉ
Trang 7có mối quan hệ giữa Zach và Alice là một chiều Như vậy đồ thị trên hoàn toàn có thểbiểu diễn các mối quan hệ trong đời thực một cách dễ dàng và trực quan.
Mỗi thực thể (đối tượng) đều có những đặc điểm riêng, có thể hoàn toàn đưa cácđặc điểm đó thành các nút, nhưng như vậy sẽ rất phức tạp, nhất là khi số thực thể tăng lên
và các nút đặc điểm đó lại chỉ nối với một thực thể Như vậy sẽ gây lãng phí số nút,không gian và làm phức tạp đồ thị một cách không cần thiết Các mô hình đồ thị thuộctính đã giải quyết được vấn đề này Trong các mô hình đồ thị thuộc tính có các đặc điểmsau :
- Bao gồm các nút và các mối quan hệ
- Các nút có các thuộc tính (thuộc tính thể hiện theo cặp : khóa – giá trị)
- Các mối quan hệ được đặt tên và được đặt trực tiếp vào đồ thị, luôn có nút đầu vànút cuối
- Các mối quan hệ cũng có thể bao gồm các thuộc tính
Ví dụ về đồ thị thuộc tính như sau :
Hình 1.2 Đồ thị thuộc tính
Trong đồ thị trên có 3 nút được phân biệt bởi Id và có các thuộc tính Name và Agevới các cặp khóa-giá trị như hình vẽ Như nút có Id=1 thì có thuộc tính Name = Alice vàAge = 18 Tương tự 2 nút kia cũng có thuộc tính như vậy Ngoài ra thì mối quan hệ cũnghoàn toàn có thể có thuộc tính Ví dụ mối quan hệ từ nút 1 đến nút 2 có Id = 100, thuộc
Trang 8tính là Label = knows và Since=2001/10/03 Tương tự các mối quan hệ giữa các nút kháccũng như vậy Thuộc tính ở mối quan hệ hay ở nút đều tồn tại theo cặp khóa-giá trị.
1.2 Sức mạnh của CSDL đồ thị
Mặc dù đúng là chúng ta có thể mô hình hóa bất cứ thứ gì bằng đồ thị, nhưng đó làchưa kể đến các vấn đề về lợi nhuận, thời gian thực hiện dự án, các tiêu chuẩn của từngdoanh nghiệp Mà những vấn đề đó lại luôn xuất hiện ở các bài toán thực tế CSDL đồthị là một công nghệ mạnh mẽ, nhưng là trong một khuôn khổ định dạng của các tiêuchuẩn, mẫu dữ liệu sẵn có, và tính hiệu quả của nó sẽ được thấy rõ hơn khi so sánh vớicác công nghệ khác
Sức mạnh của CSDL đồ thị thể hiện qua các đặc điểm sau :
- Hiệu năng
Hiệu năng là một lý do hoàn toàn hợp lý để chọn CSDL đồ thị khi làm việc với các
dữ liệu có kết nối thay vì chọn CSDL quan hệ hay là các bộ lưu trữ NoSQL (not onlySQL) Đối với 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ệncác truy vấn sâu và phải kết hợp nhiều bảng rất mất thời gian và kém hiệu quả thì điềunày lại không phải vấn đề của CSDL đồ thị Lý do vì các truy vấn đã được nội bộ hóathà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ướccủ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ướccủa toàn bộ đồ thị Vì thế mà dù kích thước của cả tập dữ liệu có tăng lên, thời gian thựchiện truy vấn khi sử dụng CSDL đồ thị vẫn đảm bảo
- Linh động
Tính linh động là một đặc trưng thấy rõ và khác biệt nhất của CSDL đồ thị so vớicác CSDL khác 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ác bảng, 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 haythay đổi kiểu của trường Với CSDL đồ thị thì khác, chúng ta hoàn toàn có thể thêm vàonút hay các mối quan hệ mới mà không làm ảnh hưởng tới các nút khác, cũng không làmthay đổi kết quả truy vấn đang thực hiện Như vậy, ta 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ởití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ộtthờ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òngiảm bớt chi phí bảo trì và rủi ro như các CSDL khác mang lại
Trang 9- Nhanh
CSDL đồ thị với việc mô hình hóa dữ liệu với các sơ đồ tự do và khả năng kiểm thửcủa các giao diện chương trình ứng dụng CSDL đồ thị cũng như ngôn ngữ truy vấn củachúng đưa đến cho người sử dụng có thể phát triển ứng dụng một cách có kiểm soát Tínhnhanh ở đây là chúng ta có thể vận dụng và thử các xu hướng mới một cách nhanh nhẹn
- Chu kỳ phát triển có gia tốc lớn
- Đáp ứng tính thương mại cực ổn : không phải di chuyển dữ liệu nhiều, đáp ứngđược tính hay thay đổi của kinh doanh Giảm rủi ro
- Tính sẵn sàng cho doanh nghiệp : dữ liệu rất quan trọng, làm việc trong các ứngdụng kinh doanh quan trọng cần một công nghệ mạnh mẽ, có khả năng mở rộng và cótính giao dịch…
Xã hội
Dữ liệu mang tính xã hội (gọi tắt là dữ liệu xã hội) có sức mạnh tiềm ẩn rất lớn.Chúng ta có thể không hiểu rõ một cá nhân, nhưng thông qua những thông tin người đókết nối với xã hội, chúng ta vẫn có thể dự đoán được tính cách, xu hướng mua sắm Cácứng dụng mang tính xã hội cho phép các tổ chức có thể đạt được những lợi thế cạnh tranh
và hoạt động bằng cách tận dụng các thông tin về sự kết nối giữa người với người, cùngvới các thông tin riêng của từng cá nhân để từ đó dự đoán hành vi của họ
Có thể từ lấy ví dụ là mạng xã hội Facebook Mạng xã hội giúp ta xác định đượccác mối quan hệ trực tiếp và gián tiếp giữa các cá nhân, các nhóm và những gì họ tươngtác, cho phép người dùng có thể đánh giá, bình luận và khám phá Với những mối quan
hệ gián tiếp, chúng ta có thể từ đó liên kết các đối tượng với nhau dựa trên các ý kiến, sởthích, hành vi mua sắm để từ đó đưa ra các gợi ý phù hợp và có độ chính xác cao
Trang 10Phương pháp thứ hai là xác định người dùng hoặc nhóm người dùng cho một nguồnlực cụ thể, tập trung vào các đặc tính của nguồn lực đó bằng các câu hỏi Từ đó bộ máylàm việc xác định các nguồn lực tương tự như thế và để người dùng kết hợp với chúng.
Geo
Không gian địa lý là trường hợp đầu tiên sử dụng đồ thị (tham khảo bài toán “Bảycây cầu” của Euler mà sau này hình thành cơ sở lý thuyết đồ thị) Các ứng dụng khônggian địa lý của csdl đồ thị có phạm vi từ tính toán các đường đi giữa các địa điểm trongmột mạng lưới trừu tượng như một mạng đường bộ hoặc đường sắt cho các hoạt động cótính không gian như tìm tất cả các điểm của vùng giới hạn quan tâm, tìm trung tâm củamột khu vực, tính toán giao điểm giữa hai hoặc nhiều khu vực
Các hoạt động không gian địa lý phụ thuộc vào cấu trúc dữ liệu cụ thể, từ các mốiquan hệ có trọng số đơn giản và trực tiếp tới các chỉ mục không gian như R-Trees – đạidiện cho tính đa chiều sử dụng cấu trúc dữ liệu hình cây Như các chỉ mục, các cấu trúc
dữ liệu tự nhiên mang hình thức của một đồ thị, thường phân cấp về hình thức Điều nàyhoàn toàn phù hợp với csdl đồ thị Bởi bản chất của các csdl đồ thị là dữ liệu không gian
có thể nằm trong csdl, bên cạnh các loại dữ liệu hay dữ liệu mạng xã hội, cho phép thựchiện các truy vấn đa chiều phức tạp trên nhiều lĩnh vực
Các ứng dụng về không gian địa lý của csdl đồ thị đặc biệt có liên quan đến các lĩnhvực viễn thông, hậu cần, du lịch, lập lịch và quy hoạch tuyến đường
Quản lý dữ liệu chủ
Dữ liệu chủ là gì?
Dữ liệu chủ là dữ liệu rất quan trọng đối với hoạt động của các doanh nhân nhưng
nó lại không được đưa ra để giao dịch Nó bao gồm các dữ liệu liên quan đến người dùng,khách hàng, sản phẩm, nguồn cung cấp, các cơ quan, vị trí địa lý, các trang web, trung
Trang 11tâm chi phí và các đơn vị kinh doanh Trong một tổ chức lớn, dữ liệu này có thể thườngxuyên được nắm giữ ở nhiều nơi, với nhiều sự chồng chéo, dư thừa và trong nhiều địnhdạng khác nhau cũng như với mức độ về chất lượng và cách truy cập khác nhau Quản lý
dữ liệu chủ là xác định, làm sạch, lưu trữ và quan trọng nhất là điều phối dữ liệu này Mốiquan tâm chính của nó bao gồm quản lý sự thay đổi theo thời gian khi cấu trúc của tổchức thay đổi, hợp nhất các doanh nghiệp và các quy tắc kinh doanh thay đổi; kết hợp cácnguồn mới của dữ liệu; bổ sung các dữ liệu hiện có với các dữ liệu ở nguồn ngoài; giảiquyết các nhu cầu của báo cáo, sự tuân thủ và khách hàng kinh doanh thông minh; vàđịnh dạng lại kiểu giá trị như đúng giá trị của nó cũng như sự thay đổi của các biểu đồ.CSDL đồ thị không cung cấp một giải pháp hoàn thiện về quản lý dữ liệu chủ.Nhưng chúng đang là giải pháp tốt nhất được áp dụng cho việc mô hình, lưu trữ và truyvấn của hệ thống phân cấp, siêu dữ liệu chủ và các mô hình dữ liệu chủ Các mô hình nhưvậy bao gồm các định nghĩa kiểu, các ràng buộc, mối quan hệ giữa các thực thể, sự ánh
xạ giữa các mô hình và các hệ thống mã nguồn cơ bản Một cấu trúc của csdl đồ thị còn
là mô hình dữ liệu không lược đồ cung cấp cho ad hoc, sự thay đổi và các cấu trúc ngoại
lệ hay các lược đồ bất thường mà thường xảy ra khi có nhiều nguồn dữ liệu dự phòng –điều dễ hiểu khi các mô hình dữ liệu chủ phát triển ngày một nhanh trong nhu cầu kinhdoanh thay đổi
Quản lý trung tâm dữ liệu và quản lý trung tâm mạng
Một đồ thị đại diện cho một mạng có thể cho phép chúng ta liệt kê các phần tử, trựcquan hóa việc chung hoạt động ra sao và xác định được các vật phụ thuộc giữa chúng.Cấu trúc kết nối đồ thị, cùng với ngôn ngữ truy vấn như Cypher cho phép chúng ta phântích các tác động phức tạp cũng như trả lời các câu hỏi như : các phần nào của mạng –các ứng dụng, dịch vụ, máy ảo, máy vật lý, trung tâm dữ liệu, định tuyến, switchs và sợiquang nào – là quan trọng để khách hàng phụ thuộc vào? (phân tích top-down)
Ngược lại, các ứng dụng và dịch vụ nào và cuối cùng là khách hàng trong mạng sẽ
bị ảnh hưởng nếu một phần tử cụ thể của mạng như định tuyến hỏng? (phân tíchBottom-up)
Giải pháp csdl đồ thị hỗ trợ các công cụ phân tích và quản lý mạng hiện tại Nhưtrường hợp của quản lý dữ liệu chủ, chúng có thể sử dụng để cùng mang lại dữ liệu từ các
hệ thống kiểm kê khác nhau, cung cấp một cái nhìn duy nhất đối với mạng và khách hàngcủa chúng, từ các phần tử nhỏ nhất đến các ứng dụng và các dịch vụ hay khách hàng sửdụng chúng Một csdl đồ thị đại diện cho một mạng có thể được sử dụng để làm giàu chotri thức hoạt động dựa trên các mối tương quan sự kiện Có thể giải thích rõ hơn như sau:
Trang 12mỗi khi có một bộ máy tương quan sự kiện suy luận một sự kiện phức tạp từ một dòngcác sự kiện mạng ở mức thấp, nó có thể đánh giá tác động của sự kiện đó bằng cách sửdụng mô hình đồ thị và sau đó kích hoạt bất kỳ hoạt động giảm nhẹ cần thiết nào.
Ngày nay, csdl đồ thị đã đươc sử dụng thành công trong các lĩnh vực viễn thông,quản lý và phân tích mạng, quản lý nền tảng đám mây, trung tâm dữ liệu và quản lý phần
tử IT Hiệu suất cao, tính linh hoạt trong việc đối mặt với sự thay đổi các lược đồ mạngcũng như phù hợp với miền là các yếu tố quan trọng của csdl đồ thị
Ủy quyền và kiểm soát truy cập (truyền thông)
Các giải pháp ủy quyền và kiếm soát truy cập lưu trữ thông tin về các bên (vd nhưquản trị viên, đơn vị tổ chức ) và các nguồn tài nguyên (như các tệp tin, cổ phần, thiết bịmạng, sản phẩm, dịch vụ, hợp đồng ) cùng với các quy định về việc truy cập vào cácnguồn tài nguyên; sau đó áp dụng các luật lệ để xác định ai có thể truy cập hay điều khiểnnguồn tài nguyên đó Kiểm soát truy cập được thực thi hoặc sử dụng dịch vụ danh mục,hoặc bằng cách xây dựng một giải pháp tùy chình bên trong một ứng dụng Các cấu trúcthư mục phân cấp tuy nhiên vẫn không thể đối phó với các cấu trúc có tính tổ chức khôngphân cấp và các cấu trúc có nguồn tài nguyên phụ thuộc Các giải pháp được xử lý bằngtay, đặc biệt là những giải pháp được phát triển trên csdl quan hệ, đều đã trải qua sự thấtbại của việc kết nối các bảng với sự phát triển của kích thước các tập dữ liệu Việc xử lýdần dần chậm đi và không có phản hồi, cuối cùng đã mang lại một kinh nghiệm đáng giá.Một csdl đồ thị có thể lưu trữ các cấu trúc phức tạp, cũng như các cấu trúc kiểmsoát truy cập có kết nối dày đặc bao trùm hàng tỉ các bên tham gia và các nguồn tàinguyên Nó cấu trúc các mô hình dữ liệu không lược đồ hỗ trợ cả cấu trúc phân cấp vàkhông phân cấp, trong khi mô hình thuộc tính mở rộng của nó cho phép nắm bắt siêu dữliệu phong phú liên quan đến mỗi phần tử của hệ thống Với một công cụ truy vấn có thể
đi qua hàng triệu mối quan hệ mỗi giây, thì xử lý tìm kiếm lớn, cấu trúc phức tạp chỉ thựchiện trong mili giây
Với quản lý và phân tích mạng, một giải pháp điều khiển truy cập csdl đồ thị chophép cả 2 loại truy vấn top-down và bottom-up
Các giải pháp ủy quyền và điều khiển truy cập csdl đồ thị đều cho phép đặc biệtđược áp dụng trong các khu vực của quản lý nội dung, các dịch vụ ủy quyền liên hiệp,các sở thích dùng mạng xã hội và các lời gọi phần mềm như là dịch vụ (SaaS)
Trang 13Chương 2 : CSDL đồ thị
Chúng ta sống trong thế giới kết nối, thông tin đã là có ích, nhưng chúng còn có íchhơn khi kết nối được với nhau, bổ trợ cho nhau để phát triển Hiện nay thì nguồn tàinguyên trên mạng cũng như vậy, vô cùng lớn và có ích Tuy nhiên để kết nối chúng lạithì không phải dễ dàng Và cách thức kết nối các dữ liệu như thế nào, quản lý dữ liệu đó
ra sao sẽ được trình bày trong phần này
2.1 Nhược điểm của các CSDL khác
CSDL quan hệ được xây dựng với các bảng, trường, bản ghi và có mối quan hệ vớinhau thông qua các khóa chính, khóa ngoại Mặc dù nói là có quan hệ với nhau thôngqua các phép join (nối bảng) nhưng như thế vẫn chưa đáp ứng được tính chất của các dữliệu kết nối Làm thế nào để đưa các dữ liệu kết nối và các dữ liệu nửa cấu trúc vàoCSDL quan hệ - CSDL lưu trữ dữ liệu theo một định dạng cố định và trong một hệ thốngcác bảng có cấu trúc Lấy một cái có cấu trúc để lưu trữ cái nửa cấu trúc thực sự là mộtvấn đề nan giải Tệ hơn nữa khi cấu trúc của bộ dữ liệu ngày càng phức tạp và khôngđồng đều bởi các mối quan hệ, sự gia tăng trong việc liên kết các giao dịch ngày càng lớnkhiến cho CSDL quan hệ không còn đáp ứng được việc xử lý, truy vấn và lưu trữ dữ liệu.Điều này dẫn đến sự ra đời của loại CSDL khác phù hợp hơn
Có thể ví dụ về mô hình hóa dữ liệu kết nối trong CSDL quan hệ như dưới đây
Hình 2.1 Dữ liệu kết nối trong CSDL quan hệ
Chúng ta có thể làm một vài ví dụ về các truy vấn với CSDL trên như sau :
Vd1 : Câu truy vấn là : Ai là bạn của Bob?
Thực hiện truy vấn :
Trang 14WHERE p2.Person = 'Bob'
Đây là một câu truy vấn hoàn toàn bình thường Và theo như bảng dữ liệu thì ta cóthể thấy Alice và Zach là bạn của Bob Tuy nhiên mối quan hệ không phải lúc nào cũng
là 2 chiều Ta sẽ xem xét tiếp một ví dụ nữa để thấy rõ điều này
Vd2 : Câu truy vấn : Ai là bạn thực sự của Bob? (ai là bạn trong danh sách bạn bècủa Bob và ngược lại, Bob cũng nằm trong danh sách bạn bè của họ)
WHERE p2.Person = 'Bob'
Đến đây vấn đề đã khác đi một chút Câu trả lời không phải là Alice và Zach nhưtrên nữa, mà chỉ còn có Alice thôi Bởi vì trong danh sách bạn bè của Zach không cóBob Tuy nhiên đó là vấn đề của tính chất dữ liệu Chúng ta quan tâm tới việc nó xử lýtruy vấn thế nào Ở vd 1 thì chúng ta chỉ duyệt đến khi nào hết bản ghi mà PersonID = 2thì kết thúc (vì bảng lưu tuần tự từ ID =1 đến ID =99) Tuy nhiên đến vd 2 thì chúng taphải duyệt tất cả các bản ghi để đáp ứng được truy vấn Vấn đề này cũng thường gặptrong khi thực hiện truy vấn với CSDL quan hệ, tuy nhiên nếu ta cứ tiếp tục đào sâu hơn
Trang 15nữa như câu truy vấn : “Ai là bạn của bạn của Bob?” chẳng hạn thì mọi thứ sẽ phức tạphơn rất nhiều.
Hầu hết các NoSQL đã linh động hơn CSDL quan hệ nhiều, lưu trữ các tập dữ liệubằng các cặp khóa-giá trị (key-value) hay các tài liệu, cột có hướng Tuy nhiên việc ngắtkết nối giữa chúng lại gây khó khăn cho việc kết nối dữ liệu và đồ thị Ta có thể xem xétcác ví dụ dưới đây để thấy rõ hơn
Để thêm vào các mối quan hệ người ta nhúng các định danh kết hợp vào bên trongmột trường theo trường khác như một khóa ngoại Nhưng chúng lại đòi hỏi tính gộp ởtầng ứng dụng – nơi mà mọi thứ nhanh chóng trở nên tốn kém
Hình 2.2 Dữ liệu kết nối trong NoSQL
Có thể xét ví dụ trên để thấy được sự thiếu tính quan hệ của các csdl NoSQL Ở đây
ta sử dụng các lưu trữ liên kết Tức là với phần lưu trữ user : Alice thì ta có các bảng liênkết phụ khác như order và item Điều này dễ dàng khiến ta tưởng rằng có thể dùng cặp
Trang 16khóa-giá trị để quản lý đồ thị Nhưng thực tế thì không dùng được các cặp khóa- giá trịnhư thế vì đây chỉ là bảng phụ (hỗ trợ, tham khảo) và là sự liên kết cả bảng chứ khôngtheo một cặp giá trị nào Chưa kể khi ta cập nhật bảng user : Alice thì cũng phải nhớ cậpnhật các bảng liên kết phụ, nếu không thông tin sẽ bị xung đột và không bảo toàn Cònnếu phải xóa bảng lưu trữ chính đi thì nếu bảng liên kết phụ không được xóa cũng sẽ gây
ra lãng phí không gian cũng như dư thừa dữ liệu
Như vậy việc lưu trữ dữ liệu kết nối với NoSQL không phải lúc nào cũng thuận tiện
và mang lại hiệu quả
2.2 CSDL đồ thị
Với vai trò như người dùng, chúng ta có thể hoàn toàn suy luận ra các phụ thuộcngữ nghĩa giữa các thực thể, tuy nhiên các mô hình dữ liệu và csdl của chúng thì khôngđược hiện ra Và để đáp ứng được điều này, các ứng dụng phải tạo một mạng riêng,không kết nối với dữ liệu ngay tại ứng dụng, sau đó giải quyết các truy vấn chậm và tiềm
ẩn có thể phát sinh
Trong thế giới đồ thị, lưu trữ dữ liệu kết nối chính là kết nối dữ liệu Ở đâu có cáckết nối trong một phạm vi chủ đề thì có kết nối trong dữ liệu Cùng xem xét ví dụ dướiđây để thấy rõ hơn
Trang 17Hình 2.3 Lưu trữ dữ liệu kết nối
Trong sơ đồ trên có thể thấy có rất nhiều trường hợp thực tế của dữ liệu có kết nối,các kết nối giữa các thực thể không thể hiện được tính không đồng nhất trong một phạm
vi nhất định (thể hiện tính nửa cấu trúc) Và với một mạng đơn giản thế này, chúng tacũng thấy được việc thêm bớt các nút để tăng kích thước mạng là hoàn toàn có thể và linhđộng, không ảnh hưởng tới các nút khác cũng như các mối quan hệ giữa các nút trongmạng Như vậy cũng không cần lo lắng tới việc di chuyển hay thay đổi cấu trúc dữ liệutrong mạng, đồng thời vẫn giữ được dữ liệu và các quan hệ gốc
Mô hình hóa dữ liệu như trên cho ta dễ dàng thấy được các mối quan hệ của mộtthực thể với các thực thể còn lại thông qua các hướng của các mối quan hệ Có thể thấynhư là Zach là bạn của Alice nhưng chiều ngược lại thì không – điều này nếu thực hiệntrong CSDL quan hệ như xét ở trên thì khá lằng nhằng và phức tạp Và những câu truyvấn như : bạn của bạn của bạn thì sử dụng CSDL đồ thị sẽ dễ dàng hơn rất nhiều so vớiviệc sử dụng các CSDL khác Nhất là khi độ sâu của truy vấn tăng lên Điều này đã đượcVukotic và bạn đồng hành thử nghiệm trên một mạng xã hội với độ sâu tối đa là 5 [GraphDatabases – 2013] Kết quả thể hiện ở bảng sau :
Hình 2.4 Thử nghiệm truy vấn trên CSDL đồ thị và CSDL quan hệ
Bảng này cho biết thời gian thực hiện truy vấn và số lượng bản ghi trả về của một
hệ quản trị csdl quan hệ và một hệ quản trị csdl đồ thị (Neo4j)
Có thể thấy sự chênh nhau đáng kể của hệ QT CSDL quan hệ qua các lần truy vấn
và cho tới mức độ sâu bằng 5 thì nó đã không còn hoàn thành được truy vấn Trong khi
đó với Neo4j thì vẫn thực hiện truy vấn ổn định và thời gian thì nhanh hơn hẳn csdl quan
hệ (độ sâu càng cao càng thấy rõ sự khác biệt) Như vậy rõ ràng là csdl đồ thị hiệu quả
Trang 18hơn hẳn csdl quan hệ khi làm việc với dữ liệu kết nối Tuy nhiên như vậy không có nghĩa
là csdl quan hệ và các csdl NoSQL khác không hữu ích và hiệu quả Chúng vẫn làm việctốt với các dữ liệu không có tính kết nối cao và ổn định, không phải thay đổi nhiều Tùytheo tính chất của từng loại dữ liệu, người ta sẽ xem xét nên sử dụng loại csdl nào chophù hợp
Từ ví dụ mạng xã hội ở trên, chúng ta hoàn toàn có thể áp dụng vào các vấn đề khácvới phạm vi lĩnh vực khác trong đời sống Quản lý thông tin sinh học, bản đồ gen, phác
đồ điều trị dựa trên bệnh án của bệnh nhân và gia đình, hay gợi ý sản phẩm trong kinhdoanh dựa vào lịch sử mua hàng tất cả đều có thể áp dụng csdl đồ thị để có được cácquyết định chính xác hơn Có thể tìm hiểu vấn đề này rõ hơn với khai phá dữ liệu và phântích dữ liệu trực tuyến Từ đó có thể thấy tiềm năng của csdl đồ thị là rất lớn Tuy nhiên,báo cáo này sẽ đi sâu hơn về việc làm thế nào để xây dựng một ứng dụng sử dụng csdl đồthị với neo4j nên tiềm năng của csdl đồ thị xin dừng ở đây Các chương tiếp theo sẽ đisâu về cách mô hình hóa và xây dựng csdl đồ thị cũng như áp dụng cụ thể xây dựng mộtứng dụng thực
Một điểm khác biệt rõ ràng nữa giữa csdl quan hệ và csdl đồ thị chính là ngôn ngữ
xử lý dữ liệu Với csdl đồ thị, nó chính là các phương pháp xử lý đồ thị Theo lý thuyết
đồ thị thì ta có thể thấy các loại giải thuật đồ thị gồm có : vẽ đồ thị, vẽ lại đồ thị, mở rộngcây, các luồng mạng lưới, các bài toán tìm đường đi của người bán hàng Đây là nhữngloại chung nhất của các giải thuật về đồ thị Khi chia nhỏ ra thì ta sẽ thấy những giải thuậtquen thuộc hơn như A*, Floyd, Kruskal, Dijkstra Và thực tế trong bộ xử lý dữ liệu củacsdl đồ thị có bao gồm các giải thuật về đồ thị để hỗ trợ xử lý được nhanh và hiệu quảnhất có thể Điều này cho thấy sử dụng csdl đồ thị với dữ liệu được mô hình hướng đồ thị
sẽ có nhiều sự hỗ trợ hơn trong việc xử lý dữ liệu
2.2.1 Ngôn ngữ mô hình hóa dữ liệu trong CSDL đồ thị
Mô hình là hoạt động trừu tượng được thúc đẩy bởi một nhu cầu hoặc một mụcđích, đưa các khía cạnh cụ thể của miền vấn đề tự do vào một không gian có cấu trúc và
có thể thao tác được trên nó Tính tuyệt đối của mô hình là không có, tất cả chỉ đưa vấn
đề về nhiều sự lựa chọn có mục đích, đơn giản hóa mọi thứ để chúng trở nên hữu ích hơn
và để đạt được một mục đích cụ thể [Graph Databases - 2013]
Mô hình hóa dữ liệu bằng đồ thị cũng vậy Chúng ta sử dụng các hình khối và cácmũi tên để đưa dữ liệu vào và thể hiện mối quan hệ giữa chúng CSDL đồ thị giảm sự sailệch giữa phân tích và thực thi Các thành phần trong csdl đồ thị không chỉ giao tiếp với
Trang 19nhau theo những gì chúng ta thấy trong mối liên hệ giữa chúng mà chúng còn cho tanhiều hơn thế, có thể trả lời những câu hỏi mà chúng ta muốn trong phạm vi của vấn đề.
So sánh mô hình hóa quan hệ và mô hình hóa đồ thị
Để có cái nhìn sâu hơn về mô hình hóa đồ thị, chúng ta cùng xem xét việc mô hìnhhóa một lĩnh vực, một miền nào đó sử dụng các kỹ thuật dựa trên quan hệ và các kỹ thuậtdựa trên đồ thị như thế nào
Hầu hết các nhà phát triển và các chuyên gia về dữ liệu đều quen với cả các hệthống csdl quan hệ và các kỹ thuật mô hình hóa dữ liệu liên kết Từ đây dẫn đến hệ quảhiển nhiên là có sự so sánh những điểm tương đồng và điểm khác biệt giữa hai loại kỹthuật này Đặc biệt, chúng ta sẽ thấy được cách chuyển một mô hình đồ thị khái niệmsang một mô hình đồ thị vật lý và cách biến các mô hình đồ thị thu gọn thành những gìchúng ta cố gắng biểu diễn dễ dàng như thế nào so với mô hình quan hệ
Để dễ dàng so sánh, chúng ta sẽ xem xét một chủ đề quản lý trung tâm dữ liệu đơngiản Trong chủ đề này, một số trung tâm dữ liệu sẽ hỗ trợ nhiều ứng dụng từ các máy ảocho tới các cân bằng tải vật lý thay vì để khách hàng sử dụng các phần khác nhau của cơ
sở hạ tầng Hình dưới đây sẽ thể hiện rõ hơn ví dụ này
Trang 20Hình 2.5 Mô hình trung tâm quản lý dữ liệu
Trong hình này, ở mức tổng quan, ta thấy có một số ứng dụng và cơ sở hạ tầngtrung tâm dữ liệu cần thiết để hỗ trợ chúng Các ứng dụng này được biểu diễn bởi các nútApp 1, App 2, App 3 và tùy thuộc vào một cụm các csdl có nhãn là Database Server 1, 2,
3 Trong khi các user bình thường sẽ phụ thuộc vào tính sẵn có của một ứng dụng cũngnhư dữ liệu của nó, thì ở đây có thêm cơ sở hạ tầng vật lý giữa người dùng và ứng dụng,
đó là các máy ảo (Virtual Machine 10, 11, 20, 30, 31), các máy chủ thực (Server 1, 2, 3),các bệ đỡ cho máy chủ (Rack 1, 2) và các cân bằng tải (Load Balancer 1, 2) Giữa cácthành phần này là các phần tử mạng như cáp nối, công tắc (switchs), bản patch, NICs,nguồn điện…và tất cả đều có thể hỏng trong những trường hợp xấu Để hoàn thành sơ đồtrên (vận hành hệ thống) thì ta có một người dùng của ứng dụng 3 (App 3) và được biểudiễn bởi User 3
Nếu đóng vai trò là người điều hành của một hệ thống như trên, chúng ta có hai mốiquan tâm :
Việc tiếp tục thực hiện các chức năng để đáp ứng một thỏa thuận các cấp độ dịch
vụ, bao gồm khả năng thực hiện các phân tích hướng tới tương lại để xác định những thấtbại có thể có và có sự phân tích để tìm ra nguyên nhân của bất kỳ khiếu nại nào củakhách hàng có thể xảy đến bất cứ lúc nào
Chi phí cho việc tiêu thụ tài nguyên, bao gồm cả chi phí phần cứng, ảo hóa, cungcấp mạng và thậm chí cả chi phí phát triển và vận hành các phần mềm
Nếu chúng ta định xây dựng một giải pháp quản lý trung tâm dữ liệu, thì việc đầutiên là muốn đảm bảo các mô hình dữ liệu cơ bản cho phép chúng ta lưu trữ và truy vấn
dữ liệu một cách có hiệu quả giải quyết các mối quan tâm chính Đưa ra các nhu cầu vàcác khó khăn, chúng ta sẽ so sánh các mô hình quan hệ và mô hình đồ thị để thấy được sựkhác biệt
2.2.1.1Mô hình hóa quan hệ trong miền quản lý hệ thống
Giai đoạn đầu của mô hình hóa trong thế giới quan hệ cũng giống nhiều kỹ thuật môhình hóa dữ liệu khác : là tìm cách hiểu các thực thể trong miền cần mô hình, chúngtương tác với nhau thế nào và các quy tắc chi phối quá trình chuyển đổi trạng thái củachúng Hầu hết các vấn đề này được thực hiện thông qua việc thảo luận giữa các chuyêngia và thông qua các bảng phác thảo
Trang 21Giai đoạn thứ hai sẽ cùng nhau đi đến các thỏa thuận trong hình thức nghiêm ngặthơn như là biểu đồ quan hệ thực thể (E-R diagram) – cũng là một dạng biểu đồ khác.Biểu đồ này sẽ không còn mang tính chủ quan và quen thuộc với tất cả mọi người nữa, nó
sử dụng các ký hiệu riêng tuân theo những quy tắc riêng để thể hiện bài toán đang xétđến
Hình 2.6 Biểu đồ quan hệ thực thể của trung tâm quản lý dữ liệu
Tiếp theo là việc ánh xạ mô hình vào các bảng và các mối quan hệ được chuẩn hóa
để loại bỏ dữ liệu dư thừa Thông thường, bước này là chuyển các sơ đồ E-R thành cácbảng và sau đó được đưa vào csdl bằng các câu lệnh SQL Tuy nhiên ngay cả nhữngtrường hợp đơn giản phục vụ việc làm bật lên các tính chất của mô hình quan hệ Có thểthấy là các khóa ngoại FK hay các siêu dữ liệu metadata phải tồn tại để có thể thể hiệnđược các mối quan hệ giữa các bảng
Trang 22Hình 2.7 Ánh xạ mô hình vào các bảng trong SQL
Tuy nhiên với mô hình như trên, việc đáp ứng nhu cầu truy vấn và vận hành thực tếlại là không đủ nhanh và có trường hợp không đáp ứng được Một vấn đề nữa là chúng ta
sẽ giải quyết thế nào khi nhu cầu kinh doanh thay đổi khiến mô hình dữ liệu thay đổi.Xây dựng mô hình khác? Di chuyển mô hình? Những biện pháp trên đều được nhưngtính khả thi không cao và chi phí chi trả cho những lần đổi thay không nhỏ Chưa kể việc
di chuyển dữ liệu có thể không đảm bảo an toàn và chính xác mang lại những rủi ro cóthể không lường trước được Nhìn chung tất cả đều dẫn đến việc tìm một giải pháp kháckém rủi ro và hiệu quả hơn
Trang 232.2.1.2 Mô hình hóa đồ thị trong miền quản lý hệ thống
Với mô hình hóa đồ thị, ở giai đoạn đầu tiên, cũng vẫn là tìm hiểu vấn đề bài toán,xác định các thực thể, mô tả và thống nhất các vấn đề trong miền xác định Tuy nhiên,sau đó thay vì chuyển các mô hình vào các bảng thì ta làm phong phú hơn những gì cácbiểu đồ thể hiện Có nghĩa là với mỗi thực thể trong phạm vi bài toán, đảm bảo rằng cácthuộc tính cũng như sợi dây kết nối tới các thực thể kề cạnh đều được mô tả và đưa vào
mô hình
Hình 2.8 Mô hình hóa trung tâm quản lý dữ liệu bằng đồ thị
Và theo logic thì chỉ bấy nhiêu thôi là đủ Không có bảng, không giống như thôngthường nhưng lại đầy đủ và hơn cả những gì chúng ta mong muốn Đáp ứng các mối liên
hệ giữa các thực thể một cách chặt chẽ nhất Và việc di chuyển hay thêm hoặc bớt thựcthể hay bất cứ thứ gì trong mô hình để phù hợp với nhu cầu kinh doanh đều không thànhvấn đề
Trang 242.2.1.3Các mô hình đa miền
Trong thực tế có thể thấy rằng gần như không có vấn đề gì tồn tại độc lập màthường phải kết hợp với nhau Ta có thể xét ví dụ sau:
Hình 2.9 Ví dụ mô hình đa miền
Trong hình này, ta có thể thấy 3 lĩnh vực cùng được thể hiện
Đầu tiên là lĩnh vực văn học với các nút như Shakespeare với firstname là William
và lastname là Shakespeare Nút này được nối với vở kịch Julius Caesar và The Tempest
Có thể thấy tiếp trong sơ đồ có thông tin về công ty Royal Shakespeare (RSC) là nút cókhóa là company và giá trị là RSC Lĩnh vực này kết nối với lĩnh vực trước bằng quan hệPRODUCED với Julius và The Tempesst
Trang 25Lĩnh vực thứ 3 về dữ liệu địa lý được thể hiện bằng các mối quan hệ COUNTRY vàCITY
Từ đây càng thấy được sức mạnh của mô hình bằng đồ thị Cho phép chúng ta giảiquyết các vấn đề phức tạp liên quan nhiều lĩnh vực như trong đời sống
Lưu ý : Những cái bẫy mô hình hóa thường gặp
Mặc dù mô hình hóa đồ thị có thể mô tả những vấn đề rất phức tạp và đa miềnnhưng chưa chắc một đồ thị cụ thể có thể phù hợp với mục đích của từng bài toán Thực
tế thì cũng có những mô hình sử dụng đồ thị nhưng không đem lại hiệu quả cao
2.2.2Các phương pháp mô hình hóa dữ liệu
2.2.2.1Mô tả mô hình bằng các thuật ngữ của ứng dụng
Chúng ta sử dụng các câu hỏi đối với dữ liệu để xác định các thực thể cũng như cácmối quan hệ Những câu chuyện của người dùng nhanh nhạy sẽ cung cấp phương tiệnchính xác để thể hiện cái nhìn từ ngoài vào, từ trung tâm người dùng ra các nhu cầu củaứng dụng Và các câu hỏi sẽ phát sinh trong quá trình đáp ứng nhu cầu này Có thể xemxét ví dụ sau:
Là một người thích một quyển sách, tôi muốn biết những quyển sách nào mà nhữngđộc giả khác thích và giống như quyển sách mà tôi đã thích Từ đó tôi có thể tìm đượcnhững quyển sách khác phù hợp để đọc
Những dòng trên thể hiện được nhu cầu của người dùng, và cái nào thúc đẩy hìnhdạng và nội dung của mô hình dữ liệu? Từ một cái nhìn về quan điểm mô hình hóa dữliệu, mệnh đề AS A (Là một) thiết lập bối cảnh gồm hai thực thể : một độc giả và mộtquyển sách và một mối quan hệ LIKES (thích) để kết nối giữa chúng Mệnh đề I WANT(tôi muốn) đặt ra một câu hỏi : Những quyển sách nào được các độc giả khác thích mà họcũng thích quyển sách mà tôi đang đọc? Câu hỏi này cho thấy có nhiều hơn mối quan hệLIKES (thích) và nhiều thực thể hơn : các độc giả khác và các sách khác
Những phân tích vừa rồi với các thực thể và các mối quan hệ được thể hiện trong
mô hình dữ liệu đơn giản sau :
Trang 26Hình 2.10 Mô hình dữ liệu bằng các thuật ngữ ứng dụng
Có thể thấy mô hình trên sử dụng chính những gì thực tế ứng dụng phải làm đượcphục vụ nhu cầu của người dùng và nó trực tiếp mã hóa các câu hỏi của người dùng để
mô hình hóa dữ liệu
2.2.2.2Các nút (node) đại diện cho các vật, các mối quan hệ (relationship) đại diện cho cấu trúc
Điều này có thể không đúng trong mọi trường hợp nhưng nhìn chung thì nó cũng lànhững chỉ dẫn thường gặp giúp chúng ta xác định khi nào thì sử dụng các nút, khi nào thì
- Sử dụng các thuộc tính nút để đại diện cho các thuộc tính của thực thể, và cả bất kỳsiêu dữ liệu thực thể cần thiết nào, như nhãn thời gian, phiên bản
- Sử dụng các thuộc tính của các mối quan hệ để thể hiện sức mạnh, trọng số hoặcchất lượng của một mối quan hệ và cả các siêu dữ liệu quan hệ cần thiết khác như nhãnthời gian, phiên bản
Trang 27Việc xác định cái nào là nút, cái nào là mối quan hệ rất quan trọng Lưu ý rằng nếu
đã là nút, thì nó sẽ phải có quan hệ với nhiều nút khác (hơn 2 nút) trong mạng Và nếu đã
là mối quan hệ thì nó phải có nút đầu, nút cuối và có liên quan tới hơn hai nút này Giả sử
ta sử dụng một mối quan hệ để mô hình một thực thể như là một email x giữa user A vàuser B Có thể dễ dàng thấy được mối quan hệ email này hoàn toàn có thể có nhiều hơn
sự kết nối giữa user A và user B Từ đó ta lại phải có cách khắc phục là cấu trúc lại, môhình lại, chuyển mối quan hệ này thành một thực thể email x Tuy nhiên trong thực tế nếu
cứ phải phá vỡ mô hình đã có trước đó thì ít nhiều cũng dẫn đến thay đổi các truy vấnhoặc các mã ứng dụng Điều này sẽ gây tốn kém và ảnh hưởng tới sự tin tưởng của kháchhàng
2.2.2.3Các mối quan hệ chung và các mối quan hệ chi tiết
Khi thiết kế các loại quan hệ chúng ta nên chú ý tới sự chuyển đổi giữa sử dụng cácnhãn quan hệ chi tiết với các mối quan hệ chung đủ điều kiện với các thuộc tính Đó là sựkhác biệt giữa việc sử dụng quan hệ DELIVERY_ADDRESS và HOME_ADDRESS vớiviệc sử dụng quan hệ ADDRESS có thuộc tính {type:’delivery’} và {type:’home’} Cácmối quan hệ là những con đường quan trọng để đi vào đồ thị Phân biệt bằng các kiểuquan hệ là cách tốt nhất để loại bỏ các mảng lớn của đồ thị từ một giao điểm Sử dụngmột hoặc nhiều giá trị thuộc tính để quyết định có hay không theo một mối quan hệ phátsinh thêm thủ tục vào-ra trong lần đầu tiên những thuộc tính đó được truy cập; bởi cácthuộc tính nằm trong một tập tin được lưu trữ riêng biệt với các mối quan hệ (tuy nhiên, ởnhững lần sau thì chúng được lưu vào bộ đệm) Vì thế chúng ta nên sử dụng các mốiquan hệ chi tiết khi mà ta có một tập kín các kiểu quan hệ Và ngược lại, ta sử dụng cácquan hệ chung với các thuộc tính trong các đồ thị đánh trọng số và có những yêu cầu nhưtìm đường đi ngắn nhất và không cần thiết phải là một tập kín các quan hệ
Đôi khi chúng ta có thể có các tập kín của các mối quan hệ, nhưng trong một sốtrường hợp chúng ta muốn theo dõi các kiểu cụ thể của các mối quan hệ trong tập đó,trong khi mặt khác lại muốn theo dõi tất cả chúng, không phân biệt kiểu thì thế nào? Xét
ví dụ cụ thể về các địa chỉ (Addresses) Theo nguyên tắc của tập kín, chúng ta có thểchọn để tạo các quan hệ HOME_ADDRESS, WORK_ADDRESS
và DELIVERY_ADDRESS Điều này cho phép chúng ta theo dõi các kiểu cụ thể của cácquan hệ địa chỉ trong khi bỏ qua tất cả các quan hệ địa chỉ còn lại Nhưng sẽ phải làm gìnếu tôi muốn tìm tất cả các địa chỉ cho một user? Có một vài giải pháp như sau Cách 1,chúng ta có thể mã hóa tất cả các loại quan hệ address lại với nhau thành một loại chung
là ADDRESS Tuy nhiên, cách này sẽ trở nên khó sử dụng khi có nhiều loại mối quan hệ
Trang 28khác nhau Cách thứ 2 là chúng ta thêm vào một loại quan hệ ADDRESS vào mô hình.Tức là mỗi nút đại diện cho một loại địa chỉ và nối với các user bằng 2 mối quan hệ : 1quan hệ cụ thể (như là DELIVERY_ADDRESS) và 1 quan hệ chung ADDRESS (type:
‘delivery’)
2.2.2.4Mô hình hóa các sự kiện
Khi hai hoặc nhiều thực thể khác nhau tương tác trong cùng một khoảng thời gianthì một sự kiện xuất hiện Chúng ta có thể biểu diễn những sự kiện này bằng các noderiêng, và kết nối với các thực thể tham gia sự kiện đó Mô hình hóa một sự kiện trongphạm vi các thuật ngữ của từng sản phẩm giống như một cấu trúc : một nút đại diện chokết quả của sự tương tác giữa hai hoặc nhiều thực thể Có thể sử dụng thuộc tính nhãnthời gian trong node trung gian này để biểu thị thời gian bắt đầu và kết thúc Ví dụ sau sẽchỉ rõ hơn các sự kiện và hành động được mô hình hóa sử dụng các nút trung gian
Trang 292.2.2.5Các kiểu giá trị phức tạp
Các kiểu giá trị là những thứ không có sự xác định (định danh), ví dụ như tiền, địachỉ, mã tồn kho… Xét cụ thể như địa chỉ, địa chỉ có thể là quốc gia, có thể là số nhà,đường phố , có thể mã zip hoặc bao gồm tất cả Đối với những kiểu giá trị phức tạp thếnày, cách tốt nhất là biểu diễn chúng bằng các node riêng biệt
2.2.2.6Thời gian
Thời gian có thể được mô hình bằng nhiều cách trong đồ thị Dưới đây sẽ giới thiệu hai
kỹ thuật : cây thời gian và danh sách liên kết
Cây thời gian :
Hình 2.12 Kỹ thuật cây thời gian
Cây thời gian này sẽ có thể chỉ ra ngày phát sóng của các tập của một chương trình
TV nào đó Từ đây có thể thấy kỹ thuật này dành cho việc tìm tất cả các sự kiện đã xảy ratrong một khoảng thời gian cụ thể nào đó
Danh sách liên kết :
Trang 30Hình 2.13 Kỹ thuật danh sách liên kết
Nhiều sự kiện có các quan hệ tạm thời đối với các sự kiện trước và sau nó Một sựkiện có thể là sự kiện trước một sự kiện nào đó, và ngược lại Ở đây, chúng ta sử dụngmối quan hệ NEXT và PREVIOUS (hoặc tương đương thế) để tạo các danh sách liên kết
để thấy được chuỗi sự kiện theo thời gian như ví dụ trên
Tạo phiên bản
Một đồ thị phiên bản có thể cho phép chúng ta khôi phục lại trạng thái trước đâycủa đồ thị tại một thời điểm nhất định Đây là điều mà hầu hết các csdl đồ thị không hỗtrợ Việc khôi phục lại là có thể, tuy nhiên để làm được điều đó, chúng ta phải tạo một sơ
đồ bên trong mô hình đồ thị mà trong đó các nút cũng như quan hệ đều được gán nhãnthời gian và được lưu trữ lại mỗi khi có thay đổi Có thể thấy việc làm trên làm đồ thịphức tạp hơn nhiều cho việc truy vấn cũng như lưu trữ Vì vậy mặc dù có thể nhưng hầuhết việc tạo phiên bản chỉ mang tính lý thuyết và tham khảo
2.2.2.7 Phát triển theo vòng lặp và tăng tiến
Chúng ta phát triển mô hình dữ liệu theo từng chức năng một và theo từng câuchuyện của người dùng Điều này sẽ đảm bảo rằng chúng ta xác định các mối quan hệcủa ứng dụng sẽ được sử dụng để truy vấn đồ thị Một mô hình dữ liệu được phát triểntheo kiểu lặp và tăng tiến cung cấp bởi các chức năng của ứng dụng sẽ khá khác so vớibằng việc rút ra bằng việc sử dụng phương pháp mô hình dữ liệu đầu tiên, nhưng nó sẽ làmột mô hình đúng đắn hơn, được thúc đẩy bởi các nhu cầu cụ thể và các câu hỏi phátsinh trong các nhu cầu
Csdl đồ thị cung cấp đầy đủ cho sự phát triển của mô hình đồ thị một cách dễ dàng
và linh hoạt Rất hiếm khi phải di chuyển cũng như tiêu chuẩn hóa lại dữ liệu Các sự kiện mới và thành phần mới có thể trở thành các nút và các quan hệ Tuy nhiên có thể thêm các thành phần của đồ thị dễ dàng như vậy không có nghĩa là lúc nào chúng ta cũng
sử dụng nó Chúng ta sẽ luôn phải xác định các thời điểm quan trọng để cấu trúc lại mô hình như chúng ta mong muốn, và có thể sẽ qua rất nhiều lần Ví dụ, khi ta đổi tên một
Trang 31mối quan hệ đã tồn tại thì nó sẽ cho phép được sử dụng cho 2 nhu cầu Khi những thời điểm đó phát sinh, chúng ta cũng nên nắm bắt chúng Nếu ta đang phát triển giải pháp như là một cách thử nghiệm thì nó sẽ giống như một tín hiệu phù hợp của sự thử nghiệm hồi quy tại chỗ, cho phép chúng ta thực hiện các thay đổi đáng kể cho mô hình với sự
tự tin
2.2.3Ngôn ngữ xử lý dữ liệu trong CSDL đồ thị
Như đã đề cập đến ở chương 1, một đồ thị thuộc tính gồm có các nút, các mối quan
hệ và các thuộc tính Và bất kể là nút hay quan hệ thì đều có thể có thuộc tính riêng Môhình đồ thị thuộc tính cho phép chúng ta mô tả bài toán một cách toàn diện hơn, mô tảđược các bài toán phức tạp và đúng với thực tế hơn Tuy nhiên để sử dụng csdl đồ thị nhưvậy, chúng ta cần một ngôn ngữ truy vấn và thao tác với dữ liệu trên
2.2.3.1Ngôn ngữ truy vấn đồ thị : tổng quan về Cypher
Cypher là ngôn ngữ truy vấn cho csdl đồ thị, có đặc điểm dễ đọc và dễ hiểu đối với
cả các nhà phát triển, các chuyên gia csdl và các nhà kinh doanh
Cypher cho phép người dùng tìm kiếm thông tin trên csdl theo một mô hình cụ thểnào đó
Hình 2.14 Ngôn ngữ truy vấn Cypher
Trong ASCII tương đương với đồ thị trong Cypher, ta biểu diễn mối quan hệ trênnhư sau : (a)-[:KNOWS]->(b)-[:KNOWS]->(c), (a)-[:KNOWS]->(c)
Tuy nhiên 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 MATCH và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ìmbạn chung với người dùng có tên Michael
Trang 32START a=node:user(name= ‘Michael’)
MATCH (a)-[:KNOWS]->b –[:KNOWS]->(c), (a)-[:KNOWS]->(c)
RETURN b,c
Chúng ta sẽ tìm hiểu các câu lệnh kỹ hơn
START
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ìmkiế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 đánh chỉ mục là user và có thuộc tính (khi đánh chỉ mục tạo nên) name
có giá trị là Michael Giá trị trả về từ việc tìm kiếm điểm này là điểm a (định danh a là dongười dùng tự đặt) Định danh này được sử dụng từ đầu đến cuối truy vấn
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ệncho 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 ngoặc đơn để vẽ các nút, như là : (a)
- Cặp dấu gạch ngang và lớn hơn/ nhỏ hơn để thể hiện mối quan hệ (có hướng từ gốctới ngọn hoặc theo cả hai hướng), như là : -> và <-
- Giữa các dấu gạch ngang là các dấu ngoặc vuông và dấu hai chấm là tên các mốiquan hệ, như là : [:KNOWS]
Câu ví dụ trên miêu tả một đường dẫn gồm 3 nút, một trong số đó đã được nối vớiđịnh danh a, những cái còn lại nối với c Các nút này được được kết nối bởi đường liên 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ị
Vừa rồi 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ớimệnh đề START – nút đại diện cho Michael 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 1 đ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