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

Báo cáo Đồ Án quản lý thông tin hệ quản trị cơ sở dữ liệu Đồ thị neo4j

47 2 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 47
Dung lượng 2,28 MB

Nội dung

1 Tổng quan1.1 Giới thiệu Trong đồ án này, nhóm em tập trung vào việc tìm hiểu về Neo4j - cơ sở dữ liệu đồ thị mạnh mẽ nhất hiệntại [1] – và cách Neo4j giải quyết các vấn đề liên quan đế

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KHOA HỌC VÀ KỸ THUẬT THÔNG TIN

BÁO CÁO ĐỒ ÁN QUẢN LÝ THÔNG TIN

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J

Giảng viên hướng dẫn: ThS Tạ Thu Thủy

Sinh viên thực hiện:

22520434 – Huỳnh Minh Hiếu

22520451 – Vũ Minh Hiếu

22520016 – Lê Tùng Bảo Ân

22520205 – Cao Thành Đạt

Trang 2

Mục lục

1.1 Giới thiệu   31.2 Đồ thị trong lĩnh vực quản lý thông tin   31.3 Ưu và nhược điểm của cơ sở dữ liệu đồ thị   31.3.1 Tính hiệu quả khi làm việc với dữ liệu có mối quan hệ phức tạp   31.3.2 Khả năng mở rộng   41.3.3 Thách thức trong xử lý giao dịch hoặc truy vấn so với các hệ quản trị quan hệtruyền thống   41.4 Đặt vấn đề và bài toán nghiên cứu   41.4.1 Vấn đề cần giải quyết trong study case  41.4.2 Bối cảnh và lý do chọn Neo4j để giải quyết bài toán này   41.5 Mục tiêu của đồ án   5

2.1 Tổng quan về Neo4j  62.1.1 Lịch sử phát triển của Neo4j và sự phổ biến của nó trong lĩnh vực cơ sở dữ liệu

đồ thị   62.1.2 Các ứng dụng phổ biến của Neo4j trong công nghiệp   62.1.3 Quy trình hoạt động của Neo4j   62.2 Đặc điểm chính của Neo4j   62.2.1 Ngôn ngữ truy vấn Cypher: cú pháp và đặc trưng   62.2.2 Chức năng và yếu tố quan trọng   72.3 Lợi ích  7

3.1 Quy trình triển khai hệ thống   83.1.1 Thiết lập môi trường làm việc   83.1.2 Các bước cài đặt Neo4j trên các môi trường Local, Cloud  83.2 Quy trình thực hiện bài toán   93.2.1 Phân tích yêu cầu và xác định use case  93.2.2 Thiết kế mô hình dữ liệu đồ thị ban đầu   103.2.3 Tạo dữ liệu mẫu và kiểm thử mô hình ban đầu   103.2.4 Tối ưu hóa và cải tiến mô hình   113.2.5 Lặp lại và tinh chỉnh mô hình   113.2.6 Triển khai và giám sát   12

4.1 Giới thiệu về Cơ sở dữ liệu Movies  134.2 Mô hình dữ liệu   134.2.1 Node   134.2.2 Relationship   134.3 Dữ liệu bổ sung của nhóm   134.4 Demo và kết quả   13

Trang 3

5 Use cases   27

5.1 Use case: Phát hiện và phân tích gian lận   27

5.2 Use case: Công cụ và hệ thống đề xuất sản phẩm   28

5.3 Use case: Quản lý dữ liệu tổng thể   29

5.4 Use case: Giám sát cơ sở hạ tầng mạng và cơ sở dữ liệu cho hoạt động CNTT   30

5.5 Use case: Chuỗi cung ứng   31

5.6 Use case: Vượt qua những thách thức về tuân thủ CCPA   32

6 So sánh và đánh giá   33 6.1 Neo4j so với Dgraph   33

6.1.1 Thông tin cơ bản   33

6.1.2 Geospatial Queries   34

6.1.3 Durability  35

6.1.4 Access Control   35

6.1.5 Concurrency   36

6.1.6 Sharding   36

6.1.7 Bulk Data Loading   37

6.1.8 Kết luận  37

6.2 GraphQL so với RDBMS  37

6.2.1 Vận hành   37

6.2.2 Khả năng mở rộng   38

6.2.3 Hiệu suất   38

6.2.4 Độ linh hoạt dữ liệu   38

6.2.5 Dễ sử dụng   38

6.2.6 Khi nào sử dụng: cơ sở dữ liệu đồ thị so với cơ sở dữ liệu quan hệ   39

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

6.2.8 Cơ sở dữ liệu quan hệ   39

6.2.9 Kết luận  39

7 Tổng kết   41 7.1 Tóm tắt điểm mạnh   41

7.2 Nhược điểm/Khó khăn   41

7.3 Hướng phát triển trong tương lai   41

7.4 Kết luận   42

Trang 4

1 Tổng quan

1.1 Giới thiệu

Trong đồ án này, nhóm em tập trung vào việc tìm hiểu về Neo4j - cơ sở dữ liệu đồ thị mạnh mẽ nhất hiệntại [1] – và cách Neo4j giải quyết các vấn đề liên quan đến quản lý và phân tích dữ liệu phức tạp trongnhiều lĩnh vực khác nhau Đồng thời, đồ án cũng cung cấp cái nhìn tổng quan về vai trò ngày càng quantrọng của cơ sở dữ liệu đồ thị trong bối cảnh dữ liệu lớn và so sánh giữa mô hình cơ sở dữ liệu đồ thị Neo4j với DGraph, nêu rõ ưu điểm và hạn chế của từng loại Ngoài ra, thực hành với ngôn ngữ Cypher – ngôn ngữ truy vấn của cơ sở dữ liệu đồ thị – cũng là một phần quan trọng được trình bày trong đồ án. Neo4j cung cấp khả năng xử lý hiệu quả các mối quan hệ phức tạp, mở rộng quy mô linh hoạt, duy trì hiệusuất truy vấn ổn định với độ phức tạp không đổi, và có khả năng tối ưu hóa hiệu suất nhờ vào tài nguyên

 bộ nhớ và các kỹ thuật phân rã truy vấn khi dữ liệu lớn [2] Điều này làm cho Neo4j trở thành lựa chọn lýtưởng để phân tích mạng lưới và tối ưu hóa các hệ thống yêu cầu xử lý dữ liệu phức tạp trong thời gianthực

1.2 Đồ thị trong lĩnh vực quản lý thông tin

Mô hình dữ liệu đồ thị được thiết kế để quản lý và biểu diễn các mối quan hệ phức tạp giữa các thực thể.Khác với mô hình quan hệ truyền thống, mô hình đồ thị tập trung vào việc thể hiện dữ liệu dưới dạng cácnút (nodes) và các cạnh (edges) liên kết giữa chúng, từ đó dễ dàng mô hình hóa các mối liên kết trong hệthống thực tế Đây là một cách tiếp cận tự nhiên và trực quan cho nhiều bài toán phân tích dữ liệu, giúpgiải quyết vấn đề hiệu quả hơn khi các mối quan hệ đóng vai trò quan trọng [ 3]

Trong bối cảnh dữ liệu lớn, việc xử lý và phân tích các mối quan hệ phức tạp là một thách thức lớn Môhình đồ thị cho phép lưu trữ và truy vấn các mối quan hệ một cách nhanh chóng, giúp các hệ thống có khảnăng xử lý dữ liệu một cách trực quan hơn và nhanh hơn so với mô hình quan hệ  [4] Điều này đặc biệtquan trọng trong các lĩnh vực như mạng xã hội, đề xuất sản phẩm, hoặc phát hiện gian lận, nơi mối quan

hệ giữa các đối tượng là yếu tố cốt lõi để đưa ra phân tích

Trong mô hình dữ liệu đồ thị, có ba thành phần chính [5]:

•   Node: Đại diện cho một thực thể hoặc một đối tượng trong hệ thống, ví dụ như một người dùng,một sản phẩm, hay một sự kiện

•   Edge: Đại diện cho mối quan hệ giữa các đỉnh Cạnh có hướng hoặc không có hướng, tùy thuộcvào bản chất của mối quan hệ

•   Properties: Cả đỉnh và cạnh đều có thể có các thuộc tính liên quan, giúp mô tả chi tiết hơn về bảnchất của thực thể hoặc mối quan hệ đó

Các mối liên kết giữa các đỉnh là cốt lõi của mô hình dữ liệu đồ thị Mỗi cạnh mô tả một mối quan hệ cụthể giữa các thực thể, có thể là quan hệ một chiều hoặc hai chiều Khả năng mô hình hóa các mối liên kếtnày theo nhiều chiều giúp các hệ thống sử dụng đồ thị trở nên mạnh mẽ trong việc phân tích các mạnglưới phức tạp [5]

1.3 Ưu và nhược điểm của cơ sở dữ liệu đồ thị

1.3.1 Tính hiệu quả khi làm việc với dữ liệu có mối quan hệ phức tạp

Cơ sở dữ liệu đồ thị được tối ưu hóa để xử lý các mối quan hệ phức tạp và truy vấn liên kết trực tiếp màkhông cần thực hiện các phép nối (joins) như trong cơ sở dữ liệu quan hệ truyền thống Điều này đặc biệthữu ích trong các bài toán mạng xã hội hoặc truy vấn cây phả hệ Tuy nhiên, các hệ cơ sở dữ liệu quan hệ

Trang 5

hiện đại thường vượt trội hơn trong các truy vấn phức tạp hoặc yêu cầu tính toán tổng hợp nhờ khả năngtối ưu hóa chỉ mục và thuật toán xử lý hiệu quả [ 6] Vì vậy, việc lựa chọn cơ sở dữ liệu cần dựa trên đặcđiểm dữ liệu và mục tiêu cụ thể của ứng dụng.

1.3.2 Khả năng mở rộng

Cơ sở dữ liệu đồ thị có khả năng mở rộng tốt, đặc biệt khi xử lý khối lượng lớn dữ liệu và nhiều mối quan

hệ Khả năng mở rộng này giúp hệ thống xử lý được dữ liệu ngày càng lớn mà không ảnh hưởng đến hiệusuất [7]

1.3.3 Thách thức trong xử lý giao dịch hoặc truy vấn so với các hệ quản trị quan hệ truyền thốngMột số thách thức khi sử dụng cơ sở dữ liệu đồ thị bao gồm:

• Hiệu suất với giao dịch lớn: Khi cần xử lý nhiều giao dịch phức tạp, cơ sở dữ liệu đồ thị có thể gặpkhó khăn trong việc duy trì tính nhất quán  [8]

• Khả năng hỗ trợ các phép tính toán đơn giản: Với các bài toán chỉ yêu cầu phép tính đơn giản và ítmối quan hệ, hệ quản trị quan hệ truyền thống vẫn có thể hiệu quả hơn [ 3]

1.4 Đặt vấn đề và bài toán nghiên cứu

1.4.1 Vấn đề cần giải quyết trong study case

Các bài toán mà nhóm tìm hiểu trong đồ án này liên quan đến việc quản lý và phân tích dữ liệu phức tạptrong nhiều lĩnh vực khác nhau, đặc biệt là khi có nhiều mối quan hệ phức tạp giữa các thực thể Chúngyêu cầu một hệ thống có khả năng xử lý dữ liệu lớn và thực hiện các truy vấn phức tạp về các mối quan

hệ này một cách nhanh chóng và hiệu quả

1.4.2 Bối cảnh và lý do chọn Neo4j để giải quyết bài toán này

Trong bối cảnh dữ liệu ngày càng phát triển và phức tạp, việc quản lý và phân tích các mối quan hệ giữacác thực thể trở thành một thách thức lớn đối với các hệ thống cơ sở dữ liệu truyền thống, đặc biệt là trongcác ứng dụng yêu cầu xử lý mối quan hệ phức tạp như mạng xã hội, phát hiện gian lận, hoặc các hệ thống

đề xuất Các cơ sở dữ liệu quan hệ truyền thống, mặc dù mạnh mẽ trong các phép tính tổng hợp và xử lý

dữ liệu có cấu trúc, lại gặp khó khăn khi phải quản lý các mối quan hệ phức tạp hoặc khi các truy vấn đòihỏi tính linh hoạt và tốc độ xử lý nhanh

Trong khi đó, cơ sở dữ liệu đồ thị, đặc biệt là Neo4j, đã nổi lên như một giải pháp ưu việt trong việc giảiquyết các vấn đề này Neo4j sử dụng mô hình đồ thị, nơi dữ liệu được biểu diễn dưới dạng các đỉnh vàcạnh, giúp dễ dàng mô hình hóa các mối quan hệ phức tạp giữa các thực thể Đặc biệt, Neo4j hỗ trợ khảnăng xử lý các mối quan hệ nhiều chiều, cho phép thực hiện các truy vấn về các mối quan hệ phức tạpmột cách nhanh chóng mà không cần thực hiện các phép nối phức tạp như trong các hệ quản trị cơ sở dữliệu quan hệ Điều này giúp tăng cường hiệu suất và giảm độ phức tạp trong việc xử lý dữ liệu có liên kếtchặt chẽ

Với khả năng mở rộng linh hoạt và hiệu suất cao, Neo4j là lựa chọn lý tưởng để giải quyết các bài toán phân tích mạng lưới và dữ liệu phức tạp trong thời gian thực Cơ sở dữ liệu đồ thị này đặc biệt phù hợpvới các hệ thống yêu cầu tối ưu hóa các mối quan hệ và xử lý dữ liệu lớn, giúp doanh nghiệp và tổ chức

dễ dàng đưa ra quyết định nhanh chóng và chính xác

Trang 6

1.5 Mục tiêu của đồ án

Từ những gì đã khái quát ở trên, nhóm đặt ra các mục tiêu cho đồ án như sau:

• Tìm hiểu chung về Neo4j: đặc trưng, kiến trúc, tính năng cốt lõi, ứng dụng thực tiễn

• Hiểu được vai trò và ý nghĩa của cơ sở dữ liệu đồ thị nói chung và Neo4j nói riêng

• Thực hành với ngôn ngữ Cypher – ngôn ngữ truy vấn cho cơ sở dữ liệu đồ thị

• Có thể so sánh Neo4j với một số cơ sở dữ liệu khác như Draph hoặc các cơ sở dữ liệu quan hệ

Trang 7

2 Các đặc trưng của Neo4j

2.1 Tổng quan về Neo4j

2.1.1 Lịch sử phát triển của Neo4j và sự phổ biến của nó trong lĩnh vực cơ sở dữ liệu đồ thị Neo4j ra đời vào năm 2007 bởi Neo Technology (nay là Neo4j, Inc.) [ 9], trở thành cơ sở dữ liệu đồ thịđầu tiên trên thị trường Từ khi ra mắt, Neo4j đã phát triển thành một hệ sinh thái phong phú gồm cáccông cụ, ứng dụng và thư viện Hệ sinh thái này cho phép tích hợp các công nghệ đồ thị với môi trườnglàm việc của mình [10] Trong thời đại hiện nay, Neo4j nổi bật với khả năng xử lý và lưu trữ dữ liệu dựatrên mô hình đồ thị, hỗ trợ các ứng dụng yêu cầu cấu trúc dữ liệu linh hoạt và có khả năng liên kết sâu sắc,chẳng hạn như phân tích mạng lưới, khoa học dữ liệu, và Trí tuệ nhân tạo Neo4j trở nên phổ biến vì sựtối ưu trong quản lý các mối quan hệ phức tạp, đặc biệt trong khi các cơ sở dữ liệu quan hệ truyền thốngkhó có thể xử lý các liên kết sâu với hiệu suất cao

2.1.2 Các ứng dụng phổ biến của Neo4j trong công nghiệp

 Neo4j được ứng dụng rộng rãi trong các ngành yêu cầu phân tích mạng lưới hoặc các cấu trúc phức hợp,như:

•  Phát hiện gian lận [11]: Đặc biệt hiệu quả trong phát hiện giao dịch bất thường qua phân tích cácmẫu liên kết

•  Quản lý chuỗi cung ứng [12]: Theo dõi chuỗi cung ứng và tối ưu hóa mạng lưới logistics

•  Mạng xã hội [13]: Mô hình hóa quan hệ giữa người dùng, sở thích, và tương tác

•  Đề xuất sản phẩm [14]: Tạo các gợi ý sản phẩm cá nhân hóa dựa trên các mạng lưới sở thích.2.1.3 Quy trình hoạt động của Neo4j

2.1.3.1 Cách Neo4j quản lý và xử lý dữ liệu đồ thị   Neo4j lưu trữ dữ liệu đồ thị theo dạng các nút(nodes), quan hệ (relationships), và thuộc tính (properties) Các nút và quan hệ đều được phân loại theonhãn (label), giúp truy vấn và lọc dữ liệu hiệu quả hơn Bằng cách sử dụng bộ nhớ đệm cho các thao táctruy vấn, Neo4j tối ưu hiệu suất xử lý ngay cả khi làm việc với đồ thị phức tạp

2.1.3.2 Cơ chế vận hành của Neo4j từ khi nhận truy vấn đến khi trả về kết quả   Khi một truy vấnCypher được gửi đến, Neo4j tiến hành phân tích cú pháp truy vấn, sau đó tạo kế hoạch thực thi tối ưu Saukhi truy vấn được chạy, Neo4j trả về kết quả cho người dùng Cơ chế này tối ưu cho các truy vấn đồ thị phức tạp, giúp giảm thiểu thời gian và tài nguyên hệ thống

2.2 Đặc điểm chính của Neo4j

2.2.1 Ngôn ngữ truy vấn Cypher: cú pháp và đặc trưng

Cypher là ngôn ngữ truy vấn của Neo4j, được thiết kế nhằm với cú pháp dễ đọc dễ hiểu, gần gũi với ngônngữ tự nhiên Cypher cho phép truy vấn các mối quan hệ và phân tích dữ liệu một cách trực quan Điểmđặc biệt của Cypher là cú pháp hình mẫu (MATCH, RETURN, CREATE, MERGE, v.v.), tối ưu hóa việc truy vấnmạng lưới so với SQL trong các cơ sở dữ liệu quan hệ, và nó trở thành ngôn ngữ truy vấn tiêu chuẩn cho

Trang 8

Trên đây là ví dụ về một pattern trong Cypher, trong đó dấu ngoặc tròn đại diện cho Node, dấu ngoặcvuông đại diện cho các relationships đi kèm với tính vô hướng/có hướng thông qua dấu gạch ngang vàdấu lớn/bé Một pattern có thể linh hoạt hơn so với cấu trúc bên trên, chẳng hạn như có thể thêm thuộctính trong nút để tìm kiếm hoặc tạo nút với điều kiện nhất định, ví dụ:

1   (:Person {name:   'Alice' , a ge : 3 0} )

hoặc kết hợp nhiều nút và quan hệ phức tạp để mô hình hóa liên kết sâu hơn, chẳng hạn:

1   (:Person {name:   'Alice' })-[:KNOWS]->(:Person {name:   'Bob' })-[:LIVES_IN]->(:City {name:

'New York' })

Thể hiện thông tin những người (Person) có tên là ’Alice’ biết người có tên là Bob sống ở thành phố NewYork Câu truy vấn Cypher là sự kết hợp giữa các hình mẫu với pattern, chẳng hạn như:

{name:   'New York' })

2   RETURN   p

Có nghĩa là trả về những Node p (có label là Person, có thuộc tính name là ’Alice’) biết người có tên là

’Bob’ sống ở thành phố New York

2.2.2 Chức năng và yếu tố quan trọng

2.2.2.1 Khả năng xử lý các truy vấn phức tạp (Graph Traversal)   Neo4j nổi bật nhờ khả năng xử lýcác truy vấn phức tạp thông qua quá trình ”traverse” mạng lưới Các thuật toán như Dijkstra, Breadth-FirstSearch (BFS), và Depth-First Search (DFS) giúp tăng tốc độ xử lý và tối ưu hóa các truy vấn, đặc biệt khicần truy vấn qua nhiều tầng quan hệ

2.2.2.2 ACID compliance và tính toàn vẹn dữ liệu   [16] Neo4j đảm bảo các thuộc tính ACID icity, Consistency, Isolation, Durability) để giữ tính toàn vẹn dữ liệu Đối với hệ thống cơ sở dữ liệu đồthị, tuân thủ ACID là một ưu điểm vì giúp đảm bảo mỗi thao tác cập nhật hoặc truy vấn đều diễn ra mộtcách nhất quán và an toàn, giảm thiểu rủi ro dữ liệu hỏng hoặc không đồng nhất

(Atom-2.2.2.3 Khả năng mở rộng   Neo4j cung cấp khả năng mở rộng đáng kể theo chiều ngang (HorizontalScaling)   [17]:

• Sharding: Neo4j có thể không lưu toàn bộ dữ liệu trên một máy mà phân chia thành nhiều mảnhnhỏ (shards), giúp hệ thống có thể quản lý lượng dữ liệu cực lớn

• Autonomous Clustering: Khi số lượng truy vấn lên cơ sở dữ liệu tăng lên, Neo4j hỗ trợ kiến trúccho phép tự động khởi tạo các phiên bản copies đến các máy chủ tối ưu dựa trên những yêu cầu hệthống và nghiệp vụ đã cài đặt từ trước Qua đó giúp tối ưu quá trình truy vấn dữ liệu

• Composite Database: Dựa vào kiến trúc Fabric, Neo4j có thể kết hợp các shards lại với nhau đểquản lý

2.3 Lợi ích

 Neo4j là công cụ mạnh mẽ cho các ứng dụng yêu cầu phân tích mối quan hệ phức tạp, với khả năng mở rộng linh hoạt và hiệu suất vượt trội Trong các dự án yêu cầu truy vấn nhanh và mở rộng dễ dàng, Neo4j

là lựa chọn hàng đầu

Trang 9

3 Quy trình thực hiện

3.1 Quy trình triển khai hệ thống

3.1.1 Thiết lập môi trường làm việc

• Chuẩn bị môi trường và yêu cầu hệ thống

Yêu cầu phần cứng [18]: Xác định dung lượng và hiệu năng cần thiết để đảm bảo Neo4j vận hành

ổn định Đối với hệ thống vừa và nhỏ, Neo4j cần tối thiểu 2 CPU, 2GB RAM, và 10GB dung lượnglưu trữ Tuy nhiên, với dữ liệu lớn hoặc truy vấn phức tạp, dung lượng bộ nhớ và sức mạnh xử lýcần được tăng lên

Yêu cầu phần mềm: Hệ điều hành hỗ trợ bao gồm Windows, macOS, và Linux Neo4j cũng yêucầu Java (thường là JDK 11 trở lên) Đảm bảo cài đặt và cấu hình môi trường Java để Neo4j có thểhoạt động chính xác

• Cài đặt và cấu hình Neo4j

Tải và cài đặt Neo4j: Truy cập trang chủ Neo4j và chọn phiên bản phù hợp Neo4j cung cấp hai phiên bản chính [19]:

 –  Community Edition: Miễn phí, phù hợp cho dự án nhỏ hoặc cá nhân

 –  Enterprise Edition: Có phí, cung cấp thêm các tính năng bảo mật và tối ưu hóa nâng cao chodoanh nghiệp

Thiết lập cấu hình ban đầu [20]: Trong tệp cấu hình neo4j.conf, có thể điều chỉnh các thông sốquan trọng như cổng kết nối (dbms.connector.bolt.listen_address), số lượng bộ nhớ tối đa(dbms.memory.heap.max_size), và các tùy chọn bảo mật khác Đảm bảo cấu hình phù hợp vớiyêu cầu cụ thể của ứng dụng và môi trường triển khai

• Cấu hình bảo mật:

Mật khẩu và quản lý truy cập: Thiết lập mật khẩu cho tài khoản quản trị và cấu hình quyền hạn chocác người dùng khác Neo4j hỗ trợ phân quyền [ 21] chi tiết cho từng vai trò và hoạt động.Bật mã hóa SSL: Để bảo vệ dữ liệu khi truyền qua mạng, cấu hình mã hóa SSL trong neo4j.conf.Điều này sẽ đảm bảo dữ liệu được mã hóa giữa client và server, ngăn chặn truy cập trái phép.3.1.2 Các bước cài đặt Neo4j trên các môi trường Local, Cloud

• Cài đặt trên môi trường Local: Phù hợp cho quá trình phát triển và thử nghiệm nhỏ Neo4j top [22] cung cấp các phiên bản cài đặt cho nhiều hệ điều hành như Windows, macOS, và Linux,cho phép làm việc trực tiếp với dữ liệu trong môi trường phát triển

Desk- –  Windows [23]: Cài đặt Neo4j Desktop từ trang chủ Sau khi cài đặt, khởi động Neo4j và truycập qua giao diện Neo4j Browser  [24] hoặc Cypher Shell [25]

 –  Linux và macOS: Neo4j có thể cài đặt qua homebrew trên macOS [26] hoặc thông qua apt

trên Linux [27] Ví dụ:

# Trên macOS:

brew install neo4j

Trang 10

Kiểm thử cục bộ: Sau khi cài đặt, khởi động dịch vụ Neo4j và truy cập giao diện Cypher Shell hoặc Neo4j Browser (thường tại http://localhost:7474) Kiểm tra khả năng truy vấn với dữ liệumẫu để đảm bảo hoạt động ổn định.

• Cài đặt trên môi trường Cloud:

 Neo4j Aura: Dịch vụ đám mây của Neo4j cung cấp nền tảng triển khai và quản lý cơ sử dữ liệu trựctuyến

 –   Đăng ký và khởi tạo: Đăng ký tài khoản tại tại đây và tạo một cơ sở dữ liệu mới, chọn cấuhình tài nguyên phù hợp với quy mô dự án

 –   Kết nối và bảo mật: Neo4j Aura cung cấp endpoint bảo mật để kết nối với cơ sở dữ liệu thôngqua Cypher Shell hoặc Neo4j Browser Kết nối sẽ được bảo mật sẵn bằng SSL, giảm thiểu rủi

ro khi truyền dữ liệu

Hình 1: Cơ sở dữ liệu trên Neo4j Aura

 –   Quản lý và sao lưu [28]: Neo4j Aura có tích hợp sẵn công cụ giám sát và sao lưu tự động, giúpduy trì và phục hồi cơ sở dữ liệu khi cần thiết

3.2 Quy trình thực hiện bài toán

Quy trình thực hiện bài toán bằng cơ sở dữ liệu đồ thị Neo4j là một quá trình lặp đi lặp lại, bao gồm các bước phân tích yêu cầu, thiết kế mô hình dữ liệu, kiểm thử và tối ưu hóa để tạo ra một cơ sở dữ liệu đồ thịđáp ứng yêu cầu và hoạt động hiệu quả Dưới đây là các bước chi tiết cho quá trình này:

3.2.1 Phân tích yêu cầu và xác định use case

• Xác định yêu cầu bài toán

Trang 11

Hiểu rõ yêu cầu nghiệp vụ và các mục tiêu chính của bài toán Phân tích các yếu tố như: đối tượngcần quản lý, các mối quan hệ giữa đối tượng, cũng như các thao tác mà hệ thống cần hỗ trợ.

Ví dụ: Nếu bài toán là quản lý mạng xã hội, cần xác định các đối tượng như ”Người dùng”, ”Bàiviết”, ”Bình luận”, ”Kết bạn”, và các mối quan hệ giữa chúng (ví dụ: người dùng kết bạn với nhau,người dùng thích bài viết)

• Định nghĩa các use case chính

Từ yêu cầu nghiệp vụ, xác định các use case chính mà hệ thống phải hỗ trợ Đây là các câu hỏi truyvấn mà hệ thống cần trả lời hoặc các chức năng mà hệ thống cần thực hiện

Ví dụ: ”Tìm bạn chung giữa hai người dùng”, ”Lấy danh sách các bài viết mà người dùng thích”,hay ”Tìm tất cả người dùng có cùng sở thích.”

3.2.2 Thiết kế mô hình dữ liệu đồ thị ban đầu

Ví dụ: Trong hệ thống mạng xã hội, node có thể là “User”, và relationship là “Friend”

• Thiết kế thuộc tính cho node và relationship

Đối với mỗi node và relationship, xác định các thuộc tính cần thiết Những thuộc tính này là cácthông tin cần lưu trữ và sẽ được truy vấn thường xuyên

Ví dụ: Với node “User”, các thuộc tính có thể bao gồm “Name”, “Email”, “Age” Với relationship

“Friend”, thuộc tính có thể là “Date”

• Kiểm tra tính đầy đủ của mô hình với use case

Dựa trên các use case đã xác định, kiểm tra xem mô hình dữ liệu đã đủ thông tin để giải quyết tất

cả các yêu cầu chưa Nếu thiếu thông tin, cần bổ sung node hoặc relationship phù hợp

3.2.3 Tạo dữ liệu mẫu và kiểm thử mô hình ban đầu

• Xây dựng mô hình instance với dữ liệu mẫu

Sử dụng ngôn ngữ truy vấn Cypher của Neo4j để tạo dữ liệu mẫu, nhằm trực quan hóa và kiểm thử

mô hình đồ thị với các tình huống thực tế Dữ liệu mẫu giúp kiểm tra tính hợp lý và hiệu quả của

mô hình dữ liệu

Ví dụ: Tạo một vài người dùng và mối quan hệ kết bạn giữa họ để kiểm tra mô hình

2   (user2:User {name:   'Bob' , age: 25}),

3   (user3:User {name:   'Charlie' , age: 35});

5   (user2)-[:FRIEND]->(user3),

6   (user3)-[:FRIEND]->(user1);

7

Trang 12

• Kiểm thử use case trên mô hình

Thực hiện các truy vấn theo các use case trên mô hình dữ liệu để kiểm tra tính chính xác của kếtquả trả về và đảm bảo rằng mô hình đáp ứng được các yêu cầu ban đầu

Ví dụ: Thực hiện truy vấn tìm bạn chung giữa hai người dùng để xác minh mô hình đã phản ánhđúng cấu trúc và quan hệ giữa các đối tượng

{name:   'Bob' })

3

• Đánh giá hiệu suất

Đánh giá thời gian phản hồi của các truy vấn và kiểm tra hiệu suất của mô hình Nếu các truy vấnmất nhiều thời gian hoặc yêu cầu tài nguyên lớn, cần cải thiện mô hình

3.2.4 Tối ưu hóa và cải tiến mô hình

• Tối ưu hóa bằng cách thêm chỉ mục

Tạo chỉ mục cho các thuộc tính thường xuyên được truy vấn nhằm tăng tốc độ truy xuất dữ liệu.Điều này đặc biệt hữu ích với các thuộc tính phổ biến như “Tên người dùng” hoặc “Mã sản phẩm”

Ví dụ: Nếu hệ thống có truy vấn tìm kiếm người dùng theo “Tên”, có thể tạo chỉ mục cho thuộc tínhnày

2

• Xem xét mối quan hệ có trọng số

 Nếu một số mối quan hệ có trọng số quan trọng trong truy vấn (ví dụ: mức độ tương tác giữa ngườidùng trong mạng xã hội), có thể bổ sung trọng số vào mối quan hệ và điều chỉnh các truy vấn đểtận dụng thông tin này

Ví dụ: Mối quan hệ “Kết bạn” có thể có trọng số phản ánh mức độ thân thiết dựa trên số lần tươngtác

2

• Sử dụng caching để cải thiện hiệu suất   [29]

Cấu hình cache cho các truy vấn phổ biến hoặc dữ liệu thường được truy xuất để cải thiện tốc độtruy cập dữ liệu Cơ chế caching giúp giảm thiểu số lượng truy cập vào bộ lưu trữ chính và tăng tốc

độ phản hồi

3.2.5 Lặp lại và tinh chỉnh mô hình

• Điều chỉnh mô hình dựa trên phản hồi và hiệu suất

Sau khi kiểm thử và tối ưu hóa, lặp lại quy trình để cải tiến mô hình dữ liệu Phản hồi từ kết quảtruy vấn và yêu cầu thực tế có thể đòi hỏi thay đổi hoặc mở rộng mô hình

Ví dụ: Nếu phát hiện rằng một số truy vấn thường gặp vấn đề về hiệu suất, cần điều chỉnh mô hìnhhoặc thêm các thuộc tính bổ sung

Trang 13

• Quản lý thay đổi trong mô hình

Khi có sự thay đổi trong yêu cầu hoặc cấu trúc dữ liệu, cần áp dụng phương pháp quản hành phiên bản để giữ tính nhất quán của mô hình và duy trì dữ liệu hiện có Neo4j hỗ trợ cập nhật các node vàrelationship theo phiên bản mới mà không làm mất dữ liệu cũ

• Đảm bảo tính linh hoạt cho mô hình

Một hệ thống đồ thị phải đủ linh hoạt để mở rộng trong tương lai khi yêu cầu mới xuất hiện Điềunày bao gồm khả năng thêm node mới, mối quan hệ mới mà không ảnh hưởng đến dữ liệu và cấutrúc hiện tại

3.2.6 Triển khai và giám sát

• Triển khai mô hình vào môi trường thực tế

Khi mô hình đã được kiểm thử và tối ưu, triển khai hệ thống vào môi trường thực tế Việc này baogồm cấu hình môi trường, xác định các thông số vận hành và kiểm tra tích hợp với các hệ thốngkhác (nếu có)

• Thiết lập công cụ giám sát

Cài đặt và sử dụng các công cụ giám sát hiệu suất để theo dõi hoạt động của hệ thống trong quátrình vận hành Các công cụ như Prometheus [ 30] hoặc Grafana [31] giúp giám sát các chỉ số như

số lượng truy vấn, thời gian phản hồi, và mức sử dụng tài nguyên

• Định kỳ đánh giá và tối ưu hóa hệ thống

Duy trì hiệu suất của hệ thống bằng cách định kỳ đánh giá và thực hiện tối ưu hóa Điều này baogồm việc kiểm tra lại các chỉ mục, hiệu suất truy vấn, và thực hiện các điều chỉnh cần thiết khi yêucầu thay đổi

Kết luận

Quy trình triển khai hệ thống và thực hiện bài toán bằng cơ sở dữ liệu đồ thị Neo4j là một quá trình lặp

đi lặp lại, bao gồm các bước phân tích yêu cầu, thiết kế mô hình dữ liệu, kiểm thử và tối ưu hóa để tạo ramột cơ sở dữ liệu đồ thị đáp ứng yêu cầu và hoạt động hiệu quả Quy trình này đảm bảo rằng mô hình dữliệu phản ánh chính xác cấu trúc và quan hệ giữa các đối tượng, đồng thời cung cấp hiệu suất tối ưu chocác truy vấn và thao tác dữ liệu Việc lặp lại và tinh chỉnh mô hình giúp cải thiện hiệu suất và linh hoạtcủa hệ thống, đồng thời đảm bảo tính nhất quán và dễ quản lý trong quá trình triển khai và vận hành

Trang 14

4 Ứng dụng và Kết quả thực nghiệm

4.1 Giới thiệu về Cơ sở dữ liệu Movies

Cơ sở dữ liệu Movies trong Neo4j là một tập dữ liệu mẫu được thiết kế để minh họa cách lưu trữ và truyvấn dữ liệu dạng đồ thị (xem hình  2) Nó bao gồm thông tin về các bộ phim, diễn viên, đạo diễn, nhà sảnxuất và các mối quan hệ giữa họ Đây là một cơ sở dữ liệu hữu ích để hiểu cách Neo4j và ngôn ngữ truyvấn Cypher hoạt động trong việc xử lý dữ liệu phức tạp Dựa trên cơ sở dữ liệu này, nhóm tiến hành bổsung thêm một số dữ liệu cá nhân và thực nghiệm với các truy vấn (xem hình  3) Quá trình cũng như kếtquả chi tiết sẽ được trình bày ở nội dung bên dưới Ngoài ra, source code cho phần thực nghiệm cũng cóthể được tìm thấy tại đây1

4.2 Mô hình dữ liệu

4.2.1 Node

•   Movie: Đại diện cho các bộ phim, chứa các thuộc tính như title (tiêu đề), released (năm pháthành), tagline (khẩu hiệu)

•   Person: Đại diện cho cá nhân như diễn viên, đạo diễn, nhà sản xuất, với các thuộc tính như name

(tên), born (năm sinh)

4.2.2 Relationship

•  ACTED_IN: diễn viên tham gia bộ phim

•  DIRECTED: đạo diễn chỉ đạo bộ phim

•  PRODUCED: nhà sản xuất tài trợ cho bộ phim

•  WROTE: nhà biên kịch viết bộ phim

•  REVIEWED: nhà phê bình đánh giá bộ phim

•  FAN: mối quan hệ hâm mộ giữa các cá nhân

•  KNOWS: mối quan hệ quen biết giữa các cá nhân

4.3 Dữ liệu bổ sung của nhóm

 Nhóm đã bổ sung dữ liệu riêng vào cơ sở dữ liệu để thực hiện demo Dữ liệu này bao gồm thông tin cácthành viên trong nhóm và giảng viên hướng dẫn, cùng với mối quan hệ giữa giảng viên và các thành viênvới bộ phim mang tên ”ĐỒ ÁN QLTT” mà nhóm đang thực hiện

Trang 15

Hình 2: Biểu diễn đồ thị của cơ sở dữ liệu Movies

Trang 16

2   CREATE   (hieu1:Person {name:   "Huynh Minh Hieu" , MSSV: 22520434, age: 20});

3   CREATE   (an:Person {name:   " L e T u ng B ao A n" , MSSV: 22520016, age: 20});

4   CREATE   (dat:Person {name:   "Cao Thanh Dat" , MSSV: 22520205, age: 18});

Hình 3: Dữ liệu bổ sung của nhómDựa vào dữ liệu trả về, ta có thể thấy rằng dữ liệu đã được thêm vào cơ sở dữ liệu thành công Các node

và mối quan hệ giữa chúng đã được tạo ra như mong muốn

Tìm người có tên ”Huỳnh Minh Hiếu”

Trang 17

Hình 4: Kết quả tìm kiếm người có tên ”Huỳnh Minh Hiếu”Tìm tất cả những bộ phim do diễn viên ”Tom Hanks” đóng

2   RETURN   a, m

Trang 18

Hình 5: Kết quả tìm kiếm bộ phim do diễn viên ”Tom Hanks” đóngThêm một bộ phim có tên ’Captian Marvel’ và các thông tin khác của bộ phim

2   tagline: 'Everything begins with a (her)o.' })   RETURN   a

Hình 6: Kết quả thêm một bộ phim có tên ’Captian Marvel’ Xóa một node trong cơ sở dữ liệu

Trang 19

Hình 7: Kết quả xóa một node trong cơ sở dữ liệuKhi xóa một node đang có liên kết với các node khác bằng cách này sẽ xảy ra lỗi, do đó cần dùng lệnhdetach để xóa node và các liên kết của node đó

Xóa một bộ phim cùng các quan hệ liên kết của nó

Trang 20

Hình 8: Kết quả xóa một bộ phim cùng các quan hệ liên kết của nóTạo hoặc cập nhật thông tin của một node trong cơ sở dữ liệu

2   ON   CREATE SET   a.born = 2004

4   RETURN   a

Hình 9: Kết quả tạo hoặc cập nhật thông tin của một node trong cơ sở dữ liệu

Trang 21

Query này sử dụng lệnh MERGE để tìm hoặc tạo một node Person có tên ”Huỳnh Minh Hiếu”

• Nếu node chưa tồn tại: Tạo node mới và thiết lập thuộc tính  born với giá trị 2004

• Nếu node đã tồn tại: Cập nhật thuộc tính  point  Nếu point  chưa tồn tại, thiết lập giá trị mặc định là

0, sau đó tăng thêm 1

Tìm kiếm những người có tên bắt đầu bằng ’Tom’

2   RETURN   a

Hình 10: Kết quả tìm kiếm những người có tên bắt đầu bằng ’Tom’

Tìm các bộ phim phát hành trong thập niên 1990

1   MATCH   (a:Movie)   WHERE   a.released > 1990   AND   a.released < 2000   RETURN   a

Trang 22

Hình 11: Kết quả tìm các bộ phim phát hành trong thập niên 1990Tìm các node liên quan đến một bộ phim trong phạm vi tối đa 4 bước quan hệ

1   MATCH   (doan:Movie {title: "DO AN QLTT" })-[*0 4]-(p)

Hình 12: Kết quả tìm các node liên quan đến một bộ phim trong phạm vi tối đa 4 bước quan hệTìm đường đi ngắn nhất giữa Kevin Bacon và Al Pacino

Trang 23

2   (bacon:Person {name: "Kevin Bacon" })-[*]-(a:Person {name: 'Al Pacino' })

4   RETURN   p

Hình 13: Kết quả tìm đường đi ngắn nhất giữa Kevin Bacon và Al Pacino

Gợi ý các diễn viên có thể đóng với Tom Hanks và Tom Cruise qua các diễn viên chung

2   (coActors)-[:ACTED_IN] ->(m2)<-[:ACTED_IN]-(other: Person {name: 'Tom Cruise' })

Ngày đăng: 07/12/2024, 11:21

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w