Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
1,45 MB
Nội dung
Xây dựng mạng xã hội với Neo4j Contents LỜI MỞ ĐẦU PHẦN I TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU ĐỒ THỊ I Khái quát đồ thị II Cơ sở liệu đồ thị .4 III Ứng dụng sở liệu đồ thị PHẦN II NEO4J TRONG VIỆC CÀI ĐẶT MẠNG XÃ HỘI I Neo4j sở liệu đồ thị II Sử dụng Neo4j vào ứng dụng java .11 IV Sử dụng API REST từ Java .13 V Tạo đồ thị với REST API từ Java 13 VI Khởi động server .13 VII Tạo node 14 VIII Thêm thuộc tính 15 IX Thêm quan hệ 16 X Thêm thuộc tính vào quan hệ 17 XI Truy vấn đồ thị 17 XII Framework duyệt đồ thị Java API 20 XIII Giải thuật đồ thị 24 XIV Ví dụ giải thuật đồ thị 24 XV Xây dựng giải thuật đồ thị .26 xvi Tìm tất đường ngắn 26 xvii Tìm đường ngắn node 28 xviii Thực thi giải thuật Dijkstra với trọng lượng mối quan hệ 31 xix Giải thuật Dijkstra với trọng lượng quan hệ khác 33 XX Cài đặt triển khai .34 XXI Server 34 XXII Nhúng vào (embedded) .35 XXIII Cài đặt 35 XXIV Cài đặt ứng dụng 35 XXV Quản trị web .36 PHẦN III : CÀI ĐẶT MẠNG XÃ HỘI VỚI NEO4J - ỨNG DỤNG SOCIAL NETWORK WORKSHOP USING NEO4J 41 I Giới thiệu 41 XXVI Bước – mạng xã hội .41 XXVII Bước – Thêm kiểu quan hệ 45 HVTH: Nguyễn Xuân Nghề Trang: Xây dựng mạng xã hội với Neo4j XXVIII Bước – giới hiệu mục cho mạng xã hội 46 XXIX Giới thiệu domain API .47 XXX Bước – giải thuật đồ thị 48 XXXI Bước – Sự đề cử .49 II Cách cài đặt .49 Junit Test Bước .49 Junit Test Bước .51 Junit test bước 52 Junit test bước 53 Junit test bước 54 Junit test bước 55 KẾT LUẬN 57 TÀI LIỆU THAM KHẢO 59 HVTH: Nguyễn Xuân Nghề Trang: Xây dựng mạng xã hội với Neo4j LỜI MỞ ĐẦU Ngày nay, hầu hết ứng dụng có lượng liệu khổng lồ.Vấn đề lưu trữ xử lý liệu trở nên khó khăn cần quan tâm hơn, liệu linh hoạt thay đổi gần theo thời gian chí thay đổi cấu trúc liệu Việc xử lý đòi hỏi phải linh hoạt không làm gián đoạn ứng dụng.Với hệ thống lưu trữ khơng thể linh động với địi hỏi Người sử dụng muốn có cầu nối, biện pháp để giải vấn đề liệu đồ thị đời Dữ liệu đồ thị cách thức lưu trữ thông tin dạng đồ thị đỉnh cạnh.Với cách thức lưu trữ này, việc quản lý liệu trở nên mềm dẽo dễ dàng việc ứng dụng tri thức vào khối liệu lưu trữ Tiểu luận trình bày khái quát sở liệu đồ thị với Neo4j, đồng thời trình bày trình bày cách chi tiết việc tạo đồ thị Neo4j Java API ứng dụng cài đặt mạng xã hội đơn giản với Neo4j Em xin chân thành cảm ơn PGS.TS Đỗ Phúc – Giảng viên môn học sở liệu nâng cao truyền đạt kiến thức vô quý báu, xin chân thành cám ơn ban cố vấn học tập ban quản trị chương trình đào tạo thạc sĩ Cơng nghệ thơng tin qua mạng Đại Học Quốc Gia TPHCM tạo điều kiện tài liệu tham khảo để em hồn thành mơn học Chân thành cám ơn! Nguyễn Xuân Nghề HVTH: Nguyễn Xuân Nghề Trang: Xây dựng mạng xã hội với Neo4j PHẦN I TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU ĐỒ THỊ I Khái quát đồ thị Đồ thị tập đối tượng gọi đỉnh nối với cạnh.Có loại đồ thị : đồ thị vơ hướng đồ thị có hướng Đồ thị vơ hướng Đồ thị có hướng Cấu trúc đồ thị mở rộng cách gán trọng số cho cạnh đồ thị Có thể sử dụng đồ thị trọng số để biểu diễn khái niệm khác chiều dài đường,thời gian hai nút, độ mạnh liên kết nút, số giao tác kết nối nút thời điểm đó… Nhiều tốn thực tế biểu diễn đồ thị Ví dụ, cấu trúc liên kết website biểu diễn đồ thị có hướng, XML, cấu trúc phân tử hóa học, cấu trúc protein, đối tượng 3D… II Cơ sở liệu đồ thị a Giới thiệu : Cơ sở liệu đồ thị tập đồ thị.Một sở liệu đồ thị có nhiều đồ thị có đồ thị, đồ thị lớn chứa nhiều nút đỉnh ví dụ mạng xã hội HVTH: Nguyễn Xuân Nghề Trang: Xây dựng mạng xã hội với Neo4j b Cách lưu trữ liệu đồ thị : Lưu trữ RDBMS Dữ liệu lưu trữ thành dòng cột table khác nhau.Dữ liệu truy xuất câu lệnh SQL SQL cho phép người sử dụng truy xuất mạnh mẽ liệu đồ thị bao gồm việc trích xuất liệu từ liệu lưu trữ Mặc dù có nhiều điểm mạnh SQL khơng thể hổ trợ thao tác tính tốn, biểu thức phức tạp cách linh hoạt tùy lúc.Ví dụ tính chi phí đường từ đỉnh để đỉnh khác, tìm chi phí thấp để hai nút cho trước… Lưu trữ SBGE Để giải vấn đề DB2 RDBMS mở rộng SQL cách xây dựng hàm cụ thể gọi user-defined functions (UDFs) UDFs sử dụng nơi mà người sử dụng muốn SBGE sử dụng hàm mở rộng DB2 để thao tác liệu đồ thị.Với SBGE dễ dàng quản lý liệu đồ thị thông qua nút, cạnh Với RDBMSs cho phép người sử dụng định nghĩa tìm kiếm đồ thị RDBMSs linh hoạt đồ thị liệu lớn SQL tìm kiếm mà khơng đòi hỏi việc load liệu đồ thị lên nhớ tạm Do đó, SBGE kết hợp SQL để quản lý liệu đồ thị hàm mở rộng để quản lý hàm truy xuất đồ thị Lưu trữ neo4j Neo4j sở liệu tiến Tiểu luận trình bày chi tiết cách sử dụng neo4j để xây dựng mạng xã hội HVTH: Nguyễn Xuân Nghề Trang: Xây dựng mạng xã hội với Neo4j III Ứng dụng sở liệu đồ thị Dữ liệu đồ thị có nhiều ứng dụng thực tế : sinh học (dùng sở liệu đồ thị để lưu trữ cấu trúc genes, protein mơ hình tế bào…), hóa học ( Cấu trúc phân tử chất), lưu trữ ảnh, mạng xã hội, cấu trúc liên kết website… PHẦN II NEO4J TRONG VIỆC CÀI ĐẶT MẠNG XÃ HỘI I Neo4j sở liệu đồ thị Neo4j sở liệu đồ thị mã nguồn mở Làm việc với ứng dụng hiển thị đồ thị Nodes Dạng đồ thị nodes quan hệ Trong neo4j, node quan hệ chứa đựng thuộc tính Node thường dùng để hiển thị thực thể, tùy theo lĩnh vực mối quan hệ mà sử dụng cho mục đích Mối quan hệ Mối quan hệ node phần quan trọng chủ chốt sở liệu đồ thị Chúng cho phép ta tìm kiến liệu liên quan Giống nodes, mối quan hệ có thuộc tính HVTH: Nguyễn Xuân Nghề Trang: Xây dựng mạng xã hội với Neo4j Một liên hệ liên kết nodes, tạo điểm bắt đầu node điểm kết thúc node Những mối quan hệ luôn có hướng, chúng hiển thị mối liên hệ đến node (incoming relationship) mối liên hệ từ node(outgoing relationship) Thuộc tính Cả hai nodes mối liên hệ có thuộc tính Thuộc tính cặp key-value, key chuổi giá trị thuộc tính chuỗi, integer mảng integer… HVTH: Nguyễn Xuân Nghề Trang: Xây dựng mạng xã hội với Neo4j Đường dẫn Một đường dẫn nhiều nodes với mối quan hệ liên kết với nhau, hiển thị thực câu truy vấn kết duyệt đồ thị Duyệt đồ thị HVTH: Nguyễn Xuân Nghề Trang: Xây dựng mạng xã hội với Neo4j Duyệt đồ thị nghĩa duyệt qua nodes đồ thị theo mối quan hệ với luật có sẳng Trong hầu hết trường hợp có đồ thị duyệt qua Neo4j có traversal API giúp xác định luật để duyệt đồ thị Ở mức độ ta có duyệt theo chiều rộng duyệt theo chiều sâu Mơ hình mạng xã hội Mạng xã hội(được biết đồ thị xã hội web) thực tế mơ hình đồ thị Ví dụ trình bày mơ hình mạng xã hội đơn giản có chứa thơng tin người bạn kết nối với theo dõi trạng thái(status) Mơ hình mạng xã hội đơn giản Mơ hình mạng xã hội tương đối đơn giản: persons với tên status cập nhật dạng văn text Những thực thể liên kết với mối quan hệ xác định Person: • Friend: person friend hai người khác • Status: person liên kết với status cập nhật gần StatusUpdate: • next: status chuỗi status, status post lên trước status HVTH: Nguyễn Xuân Nghề Trang: Xây dựng mạng xã hội với Neo4j Thực thể status graph Danh sách StatusUpdate cho person danh sách liên kết Đỉnh danh sách (những status gần nhất) tìm thấy từ status theo sau Mỏi StatusUpdate theo sau liên kết next Dưới ví dụ với Andreas Kollegger làm việc buổi sang: Để đọc status cập nhật, tạo traversal sau: TraversalDescription traversal = Traversal.description() depthFirst() relationships( NEXT ); Luồng hoạt động Khi có bạn, họ có status, muốn đọc status người bạn theo trình tự thời gian trước Thực điều qua bước sau đây: 1.thu thập tất status bạn cập nhật vào danh sách, status gần lên đầu 2.sắp xếp danh sách 3.trả phần tử danh sách 4.nếu phần khơng có giá trị, xóa danh sách lấy phần tử 5.trở lại bước khơng cịn phần tử danh sách Code sau: PositionedIterator first = statuses.get(0); HVTH: Nguyễn Xuân Nghề Trang: 10 Xây dựng mạng xã hội với Neo4j (me) -> (Apoc,7) (me) -> (Dozer,9) (me) -> (Tank,22) (me) -> (Keys,32) (me) -> (Zion,30) (me) -> (The One,47) (me) -> (The Truth,44) (me) Mining, Indexing and Searching Graph Databases < The Neo4j Manual v1.8.M06, by The Neo4j Team neo4j.org www.neotechnology.com http://www.neotechnology.com/