1. Trang chủ
  2. » Luận Văn - Báo Cáo

CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J VÀ ỨNG DỤNG

21 2,3K 40

Đ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 21
Dung lượng 635,5 KB

Nội dung

Nếu như cơ sở dữ liệu truyền thốngbiểu diễn bởi các bảng và mối quan hệ giữa chúng thông qua khóa ngoại, thì cơ sở dữliệu đồ thị biểu diễn trực quan hơn bởi các node, thể hiện các mối qu

Trang 1

-Chuyên đề:

CƠ SỞ DỮ LIỆU NÂNG CAO

Tiểu luận:

CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J VÀ ỨNG DỤNG

Học viên thực hiện : Võ Thị Thu Nguyệt

Mã số học viên : CH1101112 Người hướng dẫn : PGS.TS Đỗ Phúc

Năm 2012

Trang 2

1.2.2 “Một đồ thị chứa các node và các quan hệ”: 2

1.2.3 “Các mối quan hệ tổ chức nên đồ thị”: 3

1.2.4 “Truy vấn cơ sở dữ liệu đồ thị bằng cách duyệt đồ thị”: 3

Trang 3

Hình 1 – Ví dụ về đồ thị 2

Hình 2 – Tổ chức của một cơ sở dữ liệu đồ thị 3

Hình 3 - Mô hình truy vấn cơ sở dữ liệu đồ thị 4

Hình 4 – Quan hệ giữa chỉ mục và các thành phần trong cơ sở dữ liệu đồ thị 5

Hình 5 – Tổng quan về cơ sở dữ liệu đồ thị 6

Hình 6 – Ví dụ về cơ sở dữ liệu đồ thị 7

Hình 7 – Kiến trúc logic của Neo4j 9

Hình 8 – Node, relationships và properties 10

Hình 9 – Ví dụ về một đồ thị đơn giản với 1 node và 1 property 10

Hình 10 – Relationship và các quan hệ liên quan 10

Hình 11 – Một relationship giữa start node và end node 11

Hình 12 – quan hệ vào và quan hệ ra của một node 11

Hình 13 – quan hệ trên 1 node 11

Hình 14 – Ví dụ một mạng xã hội 11

Hình 15- Biểu diễn một Property 12

Hình 16 – Path 13

Hình 17 – Đường đi đến chính node đó bằng 0 13

Hình 18 – Đường đi từ node 1 đến node 2 có quan hệ relationship 1 13

Hình 19 – Cơ sở dữ liệu của mạng xã hội 15

Trang 4

Cơ sở dữ liệu đồ thị là một vấn đề mới mà chúng ta cần phải nghiên cứu hiện nay.Đỉnh cao của ứng dụng cơ sở dữ liệu đồ thị là dùng để lưu trữ dữ liệu của một haynhiều mạng xã hội một cách dễ dàng và hiệu quả Nếu như cơ sở dữ liệu truyền thốngbiểu diễn bởi các bảng và mối quan hệ giữa chúng thông qua khóa ngoại, thì cơ sở dữliệu đồ thị biểu diễn trực quan hơn bởi các node, thể hiện các mối quan hệ khác nhaugiữa các node, các cạnh, dựa trên các quan hệ đó để tính toán các lợi ích kinh tế khác.

Có nhiều cơ sở dữ liệu đồ thị khác nhau, tuy nhiên, neo4j được xem cơ sở dữ liệu hiệuquả nhất, bằng việc lưu trữ nhiều cơ sở dữ liệu đồ thị, tốc độ truy vấn nhanh và khảnăng lưu trữ tốt

Nội dung bài tiểu luận tập trung vào trình bày cơ sở dữ liệu đồ thị neo4j và cách tiếpcận neo4j trong một ứng dụng mạng xã hội nhỏ

Em xin chân thành cảm ơn thầy, PGS.TS Đỗ Phúc đã truyền đạt những kiến thức quýbáu về bộ môn Cơ sở dữ liệu nâng cao nói chung, và đặc biệt là những kiến thức về cơ

sở dữ liệu đồ thị, làm tiền đề cho những ý tưởng của em về việc xây dựng một mạng

xã hội của riêng mình

Bài viết còn nhiều sai xót do sự hạn chế về thời gian cũng như kinh nghiệm thực tế,mong thầy thông cảm và bỏ qua

Trang 5

Biểu diễn đồ thị dưới dạng tập hợp như sau:

- Tập đỉnh V

- Tập cạnh E={(u,v): u,vV}

Đồ thị G được biểu diễn : G = (V,E)

Có 2 loại đồ thị:

- Đồ thị có hướng: cạnh là cặp đỉnh có thứ tự, gọi là cung

- Đồ thị vô hướng: cạnh là cặp đỉnh không có thứ tự Ta có (u, v)  E => (v, u)  EMỗi cạnh có thể được gán trọng số (biểu diễn độ đo đi từ đỉnh u đến đỉnh v) được gọi

Một ứng dụng quan trọng của lý thuyết đồ thị đó là việc biểu diễn cơ sở dữ liệu đồ thị,

là nội dung ta sẽ tìm hiểu dưới đây

1.2 Cơ sở dữ liệu đồ thị:

1.2.1 Khái niệm:

Cơ sở dữ liệu đồ thị sử dụng các cấu trúc đồ thị với các node, các cạnh, và các thuộctính để biểu diễn và lưu trữ dữ liệu Chúng ta hãy tìm hiểu các khái niệm sau:

1.2.2 “Một đồ thị chứa các node và các quan hệ”:

“Đồ thị - lưu trữ dữ liệu trong – Các node – có – Các mối quan hệ”

Đồ thị đơn giản nhất có thể là đồ thị chỉ có 1 node duy nhất, lưu các thuộc tính biểudiễn giá trị của nó

Trang 6

Một node có thể bắt đầu chỉ với 1 thuộc tính Property và sau đó phát triển thành hàngtriệu properties Tại một số điểm, nó phân tán dữ liệu thành nhiều node khác, tổ chứcthành các mối quan hệ rõ ràng.

Hình sau biểu diễn cách tổ chức của một cơ sở dữ liệu đồ thị:

Hình 2 – Tổ chức của một cơ sở dữ liệu đồ thị

1.2.3 “Các mối quan hệ tổ chức nên đồ thị”:

“Các node – được tổ chức bởi -> các mối quan hệ - có các -> thuộc tính”

Các mối quan hệ này tổ chức các node thành các cấu trúc tùy tiện, cho phép đồ thịtương tự như 1 List, Tree, Map hay các compound Entity, mà có thể kết nối thànhnhững cấu trúc phức tạp hơn, đa dạng về kết nối với nhau

1.2.4 “Truy vấn cơ sở dữ liệu đồ thị bằng cách duyệt đồ thị”:

“Một phép duyệt – điều hướng –> một đồ thị; nó xác định –> đường đi – theo thứ tự các node”

-Chúng ta truy vấn 1 cơ sở dữ liệu đồ thị sử dụng cách duyệt đồ thị, xuất phát từ nodebắt đầu đến các node kế cận theo 1 giải thuật, được mô hình như hình dưới đây:

Trang 7

Hình 3 - Mô hình truy vấn cơ sở dữ liệu đồ thị

Trang 8

Hình 4 – Quan hệ giữa chỉ mục và các thành phần trong cơ sở dữ liệu đồ thịNhư vậy, ta có một cái nhìn tổng quan về cơ sở dữ liệu đồ thị như sau:

Trang 9

Hình 5 – Tổng quan về cơ sở dữ liệu đồ thị

Ở đây, một cơ sở dữ liệu đồ thị sẽ quản lý các chỉ mục và đồ thị gồm các node và cáccạnh Các node trong đồ thị lưu trữ thông tin của chúng thông qua các node và cácmối quan hệ giữa các node Các chỉ mục sẽ ánh xạ đến từng node, từng mối quan hệgiữa các node, và đến các thuộc tính của các node và các mối quan hệ đó Để thực hiệntruy vấn trong 1 cơ sở dữ liệu đồ thị, ta thực hiện một phép duyệt đồ thị dựa trên mộtgiải thuật để xác định đường đi theo thứ tự của các node

Ví dụ về một cơ sở dữ liệu đồ thị:

Trang 10

Hình 6 – Ví dụ về cơ sở dữ liệu đồ thị

Trong ví dụ này, đồ thị của cơ sở dữ liệu gồm 3 node N = {Alice, Bob, Group}, vớitập thuộc tính gồm PV = {id, name, age, type} Các cạnh cũng có tập các thuộc tínhsau: PE = {id, label, since} Đây là một đồ thị có hướng với những thuộc tính của cáccạnh nối 2 đỉnh là khác nhau Trong cơ sở dữ liệu này, ta có thể thực hiện truy vấn cácthông tin, như: tìm mối quan hệ giữa người có tên là Alice với người có tên là Bob, tìmcác cá nhân có quan hệ là “is_member” của group có tên là “Chess”…

Sau đây chúng ta sẽ tìm hiểu về Neo4j để sau đó xây dựng một ứng dụng mạng xã hộidựa vào cấu trúc lưu trữ dữ liệu của Neo4j

Trang 11

Neo4j không giống như cơ sở dữ liệu truyền thống, nó là NOSQL(Not Only SQL),nghĩa là không chỉ truy vấn dữ liệu bằng các câu sql thông thường Như đã trình bàytrong chương 1, chúng ta truy vấn trong một cơ sở dữ liệu đồ thị dựa trên phép duyệt

đồ thị

Neo4j một dự án mã nguồn mở dùng trong cộng đồng GPLv3, được hỗ trợ bởi công tyNeo Technology

Đặc điểm của Neo4j:

- Biểu diễn mô hình dữ liệu hướng đồ thị một các trực quan

- Quản lý lưu trữ trên đĩa cứng, hoàn toàn tối ưu cho việc lưu trữ các cấu trúc đồ thịvới hiệu năng lớn nhất và có khả năng mở rộng tối đa

- Neo4j có thể xử lý các đồ thị với hàng tỉ các node/ các mối quan hệ/ các thuộc tínhtrên 1 máy tính và có thể mở rộng ra trên nhiều máy khác

- Một framework duyệt mạnh mẽ với tốc độ duyệt trên các node cực nhanh trongkhông gian node Độ sâu của quá trình duyệt có thể lên đến 1000 mức và dưới tốc độ 1giây

- Full transactional như một cơ sở dữ liệu thực sự, với đầy đủ các đặc tính ACID(Atomicity, Consistency, Isolation, Durability)

2.2 Neo4j:

2.2.1 Kiến trúc logic của Neo4j:

Kiến trúc logic của Neo4j được mô tả theo hình dưới đây:

Trang 12

Chương 2: Neo4j

Hình 7 – Kiến trúc logic của Neo4j

Trong đó:

- File system: là các file trên ổ cứng, được lưu trữ cẩn thận để tính toán các offset

và tìm đến đến bất kỳ một record nào trong các file một cách nhanh nhất Ta lưutrữ tách biệt các node, các quan hệ và các thuộc tính, và tối ưu trong nhữngtrường hợp chung nhấp để đảm bảo dữ liệu được tìm thấy trên 1 file

- Memory-mapped (N) IO: ta sử dụng java IO cho mục đích nhanh chóng

- Caches: cho phép làm việc nhanh chóng trên các đĩa quay, cho phép chúng taduyệt hàng triệu phép duyệt mỗi giây trên một phần cứng của máy laptop

- CoreAPI : là phần nhân của neo4j, lưu trữ các cấu trúc mức trừu tượng của đồthị, mang tính hiệu quả cao

- Traversal Framework: tầng truy vấn dữ liệu

- JVM Language bindings: các thành phần của Java API như Jruby, Jython, Scala,

Trang 13

Hình 8 – Node, relationships và properties

Như đã trình bày trong chương 1, một đồ thị đơn giản chỉ chưa 1 node, và có thể chỉchứa một thuộc tính Ví dụ:

Hình 9 – Ví dụ về một đồ thị đơn giản với 1 node và 1 propertyTrong ví dụ trên, đồ thị có 1 node có 1 thuộc tính tên là “name”, với giá trị là “Marko”

2.2.3 Relationships:

Trong cơ sở dữ liệu đồ thị, các mối quan hệ giữa các node (relationships) là một phầnkhóa của cơ sở dữ liệu Chúng cho phép tìm kiếm các dữ liệu có liên quan với nhau.Cũng giống như các node, các relationship cũng có tập các thuộc tính

Hình 10 – Relationship và các quan hệ liên quan

Một relationship kết nối 2 node với nhau, gồm node bắt đầu và node kết thúc Mỗirelationship có loại quan hệ “relationship type”, mỗi “relationship type” này được xácđịnh bởi một định danh duy nhất Một relationship có tập các thuộc tính với các giá trịcủa các thuộc tính này

Trang 14

Chương 2: Neo4j

Một relationship luôn có hướng Chúng biểu diễn quan hệ đầu vào của 1 node, và quan

hệ đầu ra của 1 node, dùng cho phép duyệt đồ thị:

Hình 11 – Một relationship giữa start node và end node

Hình 12 – quan hệ vào và quan hệ ra của một nodeMột node cũng có thể tự có quan hệ với chính nó:

Hình 13 – quan hệ trên 1 node

Mặc dù đồ thị luôn có một hướng, nhưng chúng ta có thể bỏ qua hướng của đồ thịtrong ứng dụng nhỏ của chúng ta

Để nâng cao hơn phép duyệt đồ thị.tất cả các relationships có một “relationship type”,

có thể được xem là nhãn của một relationship

Ví dụ:

Hình 14 – Ví dụ một mạng xã hội

Trong mạng xã hội trên, có 2 “relationship type” là “follows” và “blocks”, thể hiệnmối quan hệ giữa các node : Maja, Alice, Oscar, và William

Biểu diễn ý nghĩa các relationships trong mạng xã hội trên trong bảng dưới đây:

Trang 15

2.2.4 Properties:

Cả node và relationship đều có tập các thuộc tính (properties)

Properties là cặp key – value trong đó key có kiểu là String (kiểu mô tả này tương tựnhư kiểu dữ liệu Map trong Java) Các giá trị của property có thể là 1 kiểu nguyênthủy, hoặc một mảng của nhiều kiểu nguyên thủy Ví dụ : kiểu String, kiểu int, hoặcmảng int[]

Properties không chứa giá trị null, nếu một properties có value = null nghĩa là khôngtồn tại key đó trong tập properties của nodes hay relationships

Ví dụ:

Hình 15- Biểu diễn một Property

Trang 16

Chương 2: Neo4j

2.2.5 Đường đi Paths:

Một đường đi là một hay nhiều node được kết nối với nhau bởi các relationships,thường được biểu diễn bằng kết quả của phép duyệt

Có 2 cách duyệt đồ thị cơ bản là duyệt theo chiều rộng và duyệt theo chiều sâu

Trang 17

Thông thường ta duyệt đồ thị bằng cách sử dụng thuật toán Djikstra để tìm đường đingắn nhất từ đinh A đến đỉnh B, để tiết kiệm chi phí “đi lại” giữa các node.

Trang 18

Chương trình xây dựng một cơ sở dữ liệu đồ thị gồm tập các node {7, 8, 9, 10, 11, 12,

13, 14, 15, 16} với tập các relationships = {friend, colleague, know, member}

Tập thuộc tính của các node {7, 8, 9, 10, 11, 12, 13, 15, 16} bao gồm {name, age,work}

Tập thuộc tính của node 14 gồm {name, since}

Tập thuộc tính của quan hệ friends là {since}

Trang 19

Tập thuộc tính của quan hệ colleague là {since}

Tập thuộc tính của quan hệ member là {since, reason}

Tập thuộc tính của quan hệ know là {level}

Thực hiện tạo index cho các node để duyệt đồ thị nhanh chóng

Ứng dụng thực hiện việc tìm mối liên hệ giữa node 12 và node 10, từ đó kiểm chứngxem 2 node 10 và 12 có thể hình thành nên quan hệ “friend” hay không

Trang 20

Chương 4:

KẾT LUẬN

Cơ sở dữ liệu đồ thị Neo4j được biểu diễn bởi các nodes, các relationships của cácnodes, và tập các properties của các nodes và các relationships Neo4j có thể lưu trữmột hoặc nhiều cơ sở dữ liệu đồ thị mà tốc độ duyệt các node vẫn đảm bảo nhanh vàhiệu quả

Ứng dụng cơ sở dữ liệu đồ thị Neo4j vào việc lưu trữ và xây dựng mạng xã hội đangtrở thành một xu hướng hiện nay, sẽ mở ra một thời đại mới của thời đại công nghệ làmạng xã hội

Trang 21

TÀI LIỆU THAM KHẢO

[1] PGSTS Đỗ Phúc, Bài giảng “Neo4j”, Đại học Quốc gia Tp Hồ Chí Minh-Đạihọc công nghệ thông tin, 2012

[2] The Neo4j Team, The Neo4j Manual v1.7.2, Neo Technology, 2012

[3] Wikipedia, Lý thuyết đồ thị, http://vi.wikipedia.org/wiki/L%C3%BD_thuy

%E1%BA%BFt_%C4%91%E1%BB%93_th%E1%BB%8B

[4] Wikipedia, Graph database , http://en.wikipedia.org/wiki/Graph_database

Ngày đăng: 10/04/2015, 14:34

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

TÀI LIỆU LIÊN QUAN

w