1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ ÁN Ngôn ngữ mô hình hóa dữ liệu trong CSDL đồ thị

65 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 3,47 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

MỤ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 2

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

Mụ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 4

Hì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 5

MỞ ĐẦ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 6

Chươ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 7

có 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 8

tí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 10

Phươ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 11

tâ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 12

mỗ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 13

Chươ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 14

WHERE 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 15

nữ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 16

khó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 17

Hì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 18

hơ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 19

nhau 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 20

Hì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 21

Giai đ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 22

Hì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 23

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

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

Lĩ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 26

Hì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 27

Việ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 28

khá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 29

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

Hì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 31

mố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 32

START 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

Ngày đăng: 26/01/2022, 14:59

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Ian Robinson, Jim Webber, and Emil Eifrem, 2013, “Graph Databases”, O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472 Sách, tạp chí
Tiêu đề: Graph Databases
2. Ian Robinson, 10/2010, “RESTful Application Protocols” Sách, tạp chí
Tiêu đề: RESTful Application Protocols
3. Alberz Akrawi, 2010, “Social Network System”,SE-100 44Stockholm, Sweden Sách, tạp chí
Tiêu đề: Social Network System
5. Prof. Matthias Grossglauser, “FiniteStateMachines” Sách, tạp chí
Tiêu đề: FiniteStateMachines
6. Nguyễn Huy Khánh, 2012, “RESTful Web Service” Sách, tạp chí
Tiêu đề: RESTful Web Service
7. The Neo4j Team neo4j.org, 2013, “The Neo4j Manual” Sách, tạp chí
Tiêu đề: The Neo4j Manual
8. Honigman, 2010, “Friending, Tweeting, Blogging &amp; LinkingIn:Legal Considerations for Health Care Providers” Sách, tạp chí
Tiêu đề: Friending, Tweeting, Blogging & LinkingIn:LegalConsiderations for Health Care Providers
9. Gunther Eysenbach, MD, MPH, 2008, “Medicine 2.0 Proceedings”, Toronto, Canada Sách, tạp chí
Tiêu đề: Medicine 2.0 Proceedings
10. Prashant Mishra and Gaur Sunder, “Mediacal Social Network” Sách, tạp chí
Tiêu đề: Mediacal Social Network
11. Alexander Richter, Michael Koch, “Functions of Social Networking Services” Sách, tạp chí
Tiêu đề: Functions of Social Networking Services

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w