Tiểu luận môn cơ sở dữ liệu nâng cao Cơ sở dữ liệu đồ thị Neo4j

63 1.9K 10
Tiểu luận môn cơ sở dữ liệu nâng cao Cơ sở dữ liệu đồ thị Neo4j

Đ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

Báo cáo chuyên đề cơ sở dữ liệu nâng cao LỜI MỞ ĐẦU « Dữ liệu đã ra đời rất lâu, ngay cả lúc ngành công nghệ thông tin chưa khai sinh đã có khái niệm dữ liệu rồi. Dữ liệu là tập hợp thông tin có cấu trúc. Tuy nhiên, thuật ngữ này thường dùng trong công nghệ thông n và nó thường được hiểu rõ hơn dưới dạng một tập hợp liên kết các dữ liệu, thường đủ lớn để lưu trên một thiết bị lưu trữ như đĩa hay băng. Dữ liệu này được duy trì dưới dạng một tập hợp các tập n trong hệ điều hành hay được lưu trữ trong các hệ quản trị cơ sở dữ liệu. Ngày nay, với lượng dữ liệu khổng lồ, việc cập nhật và truy xuất dữ liệu thường xuyên, đây là một thách thức không nhỏ đối với các hệ cở sở dữ liệu. Quá trình Am kiếm, phân Bch cấu trúc dữ liệu của thông n, các chuyên gia nghiên cứu cơ sở dữ liệu đã cho ra đời một hệ cơ sở dữ liệu mới mà thừa kế từ cơ sở dữ liệu quan hệ, cơ sở dữ liệu dạng key-value, cơ sở dữ liệu tài liệu, Column-Family, đó là cấu trúc cơ sở dữ liệu đồ thị. Dữ liệu đồ thị là cách thức lưu trữ thông tin ở dạng đồ thị những nút và cạnh.Nút của đồ thị sẽ có quan hệ đối với những nút khác thông qua các cạnh của đồ thị. Với cách thức lưu trữ này, việc quản lý dữ liệu trở nên mềm dẽo và dễ dàng hơn ngay cả trong việc ứng dụng tri thức vào khối dữ liệu lưu trữ. Tiểu luận này trình bày một mã nguồn mở mà lưu dữ liệu dưới dạng cấu trúc sở dữ liệu đồ thị, đó là Neo4j và ngôn ngữ truy vấn đồ thị thông minh Cypher. Tiểu luận gồm có 5 chương: Chương 1. Neo4j là một cơ sở dữ liệu đồ thị: giới thiệu về Neo4j và so sánh neo4j với RDBMS, Key-Value, cơ sở dữ liệu tài liệu. Chương 2. Cơ sở dữ liệu đồ thị Neo4j: đi vào chi tiết cơ sở dữ liệu được lưu trữ trên Neo4. HVTH: Nguyễn Thành Đệ Trang: 1 Báo cáo chuyên đề cơ sở dữ liệu nâng cao Chương 3.Framework Java API: Các khái niệm cơ bản để duyệt đồ thị bằng Java API. Chương 4. Ví dụ về mồ hình đồ thị và duyệt đồ thị: Chương này có ta các ví dụ về đồ thị và truy vấn dữ liệu thông qua Java API và ngôn ngữ truy vấn đồ thị Cypher. Chương 5. Ngôn ngữ truy vấn đồ thị Cyper: Chương này trình bày văn phạm trong Cypher, các qui định và cách truy vấn đồ thị băng Cypher. Chương 6. Kết luận Em xin chân thành cảm ơn PGS.TS. Đỗ Phúc – Giảng viên môn học cơ sở dữ liệu nâng cao đã truyền đạt những kiến thức vô cùng quý báu, xin chân thành cám ơn ban cố vấn học tập và ban quản trị chương trình đào tạo thạc sĩ Công nghệ thông tin qua mạng của Đại Học Quốc Gia TPHCM đã tạo điều kiện về tài liệu tham khảo để em có thể hoàn thành môn học này. Em xin chân thành cảm ơn Nguyễn Thành Đệ HVTH: Nguyễn Thành Đệ Trang: 2 Báo cáo chuyên đề cơ sở dữ liệu nâng cao CHƯƠNG 1. NEO4J LÀ MỘT CƠ SỞ DỮ LIỆU ĐỒ THỊ *Một cơ sở dữ liệu đồ thị : quản lý một → đồ thị và → cũng quản lý những mối quan hệ → lập chỉ mục Neo4j là một cơ sở dữ liệu mã nguồn mở. Nó được thiết kế dựa trên cơ sở dữ liệu quan hệ. Tối ưu hóa bằng cấu trúc dữ liệu đồ thị thay vì là dữ liệu bảng. Khi làm việc với Neo4j, cơ sở dữ liệu ứng dụng của bạn sẽ được biểu diễn bằng đồ thị, như đồ thị dưới đây: HVTH: Nguyễn Thành Đệ Trang: 3 Báo cáo chuyên đề cơ sở dữ liệu nâng cao Hình 1. Cở sở dữ liệu đồ thị 1.1. So sánh các mô hình cơ sở dữ liệu Cơ sở dữ liệu đồ thị lưu trữ cấu trúc dữ liệu bằng nút ( node) và mối quan hệ(relationship) trong đồ thị. Vậy làm thế nào để ta so sánh với các mô hình cơ sở dữ liệu khác? Bởi vì một đồ thị là một cấu trúc chung, sau đây là một vài so sánh với một vài mô hình cơ sở dữ liệu khác. 1.1.1. Cơ sở đồ thị biến đổi thành RDBMS Xóa bỏ cấu trúc ngăn xếp của bản tin trong cở sở dữ liệu quan hệ nhưng vẫn giữ tất cả các quan hệ, và nó như một đồ thị gồm có cạnh(edges) và nút(node). RDBMS được sử dụng để tối ưu hóa dữ liệu tổng hợp, còn Neo4j được dùng để tối ưu hóa kết nối dữ liệu. HVTH: Nguyễn Thành Đệ Trang: 4 Báo cáo chuyên đề cơ sở dữ liệu nâng cao Hình 2.1. RDBMS Hình 2.2. Cơ sở dữ liệu đồ thị bằng RDBMS 1.1.2. Xây dựng một cơ sở dữ liệu đồ thị như một cách lưu trữ Key-Value Mô hình Key-value là một mô hình rất tốt và phổ biến cho việc tìm kiếm những danh sách khóa hay giá trị. Khi các giá trị được kết nối với nhau, bạn sẽ nhận được một đồ thị. Neo4j cho phép ta tạo cấu trúc dữ liệu đơn giản từ một cấu trúc phức tạp, dữ liệu được kết nối. Hình 2.3. Lưu trữ dạng Key-Value HVTH: Nguyễn Thành Đệ Trang: 5 Báo cáo chuyên đề cơ sở dữ liệu nâng cao Ghi chú: K* đại diện cho khóa(key) và V* đại diện cho giá trị(value). Một vài khóa cũng có thể trỏ đến những khóa khác như trỏ đến giá trị vậy. Hình 2.4. Cơ sở dữ liệu đồ thị lưu dạng Key-value 1.1.3. Cơ sở dữ liệu đồ thị cũng có liên quan đến mô hình Column-Family Cơ sở dữ liệu Column-Family(BigTable) là mô hình cái tiến của key-value, sử dụng từ “families” cho phép nhóm các dòng. Việc lưu trữ trong đồ thị, gia đình(families) trở thành phân cấp, và giữ mối quan hệ giữa các dữ liệu, dữ liệu trở nên tường mình. 1.1.4. Điều hướng cơ sở dữ liệu đồ thị như một lưu trữ tài liệu Cơ sở dữ liệu tài liệu chứa những phân cấp rõ ràng, mô hình dữ liệu đơn giản mà có thể dễ dàng chuyển đổi như mô hình cây. Dĩ nhiên đó là mô hình đồ thị. Tham chiếu đến tài liệu khác(hoặc những phân tử trong tài liệu) như một cây và sẽ có nhiều HVTH: Nguyễn Thành Đệ Trang: 6 Báo cáo chuyên đề cơ sở dữ liệu nâng cao dữ liệu điện điện cho những dữ liệu tương tự nhau. Khi dùng Neo4j, mối quan hệ đó sẽ dễ dàng hơn. Hình 2.5. Lưu trữ dạng tài liệu Ghi chú: D=tài liệu, S=tài liệu con,V=giá trị, D/S = tham chiếu đến tài liệu khác Hình 2.6 Cơ sở dữ liệu đồ thị lưu trữ dạng tài liệu HVTH: Nguyễn Thành Đệ Trang: 7 Báo cáo chuyên đề cơ sở dữ liệu nâng cao CHƯƠNG 2 CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J Chương này sẽ nói rõ mô hình và cách thức hoạt động của Neo4j 2.1. Nút(Nodes) Nền tản của mô hình đồ thị là nút(nodes) và các mối quan hệ(relationships) của chúng. Trong Neo4j, cả hai nút và mối quan hệ của chúng có thể chưa thuộc tính của chúng. Nút thường được đại diện cho thực thể(entities), nhưng phục thuộc vào các mối quan hệ cụ thể mà có thể được sử dụng với mục đích khác nhau. Hình 2.7. Nút Chúng ta bắt đầu với một đồ thị đơn giản là chỉ có một nút. 2.2. Mối quan hệ (Relationships) HVTH: Nguyễn Thành Đệ Trang: 8 Name: Marko Name: Marko Nút Nút Báo cáo chuyên đề cơ sở dữ liệu nâng cao Mối quan hệ giữa các nút là một bộ phận khóa của cơ sở dữ liệu đồ thị. Chúng cho phép ta tìm mối liên hệ của dữ liệu. Cũng giống như nút, mối quan hệ có thể là thuộc tính của thực thể(entities). Hình 2.8. Mối quan hệ của các nút Một quan hệ kết nối 2 nút và đảm bảo phải có nút bắt đầu và nút kết thúc Những mối quan hệ trực tiếp, chúng có thể được xem như là cung đi ra(outgoing) và cung đi vào(incoming) của nút. Ví dụ xem hình sau: Chú ý rằng nút có thể quan hệ với chính nó: HVTH: Nguyễn Thành Đệ Trang: 9 Nút bắt đầu Nút kết thúc Quan hệ Quan hệ đi vào Quan hệ đi ra Báo cáo chuyên đề cơ sở dữ liệu nâng cao Tất cả các mối liên hệ có một kiểu quan hệ(relationship type). Ví dụ sau đây cho thấy việc follow của một mạng xã hội đơn giản với hai kiểu quan hệ(relationship type) Hình 2.9. Mối quan hệ có hướng và kiểu quan hệ Sử dụng mối quan hệ có hướng và kiểu (type) What How người follow Mối quan hệ follows đi ra, độ sâu 1 Người được follow Mối quan hệ follows đi vào, độ sâu 1 Người block Mối quan hệ block đi ra, độ sâu 1 Người được block Mối quan hệ block đi vào, độ sâu 1 Ví dụ sau là một mô hình đơn giản của hệ thông tập tin: HVTH: Nguyễn Thành Đệ Trang: 10 [...]... file.name, dir.name, role.name, readUser.name Và đây là kết quả HVTH: Nguyễn Thành Đệ Trang: 27 Báo cáo chuyên đề cơ sở dữ liệu nâng cao 4.3 Danh sách liên kết Một tính năng mạnh được sử dụng trong cơ sở dữ liệu đồ thị, mà bạn có thể tạo ra cấu trúc cơ sở dữ liệu như là danh sách liên kết Cấu trúc dữ liệu này sử dụng nút đơn giống như danh sách liên kết Liên kết có một mối quan hệ đi tới nút đầu của danh sách... Nguyễn Thành Đệ Trang: 13 Báo cáo chuyên đề cơ sở dữ liệu nâng cao 2.5 Duyệt đồ thị Duyệt đồ thị có nghĩa là viến thăm các nút, những mối quan hệ theo một số luật Hầu như các trường hợp chỉ là một đồ thị con được viến thăm Như bạn đã biết mối quan tâm lớn nhất của đồ thị là nút và mối quan hệ của nút Neo4j cung cấp cho chúng ta API mà cho phép chúng ta duyệt đồ thị theo nhiều phép duyệt khác nhau Chúng... duyệt theo chiều sâu Neo4j cung cấp một framework Java API cho duyệt đồ thị, framework Java API này có thể tham khảo ở địa chỉ www .neo4j. org Ngoài ra cũng có lựa chọn khác ở Neo4j cho phép duyệt đồ thị hoặc truy vấn đồ thị đó là Cypher và Grelin CHƯƠNG 3 FRAMEWORK NEO4J ĐỂ DUYỆT ĐỒ THỊ Gói Neo4j Traversal API cung cấp ở địa chỉ: http://components .neo4j. org /neo4j/ 1.8.M07/apidocs/org /neo4j/ graphdb/traversal/packa... cáo chuyên đề cơ sở dữ liệu nâng cao u2-[:hasRoleInGroup]->hyperEdge2-[:hasGroup]->group, hyperEdge2-[:hasRole]->role RETURN group.name, count(role) ORDER BY group.name ASC Và kết quả như sau: 4.5 Dự vào bạn bè để tìm kiếm những hàng xóm HVTH: Nguyễn Thành Đệ Trang: 35 Báo cáo chuyên đề cơ sở dữ liệu nâng cao Cho đồ thị như hình sau: 4.5.1 Tìm kiếm bạn bè dựa trên nút liên quan Giả sử đồ thị giống như... chuyên đề cơ sở dữ liệu nâng cao START root=node:node_auto_index(name = 'FileRoot') MATCH root-[:contains*0 ]->(parentDir)-[:leaf]->file RETURN file Và kết quả: Những files gì được sở hữu bởi ai? Nếu chúng ta có khái niệm về quyền sở hữu files Chúng ta có thể yêu cầu người ta files thêm vào nút files thông qua mối quan hệ “owns” HVTH: Nguyễn Thành Đệ Trang: 26 Báo cáo chuyên đề cơ sở dữ liệu nâng cao START... có thể là giá trị của một kiểu dữ liệu nào đó hoặc có thể làm mảng của một kiểu dữ liệu nào đó Ví dụ giá trị string, int[] là giá trị hợp lệ của thuộc tính HVTH: Nguyễn Thành Đệ Trang: 11 Báo cáo chuyên đề cơ sở dữ liệu nâng cao Chú ý rằng NULL không là giá trị hợp lệ của giá trị thuộc tính Nulls có thể được thay thế là sự vắng mặt của khóa Hình 2.11 Kiểu dữ liệu đồ thị Bảng kiểu giá trị thuộc tính:... 21 Báo cáo chuyên đề cơ sở dữ liệu nâng cao Found: Irmak at depth: 2 Found: Jale at depth: 3 Trong Cypher: START refNode=node(16) MATCH refNoderoot, p=root . cơ sở dữ liệu nâng cao Hình 1. Cở sở dữ liệu đồ thị 1.1. So sánh các mô hình cơ sở dữ liệu Cơ sở dữ liệu đồ thị lưu trữ cấu trúc dữ liệu bằng nút ( node) và mối quan hệ(relationship) trong đồ. trúc dữ liệu của thông n, các chuyên gia nghiên cứu cơ sở dữ liệu đã cho ra đời một hệ cơ sở dữ liệu mới mà thừa kế từ cơ sở dữ liệu quan hệ, cơ sở dữ liệu dạng key-value, cơ sở dữ liệu tài liệu, . Key-Value, cơ sở dữ liệu tài liệu. Chương 2. Cơ sở dữ liệu đồ thị Neo4j: đi vào chi tiết cơ sở dữ liệu được lưu trữ trên Neo4. HVTH: Nguyễn Thành Đệ Trang: 1 Báo cáo chuyên đề cơ sở dữ liệu nâng cao Chương

Ngày đăng: 10/04/2015, 13:21

Từ khóa liên quan

Mục lục

  • LỜI MỞ ĐẦU

Tài liệu cùng người dùng

Tài liệu liên quan