Mạng xã hội sức khỏe dựa trên csdl đồ thị

92
Đồ án tốt nghiệp Đại học Mục lục 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

Transcript of Mạng xã hội sức khỏe dựa trên csdl đồ thị

Đồ án tốt nghiệp Đại học Mục lục

MỤC LỤCChương 1 : Giới thiệu chung...............................21.1 Đồ thị là gì? Đặc điểm của đồ thị................................................................21.2 Sức mạnh của CSDL đồ thị..........................................................................41.3 Các đồ thị trong thế giới thực....................................................................5Chương 2 : CSDL đồ thị....................................92.1 Nhược điểm của các CSDL khác.................................................................92.2 CSDL đồ thị................................................................................................122.2.1 Ngôn ngữ mô hình hóa dữ liệu trong CSDL đồ thị...............................142.2.1.1Mô hình hóa quan hệ trong miền quản lý hệ thống...........................162.2.1.2 Mô hình hóa đồ thị trong miền quản lý hệ thống..............................182.2.1.3Các mô hình đa miền...........................................................................202.2.2Các phương pháp mô hình hóa dữ liệu.................................................212.2.2.1Mô tả mô hình bằng các thuật ngữ của ứng dụng...212.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................222.2.2.3Các mối quan hệ chung và các mối quan hệ chi tiết.......................................................232.2.2.4Mô hình hóa các sự kiện.........................242.2.2.5Các kiểu giá trị phức tạp.......................242.2.2.6Thời gian.......................................252.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ị.............................................272.2.3.1Ngôn ngữ truy vấn đồ thị : tổng quan về Cypher. .272.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................323.1 Giới thiệu khái quát mạng xã hội sức khỏe.............................................323.1.1 Giới thiệu mạng xã hội sức khỏe..........................................................323.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)..........333.1.2.2Quản lý liên lạc (Contact Management)...........343.1.2.3Chia sẻ thông tin( Share information)...........353.1.2.4 Tìm kiếm (Search)..............................36

3.2 Phân tích thiết kế......................................................................................373.2.1Biểu đồ Use case.....................................................................................373.2.1.1Use case tổng quát.............................373.2.1.2Use case Identity Management (quản lý định danh) 383.2.1.3Usecase Contact Management (quản lý liên lạc)...383.2.1.4Use case Share information (Chia sẻ thông tin). .393.2.1.5Use case Search (Tìm kiếm)......................39

3.2.2Biểu đồ lớp..............................................................................................403.2.3Biểu đồ hoạt động...................................................................................403.2.3.1Chức năng quản lý định danh.....................403.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.............................................................423.2.3.4Chức năng tìm kiếm.............................................................................433.2.4 Biểu đồ tuần tự......................................................................................443.2.5 Các chức năng bên client.......................................................................443.2.6 Các chức năng bên server......................................................................453.2.7 Máy hữu hạn trạng thái........................................................................463.2.8 Thiết kế giao thức..................................................................................483.3 Thiết kế CSDL.............................................................................................54Chương 4 Cài đặt và kiểm thử.............................60Chương 5 : Kết luận......................................61DANH MỤC TÀI LIỆU THAM KHẢO..............................62

Đồ án tốt nghiệp Mục lục hình

Mục lục hình

Hình 1.1 Ví dụ mạng xã hội...............................................................................5Hình 1.2 Đồ thị thuộc tính................................................................................6Hình 2.1 Dữ liệu kết nối trong CSDL quan hệ................................................12Hình 2.2 Dữ liệu kết nối trong NoSQL............................................................14Hình 2.3 Lưu trữ dữ liệu kết nối.....................................................................15Hình 2.4 Thử nghiệm truy vấn trên CSDL đồ thị và CSDL quan hệ................16Hình 2.5 Mô hình trung tâm quản lý dữ liệu.................................................18Hình 2.6 Biểu đồ quan hệ thực thể của trung tâm quản lý dữ liệu..............20Hình 2.7 Ánh xạ mô hình vào các bảng trong SQL.........................................21Hình 2.8 Mô hình hóa trung tâm quản lý dữ liệu bằng đồ thị......................22Hình 2.9 Ví dụ mô hình đa miền.....................................................................23Hình 2.10 Mô hình dữ liệu bằng các thuật ngữ ứng dụng............................25Hình 2.11 Mô hình các sự kiện bằng các nút.................................................27Hình 2.12 Kỹ thuật cây thời gian....................................................................28Hình 2.13 Kỹ thuật danh sách liên kết...........................................................29Hình 2.14 Ngôn ngữ truy vấn Cypher.............................................................30Hình 2.15 Tạo nút............................................................................................33Hình 2.16 Giao diện đã tạo nút......................................................................33Hình 2.17 Tạo property...................................................................................33Hình 2.18 Tạo relationship.............................................................................34Hình 3.1 Biểu đồ use case...............................................................................40Hình 3.2 Use case quản lý định danh.............................................................41Hình 3.3 Use case quản lý liên lạc..................................................................41Hình 3.4 Use case chia sẻ thông tin...............................................................42Hình 3.5 Use case tìm kiếm............................................................................42Hình 3.6 Biểu đồ lớp........................................................................................43Hình 3.7 Biểu đồ hoạt động : quản lý định danh...........................................43Hình 3.8 Biểu đồ hoạt động : quản lý liên lạc (1)...........................................44Hì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).........................................45Hình 3.11 Biểu đồ hoạt động: chia sẻ thông tin (1).......................................45Hình 3.12 Biểu đồ hoạt động: chia sẻ thông tin (2).......................................45Hình 3.13 Biểu đồ hoạt động : chia sẻ thông tin (3)......................................46Hình 3.14 Biểu đồ hoạt động : chia sẻ thông tin (4)......................................46Hình 3.15 Biểu đồ hoạt động : tìm kiếm.........................................................46Hình 3.16 Biểu đồ tuần tự...............................................................................47Hình 3.17 Máy hữu hạn trạng thái phía server.............................................50Hình 3.18 Máy hữu hạn trạng thái phía client..............................................51Hình 3.18 Thiết kế CSDL – mối quan hệ FRIEND, FAMILY..............................58Hình 3.19 Thiết kế CDSL – mối quan hệ PROFILE...........................................59Hình 3.20 Thiết kế CSDL – mối quan hệ User-Group......................................59Hình 3.21 Thiết kế CSDL – chia sẻ thông tin...................................................60Hình 3.22 Thiết kế CSDL – PM & Notification.................................................61Hình 3.23 CSDL................................................................................................62Hình 4.1 CSDL..................................................................................................63Hình 4.2 Giao diện.......................................63

Đồ án tốt nghiệp Mở đầu

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ữngnăm 1998, NoSQL ám chỉ những cơ sở dữ liệu không dùng môhình dữ liệu quan hệ để quản lý dữ liệu. Cơ sở dữ liệu đồthị (Graph Database) 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ến trong thời điểmnày. Nhưng với lượng dữ liệu ngày càng lớn, mức độ tăngnhanh khiến cho việc xử lý nhiều truy vấn phức tạp rất mấtthờ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ângcấp… Có nhiều nguyên nhân và nhiều yếu tố dẫn đến sự ra đờicủ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ệuquan hệ là gì? Ngôn ngữ truy vấ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ột cá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 được mộ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ức nềnvững chắc về cơ sở dữ liệu để từ đó áp dụng được cho nhiềuứng dụng khác.

Đồ án tốt nghiệp Chương1 :Giới thiệu chung

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ác cạnh, hay có thể nói là gồm cácnút và các mối quan hệ giữa các nút với nhau. Nếu coi cácnút là các thực thể, và chúng được nối với nhau bởi các mốiquan 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ácquan hệ trên mạng xã hội, mô hình sự đa dạng của sinh vậtsống, mô hình một quy trình sản xuất, mô hình một cuộc khởinghĩa…

Bởi vì thế giới thực quá đa dạng và có mối quan hệ vớinhau chứ không tuân theo một tập quy luật bất biến nào nênmuốn lưu trữ hay xử lý các thông tin như thế này được hiệuquả, 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ất nhiề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 :

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

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ácngười dùng được định danh bằng tên và có các mối quan hệ làFRIEND_OF. Mối quan hệ trong đồ thị có thể là một chiều, cóthể là hai chiều. Như trong đồ thị trên thì hầu hết là mốiquan hệ hai chiều, chỉ 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ễncác mối quan hệ trong đời thực một cách dễ dàng và trựcquan.

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ậysẽ 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ộc tính đã

Đồ án tốt nghiệp Chương1 :Giới thiệu chung

giải quyết được vấn đề này. Trong các mô hình đồ thị thuộctính có các đặc điểm sau :

- 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à Age vớ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ũng hoàn toàn có thể có thuộc

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

tính. Ví dụ mối quan hệ từ nút 1 đến nút 2 có Id = 100,thuộc 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ác cũ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ợinhuậ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ácbà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êu chuẩ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ới cá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ăngHiệ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ọnCSDL quan hệ hay là các bộ lưu trữ NoSQL (not only SQL).Đối với các CSDL quan hệ, khi các tập dữ liệu ngày càng lớnthì việc thực hiện các truy vấn sâu và phải kết hợp nhiềubảng rất mất thời gian và kém hiệu quả thì điều này lạikhông phải vấn đề của CSDL đồ thị. Lý do vì các truy vấn đãđược nội bộ hóa thành một phần của đồ thị. Như vậy thờigian để thực hiện truy vấn tỉ lệ với kích thước của mộtphần đồ thị được duyệt để đáp ứng truy vấn chứ không phụthuộc vào kích thước của toàn bộ đồ thị. Vì thế mà dù kích

Đồ án tốt nghiệp Chương1 :Giới thiệu chung

thước của cả tập dữ liệu có tăng lên, thời gian thực hiệntruy vấn khi sử dụng CSDL đồ thị vẫn đảm bảo.

- Linh độngTí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ới cá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ủaCSDL. Có thể so với CSDL quan hệ, khi xây dựng một CSDL chomộ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ớttrường hay thay đổ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ào nút hay các mốiquan hệ mới mà không làm ảnh hưởng tới các nút khác, cũngkhông làm thay đổ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 chocác công việc có tính chất hay thay đổi và độ ổn định khôngcao. Bởi tính linh động này mà người ta không cần phải camkết một mô hình nào đó mà sau một thời gian lại thấy khôngphù hợp và phải xây dựng lại. Ngoài ra thì tính linh độngnày còn giảm bớt chi phí bảo trì và rủi ro như các CSDLkhác mang lại.- NhanhCSDL đồ 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ủa chúngđưa đến cho người sử dụng có thể phát triển ứng dụng mộtcách có kiểm soát. Tính nhanh ở đây là chúng ta có thể vận

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

dụng và thử các xu hướng mới một cách nhanh nhẹn và đưa raxu hướng phù hợp nhất có thể.

1.3 Các đồ thị trong thế giới thựcKhi áp dụng csdl đồ thị vào thực tế, với thực trạng kỹ

thuật và các ràng buộc về tài chính, các tổ chức/ doanhnghiệp vẫn chọn csdl đồ thị bởi những lý do sau : - Hiệu quả “Từ phút đến mili giây” : tính hiệu quả và tính

đáp ứng của truy vấn là những vấn đề được quan tâm nhất củacác tổ chức. Các hệ thống giao dịch trực tuyến, các ứngdụng web lớn cụ thể thì đều phải đáp ứng, phản hồi lại chokhách hàng (người dùng đầu cuối) trong một số mili giâynhất định nếu họ muốn thành công. Việc csdl đồ thị sử dụngchỉ số kề tự do và đưa một phần truy vấn vào đồ thị tỏ rahiệu quả hơn rất nhiều so với csdl quan hệ..- 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 ứng dụng kinh doanh quan trọng cần mộtcông nghệ mạnh mẽ, có khả năng mở rộng và có tính giaodịch…

Xã hộiDữ 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ộtcá nhân, nhưng thông qua những thông tin người đó kết nối

Đồ án tốt nghiệp Chương1 :Giới thiệu chung

với xã hội, chúng ta vẫn có thể dự đoán được tính cách, xuhướng mua sắm.. Các ứng dụng mang tính xã hội cho phép cáctổ 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ữangười với người, cùng vớ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ộigiúp ta xác định được các mối quan hệ trực tiếp và giántiếp giữa các cá nhân, các nhóm và những gì họ tương tá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ênkế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. Các gợi ý

Các gợi ý hiệu quả là ví dụ điển hình của việc đưa đếncho người dùng đầu cuối những giá trị thông qua việc ápdụng khả năng suy luận hoặc gợi ý. Các thuật toán được sửdụng là quy nạp, gợi ý, xác định con người, sản phẩm hoặcdịch vụ mà các cá nhân hoặc nhóm quan tâm đến. Chúng thiếtlập mối quan hệ giữa người và người, người và sản phẩm haybất cứ thứ gì trong phạm vi lĩnh vực đang được gợi ý. Cácmối quan hệ được thiết lập dựa trên hành vi của người sửdụng. Từ đó bộ máy làm việc sẽ xác định nguồn lực quan tâmđến cá nhân hay nhóm có sở thích về một lĩnh vực của một tổchức nào đó. Đây là phương pháp thứ nhất.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Phương pháp thứ hai là xác định người dùng hoặc nhómngười dùng cho một nguồn lực cụ thể, tập trung vào các đặctính của nguồn lực đó bằng các câu hỏi. Từ đó bộ máy làmviệc xác định các nguồn lực tương tự như thế và để ngườidùng kết hợp với chúng.

GeoKhông gian địa lý là trường hợp đầu tiên sử dụng đồ thị

(tham khảo bài toán “Bảy cây cầu” của Euler mà sau này hìnhthành cơ sở lý thuyết đồ thị). Các ứng dụng không gian địalý của csdl đồ thị có phạm vi từ tính toán các đường đigiữa các địa điểm trong một mạng lưới trừu tượng như mộtmạng đường bộ hoặc đường sắt..cho các hoạt động có tínhkhông gian như tìm tất cả các điểm của vùng giới hạn quantâm, tìm trung tâm của một khu vực, tính toán giao điểmgiữ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úcdữ liệu cụ thể, từ các mối quan 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 – đại diệncho 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ứccủa một đồ thị, thường phân cấp về hình thức. Điều này hoàntoà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ạnhcá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.

Đồ án tốt nghiệp Chương1 :Giới thiệu chung

Các ứng dụng về không gian địa lý của csdl đồ thị đặcbiệt có liên quan đến các lĩnh vực viễn thông, hậu cần, dulị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 để giaodị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 tâm chi phí và các đơn vị kinhdoanh. 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 định dạ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ệuchủ 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ối quan tâm chính của nó bao gồmquản lý sự thay đổi theo thời gian khi cấu trúc của tổ chứcthay đổi, hợp nhất các doanh nghiệp và các quy tắc kinhdoanh thay đổi; kết hợp các nguồn mới của dữ liệu; bổ sungcá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àngkinh 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à truy vấ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

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

chủ. Các mô hình như vậy bao gồm các định nghĩa kiểu, cácràng buộc, mối quan hệ giữa các thực thể, sự ánh xạ giữacác mô hình và các hệ thống mã nguồn cơ bản. Một cấu trúccủa csdl đồ thị còn là mô hình dữ liệu không lược đồ cungcấp cho ad hoc, sự thay đổi và các cấu trúc ngoại lệ haycác lược đồ bất thường mà thường xảy ra khi có nhiều nguồndữ 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 kinh doanh thayđổi.

Quản lý trung tâm dữ liệu và quản lý trung tâm mạngMộ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ực quan hóa việc chung hoạt độngra sao và xác định được các vật phụ thuộc giữa chúng. Cấutrúc kết nối đồ thị, cùng với ngôn ngữ truy vấn như Cyphercho phép chúng ta phân tí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 ứngdụng, dịch vụ, máy ảo, máy vật lý, trung tâm dữ liệu, địnhtuyến, switchs và sợi quang nào – là quan trọng để kháchhà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ích Bottom-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ệuchủ, chúng có thể sử dụng để cùng mang lại dữ liệu từ cáchệ 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àng của chúng, từ các phần tử nhỏ

Đồ án tốt nghiệp Chương1 :Giới thiệu chung

nhất đến các ứng dụng và các dịch vụ hay khách hàng sử dụngchúng. Một csdl đồ thị đại diện cho một mạng có thể được sửdụng để làm giàu cho tri thức hoạt động dựa trên các mốitương quan sự kiện. Có thể giải thích rõ hơn như sau: mỗikhi có một bộ máy tương quan sự kiện suy luận một sự kiệnphức tạp từ một dòng cá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ầnthiết nào.

Ngày nay, csdl đồ thị đã đươc sử dụng thành công trongcá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ạng cũng như phù hợp với miền là cácyế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ácquy định về việc truy cập vào các nguồ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ềukhiển nguồn tài nguyên đó. Kiểm soát truy cập được thực thihoặc sử dụng dịch vụ danh mục, hoặc bằng cách xây dựng mộtgiả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áccấu trúc có tính tổ chức không phâ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ằng

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

tay, đặc biệt là những giải pháp được phát triển trên csdlquan hệ, đều đã trải qua sự thất bại của việc kết nối cácbảng với sự phát triển của kích thước các tập dữ liệu. Việcxử 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ểm soát truy cập có kết nối dày đặcbao trùm hàng tỉ các bên tham gia và các nguồn tài nguyên.Nó cấu trúc các mô hình dữ liệu không lược đồ hỗ trợ cả cấutrúc phân cấp và không phân cấp, trong khi mô hình thuộctí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ực hiện trongmili giây.

Với quản lý và phân tích mạng, một giải pháp điều khiểntruy cập csdl đồ thị cho phép cả 2 loại truy vấn top-downvà 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ựccủa quản lý nội dung, các dịch vụ ủy quyền liên hiệp, cácsở 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).

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

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ó ích hơ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. Tuynhiên để kết nối chúng lại thì không phải dễ dàng. Và cáchthức kết nối các dữ liệu như thế nào, quản lý dữ liệu đó rasao 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ới nhau thông qua các khóa chính, khóangoại.. Mặc dù nói là có quan hệ với nhau thông qua cácphép join (nối bảng) nhưng như thế vẫn chưa đáp ứng đượctính chất của các dữ liệu kết nối. Làm thế nào để đưa cácdữ liệu kết nối và các dữ liệu nửa cấu trúc vào CSDL quanhệ - CSDL lưu trữ dữ liệu theo một định dạng cố định vàtrong một hệ thống các bảng có cấu trúc. Lấy một cái có cấutrúc để lưu trữ cái nửa cấu trúc thực sự là một vấn đề nangiải. Tệ hơn nữa khi cấu trúc của bộ dữ liệu ngày càng phứctạp và không đồng đều bởi các mối quan hệ, sự gia tăngtrong việc liên kết các giao dịch ngày càng lớn khiến choCSDL 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 CSDLkhác phù hợp hơn.

Có thể ví dụ về mô hình hóa dữ liệu kết nối trong CSDLquan hệ như dưới đây

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

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ớiCSDL 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 :

SELECT p1.PersonFROM Person p1 JOIN PersonFriendON PersonFriend.FriendID = p1.IDJOIN Person p2ON PersonFriend.PersonID = p2.IDWHERE p2.Person = 'Bob'

Đây là một câu truy vấn hoàn toàn bình thường. Và theonhư bảng dữ liệu thì ta có thể thấy Alice và Zach là bạncủa Bob. Tuy nhiên mối quan hệ không phải lúc nào cũng là 2

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

chiều. Ta sẽ xem xét tiếp một ví dụ nữa để thấy rõ điềunà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ũngnằm trong danh sách bạn bè của họ)Thực hiện truy vấn :

SELECT p1.PersonFROM Person p1 JOIN PersonFriendON PersonFriend.PersonID = p1.IDJOIN Person p2ON PersonFriend.FriendID = p2.IDWHERE p2.Person = 'Bob'

Đến đây vấn đề đã khác đi một chút. Câu trả lời khôngphải là Alice và Zach như trên nữa, mà chỉ còn có Alicethô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 quantâm tới việc nó xử lý truy vấn thế nào. Ở vd 1 thì chúng tachỉ duyệt đến khi nào hết bản ghi mà PersonID = 2 thì kếtthúc (vì bảng lưu tuần tự từ ID =1 đến ID =99). Tuy nhiênđến vd 2 thì chúng ta phả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ặp trong khithự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 nữa như câu truy vấn : “Ai là bạn củabạn của Bob?” chẳng hạn thì mọi thứ sẽ phức tạp hơn rấtnhiều.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

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ệu bằ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ét cá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 danhkết hợp vào bên trong một trường theo trường khác như mộtkhóa ngoại. Nhưng chúng lại đòi hỏi tính gộp ở tầng ứngdụng – nơi mà mọi thứ nhanh chóng trở nên tốn kém.

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

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ảngliên kết phụ khác như order và item. Điều này dễ dàng khiếnta tưởng rằng có thể dùng cặp 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ông theo 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ập nhậ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òn nế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ôngphả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ộc ngữ nghĩa giữa các thực thể, tuynhiên các mô hình dữ liệu và csdl của chúng thì không đượchiện ra. Và để đáp ứng được điều này, các ứng dụng phải tạomột mạng riêng, không kết nối với dữ liệu ngay tại ứngdụ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ác kết nối trong một phạm vi chủ

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

đề 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.

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ợpthực tế của dữ liệu có kết nối, các kết nối giữa các thựcthể không thể hiện được tính không đồng nhất trong một phạmvi 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 ta cũng thấy được việc thêm bớt cácnú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ốiquan hệ giữa các nút trong mạng. Như vậy cũng không cần lo

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

lắng tới việc di chuyển hay thay đổi cấu trúc dữ liệu trongmạ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 đượccác mối quan hệ của một thực thể với các thực thể còn lạithông qua các hướng của các mối quan hệ. Có thể thấy như 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ện trong CSDL quan hệ như xét ở trênthì khá lằng nhằng và phức tạp. Và những câu truy vấn như :bạn của bạn của bạn.. thì sử dụng CSDL đồ thị sẽ dễ dànghơn rất nhiều so với việ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 đã được Vukoticvà bạn đồng hành thử nghiệm trên một mạng xã hội với độ sâutối đa là 5 [Graph Databases – 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 quanhệ

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

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

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 Neo4jthì vẫn thực hiện truy vấn ổn định và thời gian thì nhanhhơn hẳn csdl quan hệ (độ sâu càng cao càng thấy rõ sự khácbiệt). Như vậy rõ ràng là csdl đồ thị hiệu quả hơn hẳn csdlquan hệ khi làm việc với dữ liệu kết nối. Tuy nhiên như vậykhông có nghĩa là csdl quan hệ và các csdl NoSQL khác khônghữu ích và hiệu quả. Chúng vẫn làm việc tốt với các dữ liệukhông có tính kết nối cao và ổn định, không phải thay đổinhiều. Tùy theo tính chất của từng loại dữ liệu, người tasẽ xem xét nên sử dụng loại csdl nào cho phù 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ác vớ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, haygợi ý sản phẩm trong kinh doanh dựa vào lịch sử mua hàng..tất cả đều có thể áp dụng csdl đồ thị để có được các quyếtđịnh chính xác hơn. Có thể tìm hiểu vấn đề này rõ hơn vớikhai phá dữ liệu và phân tí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ựngmột ứng dụng sử dụng csdl đồ thị với neo4j nên tiềm năngcủ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ư ápdụng cụ thể xây dựng một ứng dụng thực.

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

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ộng câ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ật quen thuộc hơn như A*,Floyd, Kruskal, Dijkstra.. Và thực tế trong bộ xử lý dữliệu của csdl đồ 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àycho 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ủamiề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ôngcó, 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ác mũ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ự sai lệchgiữ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 nhau theo những gì chúng tathấy trong mối liên hệ giữa chúng mà chúng còn cho ta nhiều

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

hơn thế, có thể trả lời những câu hỏi mà chúng ta muốntrong 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ình hó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ật dựatrê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ậtmô hình hóa dữ liệu liên kết. Từ đây dẫn đến hệ quả hiểnnhiên là có sự so sánh những điểm tương đồng và điểm khácbiệ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ệm sang một môhình đồ thị vật lý và cách biến các mô hình đồ thị thu gọnthà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ảnlý trung tâm dữ liệu đơn giả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.

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

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ố ứngdụng và cơ sở hạ tầng trung 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út App 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ũng như dữ liệucủa nó, thì ở đây có thêm cơ sở hạ tầng vật lý giữa ngườidù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 Balancer1, 2). Giữa các thành phần này là các phần tử mạng như cápnối, công tắc (switchs), bản patch, NICs, nguồn điện…và tất

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

cả đều có thể hỏng trong những trường hợp xấu. Để hoànthành sơ đồ trên (vận hành hệ thống) thì ta có một ngườidùng của ứng dụng 3 (App 3) và được biểu diễ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ối quan tâm :

Việc tiếp tục thực hiện các chức năng để đáp ứng mộtthỏa thuận các cấp độ dịch vụ, bao gồm khả năng thực hiệncá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ủabất kỳ khiếu nại nào của khá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, cung cấ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ý trungtâm dữ liệu, thì việc đầu tiên là muốn đảm bảo các mô hìnhdữ 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âmchính. Đưa ra các nhu cầu và các khó khăn, chúng ta sẽ sosá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ốngGiai đ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ìmcách hiểu các thực thể trong miền cần mô hình, chúng tươngtác với nhau thế nào và các quy tắc chi phối quá trìnhchuyển đổi trạng thái của chúng. Hầu hết các vấn đề này

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

được thực hiện thông qua việc thảo luận giữa các chuyên giavà thông qua các bảng phác thảo.

Giai đoạn thứ hai sẽ cùng nhau đi đến các thỏa thuậntrong hình thức nghiêm ngặt hơn như là biểu đồ quan hệ thựcthể (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ấtcả mọi người nữa, nó sử dụng các ký hiệu riêng tuân theonhữ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ốiquan hệ được chuẩn hóa để loại bỏ dữ liệu dư thừa. Thôngthường, bước này là chuyển các sơ đồ E-R thành các bảng vàsau đó được đưa vào csdl bằng các câu lệnh SQL. Tuy nhiênngay cả những trường hợp đơn giản phục vụ việc làm bật lên

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

các tính chất của mô hình quan hệ. Có thể thấy là các khóangoạ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.

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ầutruy 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 tasẽ giải quyết thế nào khi nhu cầu kinh doanh thay đổi khiến

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

mô hình dữ liệu thay đổi. Xây dựng mô hình khác? Di chuyểnmô hình?.. Những biện pháp trên đều được nhưng tính khảthi không cao và chi phí chi trả cho những lần đổi thaykhông nhỏ. Chưa kể việc di chuyển dữ liệu có thể không đảmbảo an toàn và chính xác mang lại những rủi ro có thể khônglường trước được. Nhìn chung tất cả đều dẫn đến việc tìmmột giải pháp khác kém rủi ro và hiệu quả hơn.

2.2.1.2 Mô hình hóa đồ thị trong miền quản lý hệ thốngVớ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àmphong phú hơn những gì các biể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.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

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ông thường nhưng lại đầy đủ và hơncả 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ểnhay thêm hoặc bớt thực thể hay bất cứ thứ gì trong mô hìnhđể phù hợp với nhu cầu kinh doanh đều không thành vấn đề.

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

2.2.1.3Các mô hình đa miềnTrong 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.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Đầu tiên là lĩnh vực văn học với các nút như Shakespearevới firstname là William và lastname là Shakespeare. Nútnà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 RoyalShakespeare (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.

Lĩnh vực thứ 3 về dữ liệu địa lý được thể hiện bằng cácmố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ải quyết các vấn đề phức tạp liên quannhiề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ấtphức tạp và đa miền như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ạihiệ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ụngChú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ác mối quan hệ. Những câu chuyện củangười dùng nhanh nhạy sẽ cung cấp phương tiện chính xác đểthể hiện cái nhìn từ ngoài vào, từ trung tâm người dùng racác nhu cầu của ứng dụng. Và các câu hỏi sẽ phát sinh trongquá trình đáp ứng nhu cầu này. Có thể xem xét ví dụ sau:

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

Là một người thích một quyển sách, tôi muốn biết nhữngquyể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 được nhữngquyể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ình dạ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 độcgiả và một quyể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ộtcâu hỏi : Những quyển sách nào được các độc giả khác thíchmà họ cũng thích quyển sách mà tôi đang đọc? Câu hỏi nàycho thấy có nhiều hơn mối quan hệ LIKES (thích) và nhiềuthự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 quanhệ được thể hiện trong mô hình dữ liệu đơn giản sau :

Hình 2.10 Mô hình dữ liệu bằng các thuật ngữ ứng dụng

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

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 được phụ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óadữ 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) đạidiện cho cấu trúc

Điều này có thể không đúng trong mọi trường hợp nhưngnhìn chung thì nó cũng là những chỉ dẫn thường gặp giúpchú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 mối quan hệ.- Sử dụng các nút để đại diện cho các thực thể - là những

gì nằm trong mối quan tâm của vấn đề- Sử dụng các mối quan hệ để thể hiện sự kết nối giữa các

thực thể và để thiết lập các bối cảnh ngữ nghĩa cho mỗithực thể, từ đó cấu trúc miền vấn đề.- Sử dụng mối quan hệ trực tiếp để làm rõ hơn mối quan hệ

ngữ nghĩa. Rất nhiều mối quan hệ là một chiều, đó là lý dotại sao các mối quan hệ trong đồ thị thuộc tính đều là quanhệ có hướng. Đối với những quan hệ hai chiều, khi thực hiệntruy vấn cần chú ý bỏ qua hướng để đỡ phức tạp.- 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ầnthiế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ặc chấ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ãn thờigian, phiên bản..

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

Việc xác định cái nào là nút, cái nào là mối quan hệ rấtquan 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ốiquan hệ để mô hình một thực thể như là một email x giữauser 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ữauser 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ộtthự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ấn hoặc các mã ứng dụng. Điều này sẽ gây tốnkém và ảnh hưởng tới sự tin tưởng của khách hàng.

2.2.2.3Các mối quan hệ chung và các mối quan hệ chi tiếtKhi 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ác nhãn quan hệ chi tiết với cácmố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ới việc sử dụng quan hệ ADDRESS có thuộc tính{type:’delivery’} và {type:’home’}. Các mối quan hệ lànhững con đường quan trọng để đi vào đồ thị. Phân biệt bằngcác kiểu quan hệ là cách tốt nhất để loại bỏ các mảng lớncủa đồ thị từ một giao điểm. Sử dụng mộ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át sinh thêm thủ tục vào-ra trong lần đầu tiên nhữngthuộc tính đó được truy cập; bởi các thuộc tính nằm trongmột tập tin được lưu trữ riêng biệt với các mối quan hệ

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

(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ối quan 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ác quan 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ắnnhấ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 quanhệ, nhưng trong một số trường hợp chúng ta muốn theo dõicác kiểu cụ thể của các mối quan hệ trong tập đó, trong khimặt khác lại muốn theo dõi tất cả chúng, không phân biệtkiể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_ADDRESSvàDELIVERY_ADDRESS. Điều này cho phép chúng ta theo dõi cáckiểu cụ thể của các quan 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ôimuốn tìm tất cả các địa chỉ cho một user? Có một vài giảipháp như sau. Cách 1, chúng ta có thể mã hóa tất cả cácloạ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ệ khác nhau. Cách thứ 2 là chúng tathêm vào một loại quan hệ ADDRESS vào mô hình. Tức là mỗinút đại diện cho một loại địa chỉ và nối với các user bằng2 mối quan hệ : 1 quan hệ cụ thể (như là DELIVERY_ADDRESS)và 1 quan hệ chung ADDRESS (type: ‘delivery’).

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

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 gian thì một sự kiện xuất hiện. Chúngta có thể biểu diễn những sự kiện này bằng các node riêng,và kết nối với các thực thể tham gia sự kiện đó. Mô hìnhhóa một sự kiện trong phạm vi các thuật ngữ của từng sảnphẩm giống như một cấu trúc : một nút đại diện cho kế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ãn thờ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ácnút trung gian.

Hình 2.11 Mô hình các sự kiện bằng các nútHình này mô tả sự kiện Ian làm việc cho Neo với vai trò

là engineer và bắt đầu làm việc vào ngày 1/5/2010Trong Cypher thì được thể hiện như sau :

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

(ian)-[:EMPLOYMENT]->(employment)-[:EMPLOYER]->(neo),(employment)-[:ROLE]->(engineer)

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, địa chỉ, 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ớinhững kiểu giá trị phức tạp thế này, cách tốt nhất là biểudiễn chúng bằng các node riêng biệt.

2.2.2.6Thời gianThờ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à danhsách liên kết.Cây thời gian :

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

Hình 2.12 Kỹ thuật cây thời gianCâ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ấykỹ 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 :

Hình 2.13 Kỹ thuật danh sách liên kết

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

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ướcmộ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ạocác danh sách liên kết để thấy được chuỗi sự kiện theo thờigian như ví dụ trên.

Tạo phiên bảnMộ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 đây củ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ãn thờigian và được lưu trữ lại mỗi khi có thay đổi. Có thể thấyviệc làm trên làm đồ thị phức tạp hơn nhiều cho việc truyvấn cũng như lưu trữ. Vì vậy mặc dù có thể nhưng hầu hếtviệ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ếnChú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âu chuyện của người dùng. Điều này sẽ đảmbả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 đượcphát triển theo kiểu lặp và tăng tiến cung cấp bởi các chứcnăng của ứng dụng sẽ khá khác so với bằng việc rút ra bằngviệ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 nhucầu cụ thể và các câu hỏi phát sinh trong các nhu cầu.

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

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 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áchtoàn diện hơn, mô tả được các bài toán phức tạp và đúng vớithự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ệutrên.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

2.2.3.1Ngôn ngữ truy vấn đồ thị : tổng quan về CypherCypher 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êngia csdl và các nhà kinh doanh.

Cypher cho phép người dùng tìm kiếm thông tin trên csdltheo 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ểudiễn mối quan hệ trên như 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, Cyphercũng có các câu lệnh riêng. Câu truy vấn đơn giản nhất baogồm một mệnh đề START theo sau bởi MATCH và RETURN. Sau đâylà một ví dụ đơn giản cho câu truy vấn sử dụng 3 mệnh đềtrên để tìm bạn chung với người dùng có tên Michael.

START a=node:user(name= ‘Michael’)MATCH (a)-[:KNOWS]->b –[:KNOWS]->(c), (a)-[:KNOWS]->(c)

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

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ácnút hoặc các mối quan hệ - trong đồ thị. Những điểm bắt đầusẽ được chọn thông qua tìm kiếm chỉ mục hoặc tìm kiếm trựctiếp dựa trên các nút và các mối quan hệ. Như ví dụ phíatrên, điểm bắt đầu sẽ là điểm mà được đánh chỉ mục là uservà 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à do ngườ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áckí tự ASCII để đại diện cho các nút và các mối quan hệ,“vẽ” ra các dữ liệu mà chúng ta quan tâm.

Chúng ta sử dụng - Dấu 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ốc tớ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ối quan 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ạinối với c. Các nút này được được kết nối bởi đường liên hệ

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

“KNOWS”. Mô hình này về lý thuyết có thể được sử dụng nhiềulần trong dữ liệu đồ thị nên chúng ta nên ghim một phầnchú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útthực sự trên đồ thị với mệnh đề START – nút đại diện choMichael. Chúng ta gắn nút này vào định danh a, rồi đưa asang mệnh đề MATCH. Từ đó ta đã ghim mô hình này đến 1 điểmtrong đồ 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ấycác nút khác để gắn với các định danh phù hợp. Và như vậy,định danh a đại điện cho Michael, còn các định danh b, c sẽtheo định danh a mà gắn vào các nút xung quanh khớp vớiđiều kiện trong mệnh đề MATCH.

RETURNMệnh đề này quy định việc các nút, các mối quan hệ và

các thuộc tính trong dữ liệu được nối nên được trả về nhưthế nào cho client. Trong ví dụ trên thì chúng ta mong muốnviệc trả về là các nút kết nối với định danh b và c. Các câu lệnh Cypher khác - WHERE : cung cấp các tiêu chí để lọc các mẫu kết quả phù

hợp- CREATE and CREAT UNIQUE : tạo nút và các mối quan hệ- DELETE : xóa nút, mối quan hệ và thuộc tính- SET : thiết lập các giá trị thuộc tính

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

- FOREACH : biểu diễn một hành động cập nhật đối với mỗiphần tử trong một danh sách- UNION : hợp các kết quả từ 1 hoặc nhiều truy vấn- WITH : tạo chuỗi các phần truy vấn và chuyển tiếp các

kết quả từ một tới kết quả tiếp theo. Giống như tạo đườngống các lệnh trong Unix.

Cũng giống các ngôn ngữ truy vấn khác, Cypher còn nhiềumệnh đề khác như SKIP, USING, MERGE, REMOVE... Trên đây chỉmang tính giới thiệu, chúng ta có thể tìm hiểu thêm và thựchành nhiều hơn để hiểu rõ cách dùng của các mệnh đề trên

2.2.3.2Cách cài đặt Neo4j và thực hiện truy vấnNeo4j là hệ quản trị csdl đồ thị và dùng để xây dựng nên

csdl đồ thị cũng như thực hiện các truy vấn trên đó. Ngoàineo4j còn có một số hệ quản trị csdl đồ thị khác nhưInfinite Graph, InfoGrid, HyperGraphDB, Dex, GraphBase..Tuy nhiên trong đồ án này chỉ tìm hiểu về neo4j và xây dựngdữ liệu cũng như thực hiện truy vấn trên neo4j.- Bước 1 : Vào trang http://www.neo4j.org/ để download

file cài đặt của neo4j về. Download Neo4j Stable 1.9 (hiệnnay) và giải nén. Lưu ý có thể tải các bản khác nhưMileStone.. nhưng các câu lệnh sẽ khác một chút. Trong tàiliệu này cũng như trong phần demo ứng dụng phía sau tôi đềusử dụng bản Stable.- Bước 2 : Trong thư mục bin của phần giải nén, chạy file

Neo4j.bat rồi chạy đường link sau trên trình duyệt :http://localhost:7474 là đã vào đến giao diện của neo4j.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Tại đây chúng ta hoàn toàn có thể tạo các nút, các mối quanhệ, các thuộc tính và thực hiện các truy vấn.

Tạo các thành phần của đồ thị- Tạo nút :

Hình 2.15 Tạo nútClick vào tab Data browser sẽ hiện ra giao diện như trên.

Click vào icon để thêm 1 nút.- Tạo thuộc tính : Sau khi click để thêm nút thì sẽ hiện

ra giao diện sau :

Hình 2.16 Giao diện đã tạo nút

Sau đó ta click vào icon Add property để thêm thuộc tínhnhư sau :

Hình 2.17 Tạo property- Tạo mối quan hệ

Ta click vào icon để tạo mối quan hệ, và nó cógiao diện như sau :

Đồ án tốt nghiệp Chương 2 : CSDL đồ thị

Hình 2.18 Tạo relationship

Ta điền nút bắt đầu và nút kết thúc của mối quan hệtrong ô “From node” và ô “To node”. Trong ô Type là tên mốiquan hệ, nếu mối quan hệ đó đã có sẵn trước đó thì chỉ cầnchọn trong ô combobox “Type in use” ở dưới. Kết thúc taclick vào icon “Create” là hoàn thành.

- Xem đồ thị vừa tạo : click vào icon để xem đồ thịvừa tạo ra.Xin lưu ý đây là cách làm trực quan nhất và dễ dàng chonhiều đối tượng cùng thực hiện được. Ngoài ra tất cả cácviệc như tạo nút, tạo relationship…đều có chế độ Console(dòng lệnh). Để tìm hiểu kỹ hơn, chúng ta có thể truy cậpvào web site http://www.neo4j.org/ và đọc tài liệu Manualcủa Neo4j.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Chương 3: Ứng dụng mạng xã hội sức khỏe

3.1 Giới thiệu khái quát mạng xã hội sức khỏe

3.1.1 Giới thiệu mạng xã hội sức khỏeTa có thể thấy ngày nay mạng xã hội đã trở thành một

phần trong cuộc sống thực của nhiều người. Mạng xã hộikhông phải bây giờ mới có, cách đây khoảng 10 năm chúng đãxuất hiện như : Friendster (2002), MySpace (2003), Orkut(2004), Facebook (2004).

Vậy mạng xã hội là gì?Mạng xã hội là một tập các dịch vụ web kết nối các thành

viên cùng sở thích trên Internet lại với nhau với nhiều mụcđích, không phân biệt không gian và thời gian. Trên đó, họcó thể chia sẻ, trao đổi thông tin một cách dễ dàng và nắmbắt thông tin nhanh nhạy, tiện lợi. [Wikipedia]

Mạng xã hội sức khỏe (gọi tắt là mạng sức khỏe) cũngmang tính chất như một mạng xã hội bất kỳ, có chức năng chủyếu là kết bạn và chia sẻ thông tin. Mạng sức khỏe là ứngdụng chủ yếu cho phép người dùng kết bạn, tìm kiếm, chia sẻthông tin về sức khỏe để phòng bệnh và có sức khỏe tốt hơn.Mang tính chất của một mạng xã hội, mọi người trong mạng cóthể kết nối với nhau bởi các mối quan hệ như Friend,Family.. hay trong các nhóm khác nhau (do người dùng tự lậpra) để dễ dàng chia sẻ và theo dõi các vấn đề mình quantâm.. Nội dung của các thông tin về sức khỏe được chia sẻcó thể là các kinh nghiệm, các kết quả nghiên cứu (của bác

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

sĩ, các nhà nghiên cứu).. về các loại bệnh, triệu chứng hayxét nghiệm, các loại thuốc, phác đồ điều trị…

Điểm lưu ý của mạng sức khỏe là mỗi thông tin mà ngườidùng chia sẻ với người khác phải đảm bảo là đúng như thựctế, không tự bịa thêm hay thay đổi. Vì dù đơn thuốc hayphác đồ điều trị đúng hay sai, có chữa khỏi bệnh hay khôngthì cũng ảnh hưởng tới kết quả của việc điều trị. Việc kiểmchứng độ đúng đắn của các thông tin là rất khó (có thể nóilà không kiểm soát được), vì thế điểm lưu ý trên hoàn toànlà một lời khuyến cáo và nó phục vụ cho lợi ích của các đốitượng tham gia mạng sức khỏe này.. Việc chọn cơ sở dữ liệu đồ thị để xây dựng ứng dụng thayvì cơ sở dữ liệu quan hệ vì những lý do sau : dữ liệu củamạng xã hội là dữ liệu kết nối và mang nhiều quan hệ bắccầu. Các ví dụ về các tính chất của mạng xã hội như Friendsof a Friend đã được nói rõ trong chương 2 Cơ sở dữ liệu đồthị.

Ta có thể thấy sự phát triển nhanh chóng của mạng xãhội. Theo một bài báo viết, một năm trước Facebook có mộttỉ người dùng. Và chỉ sau một năm thì con số lên tới 1.15tỉ người dùng hàng tháng và hơn một nửa số đó hoạt độnghàng ngày (khoảng 699 triệu người dùng). Hãy thử tưởngtượng nếu ta sử dụng cơ sở dữ liệu quan hệ thì việc mở rộngquy mô khi có nhu cầu sẽ thế nào? Câu trả lời chắc chắn sẽlà khó khăn. Điều này dễ dàng thấy được vì kết cấu của csdlquan hệ rất chặt chẽ và không linh động. Có thể thấy sựphát triển của các mạng xã hội phải kèm theo sự thay đổitrong chính hệ thống đó, nó phải thay đổi theo xu hướng của

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

người dùng sao cho thân thiện nhất, gần gũi nhất và dễ sửdụng nhất. Vì vậy, nếu dùng csdl quan hệ và thay đổi nhiềunhư thế này thì cái giá phải trả sẽ rất đắt. Ngược lại,csdl đồ thị chỉ gồm các nút, các thuộc tính và mối quan hệlại mang lại khả năng mở rộng rất cao, khi thêm nút (hầuhết là thực thể) hay thêm các thuộc tính, mối quan hệ, nókhông đòi hỏi một điều kiện gì, không ràng buộc phải cóquan hệ này quan hệ khác. Việc mở rộng hay thu hẹp quy môđều rất linh động.

3.1.2 Các chức năng của mạng xã hội sức khỏeHệ thống gồm các chức năng phục vụ cho 2 nhóm đối

tượng : khách (guest) và người dùng (user). - Khách (guest) : là những người không cần đăng ký vào

mạng sức khỏe và có thể thực hiện một số chức năng nhấtđịnh (nhưng không đầy đủ) mang tính chất tham quan, xem xétkhía cạnh nào đó của mạng xã hội. Khách và các hoạt độngcủa khách cũng không được quản lý bởi hệ thống. Khi đăng kýmột tài khoản trong mạng thì khách trở thành người dùng.- Người dùng (user) : là người đã đăng ký một tài khoản

trong mạng sức khỏe và đăng nhập để thực hiện đầy đủ cácchức năng của hệ thống. Các hoạt động trong mạng sức khỏecủa người dùng được hệ thống ghi lại và quản lý.

3.1.2.1Quản lý định danh (quản lý người dùng) Là chức năng cho phép người dùng thực hiện các công việc

như đăng ký, đăng nhập, đăng xuất, tạo nhóm, hoàn thiện hồsơ cá nhân cơ bản.

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

- Đăng ký : để trở thành người dùng của mạng xã hội,khách phải tiến hành đăng ký một tài khoản. Khi đăng ký,bắt buộc phải điền một số thông tin cơ bản bao gồm : Họ vàtên, ngày sinh, giới tính, địa chỉ email, tên tài khoản,mật khẩu.- Đăng nhập : khi đã có một tài khoản của mạng, người dùng

muốn tham gia vào mạng cần đăng nhập. Để thực hiện chứcnăng này, người dùng điền tên tài khoản và mật khẩu củamình và đăng nhập. - Đăng xuất: khi người dùng tạm thời muốn thoát ra khỏi

mạng xã hội, họ có thể đăng xuất để không thực hiện cácchức năng của mạng nữa. Khi người dùng đăng xuất, các ngườidùng khác vẫn có thể thực hiện các chức năng có liên quannhư gửi tin nhắn riêng .. và sẽ có thông báo khi người đóđăng nhập trở lại.- Quản lý hồ sơ cá nhân: khi đăng ký, người dùng đã thực

hiện một phần việc quản lý hồ sơ cá nhân rồi. Tuy nhiên,quản lý ở đây bao gồm cả việc chỉnh sửa thông tin cá nhân.Và thông tin cá nhân có thêm nơi làm việc hiện tại, vị trítrong công việc, địa chỉ (đất nước, thành phố..), mối quantâm.- Tạo nhóm : người dùng có thể tạo một nhóm (group) cụ thể

về nội dung nào đó để những ai quan tâm thì tham gia vàchia sẻ thông tin trong nhóm.

3.1.2.2Quản lý liên lạc (Contact Management) Quản lý việc kết nối người dùng với nhau. Người dùng có

thể tạo/gửi yêu cầu , nhận yêu cầu (có thể đồng ý hoặc từ

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

chối) đối với các thành viên khác. Người dùng có thể quyếtđịnh các quan hệ gia đình hay bạn bè bằng việc gửi yêu cầukết bạn hay xác nhận là thành viên trong gia đình. Có thểtheo dõi các thành viên khác thông qua việc đọc trang cánhân.

Quản lý mối quan hệ bạn bè- Gửi yêu cầu kết bạn (FRIEND) : người dùng có thể gửi yêu

cầu kết bạn tới bất cứ người nào trong mạng.- Chấp nhận/từ chối yêu cầu kết bạn.- Hủy bỏ mối quan hệ bạn bè : người dùng có thể hủy bỏ mối

quan hệ bạn bè với một người hiện tại trong danh sách làbạn bè của mình.

Quản lý hoạt động trong Group - Gửi lời mời vào Group : người dùng có thể mời người dùng

khác tham gia vào một nhóm cụ thể nào đó để cùng nhau thảoluận về vấn đề mà nhóm quan tâm.- Chấp nhận/từ chối lời mời- Rời nhóm khi cảm thấy không hứng thú nữa.Quản lý mối quan hệ gia đìnhQuản lý ở đây có thể là gửi yêu cầu thiết lập mối quan

hệ hoặc chỉnh sửa hoặc xóa mối quan hệ đó.- Gửi yêu cầu thiết lập mối quan hệ gia đình (FAMILY) :

người dùng có thể thiết lập mối quan hệ gia đình với ngườidùng khác và kèm theo đó là vị trí thiết lập. Các vị trítrong mối quan hệ này bao gồm : ông, bà, bố, mẹ, anh, chị,em, vợ, chồng, con, cháu, chú, bác, cô, dì, thím.

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

- Chấp nhận/từ chối yêu cầu- Chỉnh sửa mối quan hệ(vị trí)- Xóa mối quan hệ.- Gửi tin nhắn riêng (Private message) : người dùng có thể

gửi tin nhắn riêng tới bất kỳ người dùng nào khác.- Nhận tin nhắn riêng: người dùng có thể nhận các tin nhắn

riêng được gửi đến người khác.- Nhận thông báo: khi có người gửi tin nhắn riêng đến cho

người dùng hoặc bình luận tại post mà người dùng đã posttrước đó, hệ thống sẽ thông báo để người dùng biết.- Nhận thông tin từ bạn bè (get news feed): chức năng này

cho phép người dùng cập nhật các thông tin mới nhất từ bạnbè của mình hoặc các thông tin của các nhóm mà mình thamgia theo thời gian. - Xem trang thông tin cá nhân của mình và người dùng khác:

người dùng có thể xem thông tin cá nhân của mình hoặc ngườikhác trên trang của mình. Trên đó sẽ có các post và commentđược hiển thị theo thứ tự thời gian. Các post trên trang cánhân chỉ do đúng người dùng đó post. Khi muốn xem trang cánhân của khác, người dùng có thể yêu cầu hệ thống truy vấnvà hiển thị trang đó lên trang cá nhân của mình.

3.1.2.3Chia sẻ thông tin( Share information)Người dùng có thể quản lý việc chia sẻ thông tin của

mình thông qua các thao tác chính : tạo, sửa và xóa chiasẻ. Các chia sẻ của người dùng gồm các dạng : comment,post/status. Ngoài ra, đánh giá một thông tin được chia sẻcũng là một cách chia sẻ là thông tin đó có ích hay không.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

- Cập nhật trạng thái (Post status) : người dùng cập nhậttrạng thái của mình qua các post ở trang cá nhân của mình.Người dùng có thể cập nhật trạng thái của mình với tùy đốitượng mà họ mong muốn. Có thể là với tất cả mọi người, cóthể là chỉ với bạn bè hoặc một số người nhất định.- Xóa trạng thái: người dùng có thể xóa trạng thái mình đã

cập nhật trước đó. - Bình luận (Comment): người dùng có thể bình luận vào các

post của bạn bè hoặc các post trong nhóm mà người đó thamgia vào.- Xóa bình luận: người dùng có thể xóa bình luận của mình.- Chèn liên kết (link): người dùng có thể chèn thêm liên

kết để chia sẻ vào post hoặc comment.- Đánh giá: người dùng có thể đánh giá một post, một

comment hay một group để giúp người khác xác định thông tinđó có ích và đáng tin hay không? Thang điểm đánh giá là 5.

3.1.2.4 Tìm kiếm (Search) Cho phép người dùng tìm kiếm các thành viên khác cũng

như các thông tin về sức khỏe, chế độ điều trị, các loạibệnh.. Và nó được chia thành 2 loại tìm kiếm : tìm kiếmtrực tiếp và tìm kiếm dựa theo mối quan hệ. Tìm kiếm trựctiếp là tìm trực tiếp theo từ khóa cho trước và không cầnqua mối quan hệ gián tiếp nào, vd như : tên thành viên, tênbệnh… (hầu hết tìm theo định danh). Tìm kiếm dựa theo mốiquan hệ : cho phép người dùng tự xác định câu truy vấn(nhưng vẫn phải theo form được gợi ý bởi hệ thống) tìm theo

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

các mối quan hệ của thực thể; vd : tìm bạn của bạn củaNguyễn A hay tìm các user tham gia vào nhóm quan tâm đếnbệnh X.. Phần xác định các câu truy vấn theo form của hệthống, người dùng có thể xem thêm hướng dẫn. Ngoài ra,người dùng có thể tinh chỉnh các truy vấn bằng việc thayđổi các giá trị của các biến trong đó; vd như câu truyvấn : các user tham gia vào nhóm quan tâm đến bệnh X, cóthể thay đổi “X” bằng một loại bệnh khác.

Tìm người dùng - Tìm người dùng theo định danh (một phần hoặc toàn phần)- Tìm người dùng theo mối quan hệ : bạn của bạn, chị gái

của bạn.. : tìm người qua mối quan hệ bạn bè hoặc gia đìnhhoặc đồng nghiệp. Có thể như là tìm bạn của A (A là bạn củangười tìm kiếm).- Tìm các người dùng cùng tham gia vào một group.- Tìm người dùng theo giá trị của thuộc tính của hồ sơ cá

nhân. Ví dụ : tìm người dùng có công việc là giáo viên haytìm người dùng sống ở Hà Nội…- Tìm bạn chung .Tìm nhóm

- Tìm nhóm theo định danh (một phần hoặc toàn phần)- Tìm nhóm mà bạn bè tham gia vào.- Tìm nhóm qua đánh giá của người dùng : người dùng có thể

tìm nhóm qua chỉ số đánh giá của những người khác.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

3.2 Phân tích thiết kế

3.2.1Biểu đồ Use case

3.2.1.1Use case tổng quát

Hình 3.1 Biểu đồ use case

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

3.2.1.2Use case Identity Management (quản lý định danh)

Hình 3.2 Use case quản lý định danh

3.2.1.3Usecase Contact Management (quản lý liên lạc)

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Hình 3.3 Use case quản lý liên lạc

3.2.1.4Use case Share information (Chia sẻ thông tin)

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

Hình 3.4 Use case chia sẻ thông tin

3.2.1.5Use case Search (Tìm kiếm)

Hình 3.5 Use case tìm kiếm

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

3.2.2Biểu đồ lớp

Hình 3.6 Biểu đồ lớp

3.2.3Biểu đồ hoạt động

3.2.3.1Chức năng quản lý định danh

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

Hình 3.7 Biểu đồ hoạt động : quản lý định danh

3.2.3.2Chức năng quản lý liên lạc

Hình 3.8 Biểu đồ hoạt động : quản lý liên lạc (1)

Hình 3.9 Biểu đồ hoạt động : quản lý liên lạc (2)

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Hình 3.10 Biểu đồ hoạt động : quản lý liên lạc (3)

3.2.3.3Chức năng chia sẻ thông tin

Hình 3.11 Biểu đồ hoạt động: chia sẻ thông tin (1)

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

Hình 3.12 Biểu đồ hoạt động: chia sẻ thông tin (2)

Hình 3.13 Biểu đồ hoạt động : chia sẻ thông tin (3)

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Hình 3.14 Biểu đồ hoạt động : chia sẻ thông tin (4)

3.2.3.4Chức năng tìm kiếm

Hình 3.15 Biểu đồ hoạt động : tìm kiếm

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

3.2.4 Biểu đồ tuần tự

Hình 3.16 Biểu đồ tuần tự

3.2.5 Các chức năng bên client1. ShowFormCheckLogin(): void2. ShowPersonalPage(PersonalPage page): void

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

3. ShowFormRegister() : void4. ShowFormCreateGroup() : void5. ShowGroup() : void6. ShowrProfile() : void7. ShowFormAddFriend() : void8. ShowFormRemoveFriend() : void9. ShowRequestList() : void10. ShowAcceptedReq() : void11. ShowFormDeclineReq() : void12. ShowFamily () : void13. ShowFriendList () : void14. ShowGroupMembers() : void15. ShowNewsFeed() : void16. ShowFormPostStatus() : void17. ShowFormComment () : void18. ShowRating () : void19. ShowEmbeddedLink () : void20. ShowNotification() : void21. ShowFormToSendPM() : void 22. ShowInbox() : void23. ShowFormSearchByID_G() : void24. Show FormSearchByID_U() : void25. ShowFormSearchByRls():void26. ShowFormSearchByProfile():void

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

27. ShowFormSearchGroupsOfUser():void28. ShowFormSearchMutualFriends() : void

3.2.6 Các chức năng bên server1. CheckLogin(String username, String password) : int2. GetPersonalPage(User userId) : PersonalPage3. Register(User userId, Profile profile) : int4. CreateGroup(User userCreate, String groupname) : int5. GetGroup(int groupId) : Group6. UpdateProfile(User userId, Profile : profile) : int7. AddFriend(User sender, User recipient) : int8. RemoveFriend(User sender, User recipient) : int9. GetRequestList() : String[]10. AcceptReq(User sender, User recipient , String

req) : int11. DeclineReq(User sender, User recipient , String

req) : int12. UpdateFamily(User setup, Family member) : int13. GetFriendList(User userId) : User[]14. GetGroupMembers(Int GroupID) : User[]15. GetNewsFeed(User userId) : void16. PostStatus(User poster, Status status, User[]

listShare, Time time) : int17. Comment(User user, Status statusId, Comment

comment, Time time) : int

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

18. Rating(User user, Status statusId, CommentcommentId, int : rating) : int

19. EmbeddedLink(User userId, Status statusId, CommentcommentId, Link link) : int

20. GetNotification(User userId, Notification :noti) : void

21. SendPM(User sender, User recipient, PM : pm) : int22. GetInbox(User user) : PM[]23. SearchByID(Int id) : Group24. SearchByID(Int id) : User25. SearchByRls(String rls) : String26. SearchInProfile(String key) : User27. SearchGroupsOfUser(User userId) : Group[]28. SearchMutualFriends(User userId) : User[]

3.2.7 Máy hữu hạn trạng thái- Phía server

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

Hình 3.17 Máy hữu hạn trạng thái phía server

Ghi chú : các action từ 1->28 tương ứng với các phương thức ở mục 3.2.6.

- Phía client

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Hình 3.18 Máy hữu hạn trạng thái phía client Ghi chú : các action từ 1->28 tương ứng với các phương thức ở mục 3.2.5

3.2.8 Thiết kế giao thứcĐể Client và Server giao tiếp được với nhau thì giữa

chúng phải tồn tại giao thức mà cả hai bên đều hiểu được.Trong ứng dụng này ta sẽ thiết kế các giao thức RESTful đểgiao tiếp giữa client và server. Host được sử dụng là

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

localhost, database được xử lý với hệ quản trị csdl đồ thịneo4j.Một số giao thức :*Connect Start : send requestRequest

GET http://localhost:port/path/index.jsp HTTP/1.1Host: localhost:portAccept: application/index.jsp+xml

Response

HTTP/1.1 200 OKDate: dateCache-Control : publicContent-Type: application/index.jsp+xml

<index><link href=

“http://localhost:port/path/index.jsp/request-for-reg”Type= “application/index.jsp+xml” /><link href=

“http://localhost:port/path/index.jsp/request-for-check-login”

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Type= “application/index.jsp+xml” />…

</index>

*Chú thích : - localhost:port : ứng dụng sử dụng localhost và port tùythuộc vào mỗi người viết.- path : đường dẫn dẫn tới file index.jsp- Date: date : phụ thuộc vào mỗi lần response- Request yêu cầu gửi trang index, trong trang index trảlại từ server có nhiều link dẫn tới các dịch vụ khác màngười dùng được cung cấp như register, login..Vd : http://localhost:port/path/index.jsp/request-for-reg<< đường dẫn này sẽ hiện ra các form để thực hiện yêu cầuregister.*Register – đăng ký : request-for-reg -> submit -> return Request for RegisterRequestGET /request-for-reg HTTP/ 1.1Host: localhost:portAccept: application/index.jsp+xml

Response

HTTP/1.1 200 OK

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

Date: dateCache-Control : publicContent-Type: application/index.jsp+xml

<model><instance><request-for-reg></request-for-reg></instance><submit Resource=

“http://localhost:port/path/index.jsp/register”Method= “post”Mediatype= “application/index.jsp+xml”

/></model>

Submit request for regRequestPOST /register HTTP/ 1.1Host: localhost:portContent-Type: application/index.jsp+xml

< request-for-reg><parameters>

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

<firstname>value</firstname><lastname>value</lastname><username>value</username><password>value</password><gender>value</gender><email>value</email><country>value</country><city>value</city><job>value</job><company>value</company></parameters>

</request-for-reg>Return registerResponse

HTTP/1.1 201 CreateDate: dateCache-Control : publicContent-Type: application/index.jsp+xmlLocation: http://localhost:port/path/register/id

<register><parameters>…

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

</parameters><linkhref= “http://localhost:port/path/register/id”type= “application/index.jsp+xml”/><link href=

“http://localhost:port/path/index.jsp/request-for-check-login”

Type= “application/index.jsp+xml” />

</register>

*Ghi chú : id là số liệu mà server thực hiện tạo trong csdl

*Login- đăng nhập :request-for-login -> submit -> return

*Lưu ý request-for-login (yêu cầu hiện form đăng nhập) cóthể được gọi từ nhiều nơi. Có thể từ response trả về saukhi đăng ký (7.4) hoặc từ giao diện sau khi connect, miễnlà có thẻ link : <link href=“http://localhost:port/path/index.jsp/request-for-check-login”

Type= “application/index.jsp+xml” />Request for check loginRequestGET /request-for-check-login HTTP/ 1.1

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Host: localhost:portAccept: application/index.jsp+xmlResponseHTTP/1.1 200 OKDate: dateCache-Control : publicContent-Type: application/index.jsp+xml

<model><instance><request-for-check-login></request-for-check-login></instance><submit Resource=

“http://localhost:port/path/index.jsp/checklogin”Method= “post”Mediatype= “application/index.jsp+xml”

/></model>Submit check login

RequestPOST /checklogin HTTP/ 1.1Host: localhost:portContent-Type: application/index.jsp+xml

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

< request-for-check-login><parameters><username>value</username><password>value</password>

</parameters></request-for-check-login>Return check login if wrongResponseHTTP/1.1 401Date: dateCache-Control : publicContent-Type: application/index.jsp+xml

<model><instance><request-for-check-login></request-for-check-login></instance><submit Resource=

“http://localhost:port/path/index.jsp/checklogin”Method= “post”Mediatype= “application/index.jsp+xml”

/>

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

</model>Response personalpage if right- ResponseHTTP/1.1 200 OKDate: dateCache-Control : publicContent-Type: application/user.jsp+xml

<user>//html code

<parameters><username>user</username><form/><link/>….</parameters>

</user>

3.3 Thiết kế CSDL

Thông thường với CSDL quan hệ thì gần như với mỗi đốitượng ở biểu đồ lớp thì sẽ tương ứng với mỗi bảng ở CSDL,ngoài ra sẽ có thêm các bảng thể hiện các quan hệ giữa mộtsố bảng nhất định. Nhưng với CSDL đồ thị thì không phải đốitượng nào ở biểu đồ lớp cũng trở thành node được.

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

Đầu tiên ta xác định một số node cơ bản dựa vào tínhchất của mạng xã hội sức khỏe : chủ yếu tập trung vào ngườidung, thông tin, các mối quan hệ giữa họ và những gì họchia sẻ. Vì vậy đầu tiên sẽ các có node User, Profile,Status, Comment, Link, Group.

Về mối quan hệ giữa các node User bao gồm : Friend vàFamily. Ta có thể tạo 2 loại relationship FRIEND và FAMILYvới các property riêng như : FRIEND thì có các property id,mutualFriend, FAMILY thì có id, position. Trong thực tế cóthể tạo một relationship chung là RELATIONSHIP để gộp chungFRIEND và FAMILY cho đồ thị đỡ rắc rối, tuy nhiên tính xamột chút thì các truy vấn về relationship FRIEND sẽ được sửdụng rất nhiều trong khi FAMILY thì hiếm khi được sử dụngnên để tránh truy vấn phức tạp thì ta vẫn tách riêng 2 quanhệ này.

Hình 3.18 Thiết kế CSDL – mối quan hệ FRIEND, FAMILY

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Trong mô hình hóa profile, ta có thể áp dụng phương phápmô hình hóa sự kiện với thông tin việc làm như trong chương2 đã giới thiệu. Tức là có thể mô hình hóa theo kiểu : userA làm việc ở công ty (company) B với vị trí (job) C và núttrung gian biểu hiện thời gian bắt đầu làm việc của user A.Tuy nhiên với mạng xã hội sức khỏe này việc mô hình hóa chitiết về profile như trên chưa cần thiết lắm bởi việc truyvấn về công việc cũng như nơi làm việc của mỗi user có lẽkhông nhiều. Tuy nhiên có thể cân nhắc để sau này pháttriển thêm. Như vậy trong ứng dụng này, giữa node User vànode Profile sẽ chỉ có một relationship là PROFILE như hìnhdưới đây :

Hình 3.19 Thiết kế CDSL – mối quan hệ PROFILE

Giữa User và Group có thể tồn tại các quan hệ như : usertạo nên group, user tham gia (join) vào group, user mời (invite) user khác tham gia (join) vào group, user đánh giágroup, tạo status, bình luận (comment), chèn liên kết

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

(link), đánh giá post hay comment nào đó và các mối quan hệ này được mô hình hóa như hình dưới.

Hình 3.20 Thiết kế CSDL – mối quan hệ User-Group

Giữa User và Group còn các mối quan hệ như post status hay comment.. chưa được thể hiện ở phía trên vì các tương tác này không chỉ xuất hiện giữa các user và các group mà còn giữa các user với nhau. Ta có thể mô hình hóa theo chuỗithời gian như phương pháp ở đã giới thiệu ở chương 2. Tuy nhiên với bài toán cụ thể là mạng xã hội sức khỏe như trên thì khi thực hiện các chia sẻ đều xác định cả người được chia sẻ cùng nên nó sẽ không chỉ đơn giản là chuỗi các node Status hay Comment. Chúng ta sẽ thêm mối quan hệ SHARE_W (share with) tới người/nhóm người được chia sẻ cùng.

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Hình 3.21 Thiết kế CSDL – chia sẻ thông tin

Như vậy với những mô hình hóa ở trên, chúng ta gần như đã thực hiện đầy đủ các chức năng của mạng xã hội sức khỏe : quản lý định danh, quản lý liên lạc, chia sẻ thông tin và tìm kiếm. Trong phần quản lý liên lạc thì còn vấn đề privatemessage và notification là chưa được nói tới thì dưới đây sẽlà mô hình hóa của PM và Notification.

Đồ án tốt nghiệp Đại học Chương 3Ứng dụng mạng xã hội sức khỏe

Hình 3.22 Thiết kế CSDL – PM & Notification

CSDL cuối cùng được thiết kế như sau :

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Hình 3.23 CSDL

Đồ án tốt nghiệp Đại họcChương 4 Cài đặt

Chương 4 Cài đặt4.1 Xây dựng csdlTa tiến hành trên neo4j sử dụng các câu lệnh cypher vàneo4jshell để tạo các node, relationship và index các node.

Hình 4.1 CSDL

4.2 Giao diện

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

Hình 4.2 Giao diện

Đồ án tốt nghiệp Đại học Danh mục tài liệu tham khảo

DANH MỤC TÀI LIỆU THAM KHẢO

1. Ian Robinson, Jim Webber, and Emil Eifrem, 2013, “GraphDatabases”, O’Reilly Media, Inc., 1005 GravensteinHighway North, Sebastopol, CA 95472.

2. Ian Robinson, 10/2010, “RESTful Application Protocols”.3. Alberz Akrawi, 2010, “Social Network System”,SE-100

44Stockholm, Sweden.4. Marcos Boyington, Po Chen, Grace Kum, Van Le-Pham, Eric

Morales, JakeWarmerdam, Cheuk (Anna) Yu, Jingren Zhou, 2004, “DesignSpecifications for Social Networking System”.

5. Prof. Matthias Grossglauser, “FiniteStateMachines”6. Nguyễn Huy Khánh, 2012, “RESTful Web Service”7. The Neo4j Team neo4j.org, 2013, “The Neo4j Manual”8. Honigman, 2010, “Friending, Tweeting, Blogging &

LinkingIn:Legal Considerations for Health CareProviders”

9. Gunther Eysenbach, MD, MPH, 2008, “Medicine 2.0Proceedings”, Toronto, Canada.

10. Prashant Mishra and Gaur Sunder, “Mediacal SocialNetwork”

11. Alexander Richter, Michael Koch, “Functions ofSocial Networking Services”

12. http://www.patientslikeme.com

Đồ án tốt nghiệp Chương 1 Giới thiệu chung

13. http://www.facebook.com14. http://www.slideshare.net15. https://sites.google.com/site/quyetdo289/rest-

services16. http://www.neo4j.org17. http://www.ibm.com/developerworks/vn/library/ws-

restful/