PHÂN tán cơ sở dữ LIỆU đồ THỊ TRÊN NEO4J

121 469 2
PHÂN tán cơ sở dữ LIỆU đồ THỊ TRÊN 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

ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN  NGUYỄN DUY TÂN PHÂN TÁN CƠ SỞ DỮ LIỆU ĐỒ THỊ TRÊN NEO4J LUẬN VĂN THẠC SĨ NGÀNH KHOA HỌC MÁY TÍNH Mã số: 60 48 01 01 NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Ngô Thanh Hùng TP HỒ CHÍ MINH – NĂM 2017 LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu thân tơi thực Các nghiên cứu luận văn dựa tổng hợp lý thuyết, hiểu biết thực tế, không chép chưa công bố công trình nghiên cứu trước Tác giả Nguyễn Duy Tân LỜI CẢM ƠN Trước hết, xin gửi lời cảm ơn chân thành sâu sắc đến TS Ngô Thanh Hùng, người Thầy nhiệt tình hướng dẫn hỗ trợ để tơi hồn thành luận văn Cho phép gửi lời cảm ơn đến tất Thầy Cô giảng dạy suốt thời gian qua, Thầy Cơ Phòng Đào tạo Sau Đại học tận tâm, tạo điều kiện tốt cho học tập Tôi xin gửi lời cảm ơn đến tất anh chị bạn Khóa – Ngành Khoa học Máy tính ln hỗ trợ q trình học tập Cuối cùng, tơi xin cảm ơn gia đình, người ủng hộ động viên để yên tâm học tập, nghiên cứu hoàn thành luận văn Mục lục LỜI CAM ĐOAN LỜI CẢM ƠN Danh mục kí hiệu chữ viết tắt Danh mục bảng Danh mục hình vẽ, đồ thị MỞ ĐẦU 10 Chương TỔNG QUAN 12 1.1 Các cơng trình nghiên cứu liên quan 12 1.2 Mục tiêu đề tài 19 1.3 Nội dung nghiên cứu 19 1.4 Phương pháp nghiên cứu 19 Chương CƠ SỞ LÝ THUYẾT 20 2.1 Cơ sở liệu đồ thị 20 2.2 Đại số quan hệ 22 2.3 Cơ sở liệu phân tán 23 2.3.1 Cơ sở liệu phân tán 23 2.3.2 Các chiến lược phân tán 25 2.3.3 Phương pháp thiết kế sở liệu phân tán 26 2.3.4 Phân mảnh liệu 28 2.4 Xử lý truy vấn phân tán 30 2.5 Phân mảnh ngang, phân mảnh dọc, phân mảnh hỗn hợp sở liệu đồ thị 31 2.5.1 Phân mảnh ngang sở liệu đồ thị 31 2.5.2 Phân mảnh dọc sở liệu đồ thị 31 2.5.3 Phân mảnh hỗn hợp sở liệu đồ thị 32 Chương KIẾN TRÚC PHÂN MẢNH VÀ XỬ LÝ TRUY VẤN PHÂN TÁN 33 3.1 Kiến trúc phân mảnh 33 3.1.1 Đề xuất kiến trúc phân mảnh 33 3.1.2 Ví dụ minh họa 36 3.2 Module xử lý truy vấn phân tán 39 3.2.1 Ý tưởng thuật toán 39 3.2.2 Mã giả chi tiết thuật toán 40 3.2.3 Cách thức hoạt động module xử lý truy vấn phân tán 41 3.2.4 Thuật toán viết lại truy vấn tổng hợp kết trả 43 3.2.5 Tối ưu hóa câu truy vấn 52 Chương CÀI ĐẶT VÀ THỰC NGHIỆM 53 4.1 Cài đặt 53 4.2 Thực nghiệm 57 4.3 Áp dụng vào toán thực tế 58 4.3.1 Lý phân tán 59 4.3.2 Phân chia phân mảnh 59 4.3.3 Chứng minh việc xử lý loại câu truy vấn 63 KẾT LUẬN 70 TÀI LIỆU THAM KHẢO 72 PHỤC LỤC 74 Danh mục kí hiệu chữ viết tắt - ACID: Atomicity, Consistency, Isolation, Durability - API: Application Programming Interface - CSDL: Cơ sở liệu - DBMS: Database management system - DCCA: Dynamic Cut-Cluster Algorithm - DiDiC: Distributed Diffusive Clustering - HTTP: HyperText Transfer Protocol - LAN: Local Area Network - IP: Internet Protocol - NoSQL: Not only SQL - WAN: Wide Area Network Danh mục bảng Bảng 4.1 Số lượng thực nghiệm mẫu truy vấn 58 Bảng 4.2 Danh sách hàm xử lý mạng xã hội sức khỏe 64 Bảng 4.3 Chứng minh việc xử lý loại câu truy vấn mạng sức khỏe 65 Danh mục hình vẽ, đồ thị Hình 2.1 Minh họa sở liệu đồ thị 21 Hình 2.2 Sơ đồ thiết kế tổng thể 26 Hình 2.3 Sơ đồ phân lớp chung cho xử lý truy vấn phân tán 31 Hình 3.1 Ví dụ sở liệu đồ thị Movie 37 Hình 3.2 Ví dụ nút mạng chứa phân mảnh dọc sở liệu đồ thị Movie 38 Hình 3.3 Sơ đồ cách thức hoạt động module xử lý truy vấn phân tán 42 Hình 4.1 Các thành phần module xử lý truy vấn phân tán 54 Hình 4.2 Sơ đồ tương tác thành phần module xử lý truy vấn phân tán 55 Hình 4.3 Giao diện kết trả sau thực thi truy vấn sở liệu phân tán 56 Hình 4.4 Giao diện bước thực thi truy vấn 56 Hình 4.5 Giao diện kết trả sau thực thi truy vấn sở liệu không phân tán 57 MỞ ĐẦU Ngày nay, Internet diện khắp nơi sống trở thành phần thiết yếu cho sống ngày người Internet thay đổi cách trao đổi thông tin, liên lạc người thư viết tay email thay thế, cách trao đổi, trò chuyện người có nhiều thay đổi Mạng xã hội công cụ góp phần thay đổi khơng nhỏ đến cách giao tiếp người Nó giúp người khắp nơi giới có kết thể kết bạn, trò chuyện, chia sẻ hình ảnh, video trao đổi với cách dễ dàng Do ngày phổ biến nên ứng dụng mạng xã hội phải đối mặt với việc tổ chức lưu trữ liệu Để đáp ứng cho hàng tỷ người dùng, việc tổ chức lưu trữ liệu thách thức không nhỏ Do mạng xã hội đồ thị lớn, bao gồm nhiều nút liên kết nhiều quan hệ Do đó, sở liệu lưu trữ mạng xã hội thường sở liệu đồ thị Cơ sở liệu lưu trữ thông tin dạng nút, nút liên kết với thông qua quan hệ Cả nút quan hệ có tập thuộc tính riêng Việc phân tán sở liệu xử lý truy vấn phân tán yêu cầu cần thiết mạng xã hội Xuất phát từ yêu cầu đó, luận văn lựa chọn đề tài “Phân tán sở liệu đồ thị Neo4j” Mục đích đề tài tiến hành phân mảnh dọc sở liệu đồ thị Neo4j, phân tích xử lý mẫu truy vấn phổ biến liên quan đến phân mảnh Đối tượng nghiên cứu hệ quản trị sở liệu phân tán, phân mảnh sở liệu thuật toán xử lý truy vấn phân mảnh Phạm vi nghiên cứu giới hạn loại phân mảnh dọc, với số mẫu câu truy vấn ngôn ngữ Cypher hệ quản trị sở liệu đồ thị Neo4j Ý nghĩa khoa học thực tiễn: sở liệu đồ thị loại hình sở liệu mới, phát triển vài năm gần dẫn đến hình thành phát triển mạnh mẽ mạng xã hội Do nên kĩ thuật phát triển chúng ít, chưa phong phú Một số kĩ thuật cần thiết liên quan đến sở liệu đồ thị như: phân mảnh đồ thị, tìm đường đi, xử lý đồ thị lớn,…Trong kĩ thuật quan trọng phổ biến sở liệu quan hệ việc phân tán sở liệu xử lý truy vấn Do đặc điểm sở liệu đồ thị bao gồm nút mối quan hệ, 10 nút có thuộc tính (thuộc tính thể theo cặp key-value), mối quan hệ đặt tên đặt trực tiếp vào đồ thị ln có nút đầu nút cuối, mối quan hệ bao gồm thuộc tính Do đặc điểm nên việc phân tán cở sở liệu đồ thị xử lý phân truy vấn kĩ thuật khó Hiện nay, có số sản phẩm thương mại hỗ trợ việc chưa phổ biến, chưa áp dụng rộng rãi Vì vấn đề cần nghiên cứu, phát triển áp dụng Ngoài phần mở đầu kết luận, luận văn chia làm chương, nội dung cụ thể sau: Chương Tổng quan Chương giới thiệu sơ lược cơng trình liên quan cơng bố nước Đồng thời giới thiệu mục tiêu, nội dung phương pháp nghiên cứu đề tài Chương Cơ sở lý thuyết Chương đề cập đến số sở lý thuyết cần thiết cho việc thiết kế hệ thống phân tán xử lý truy vấn như: sở liệu đồ thị, đại số quan hệ, sở liệu phân tán, xử lý truy vấn phân tán Chương Kiến trúc phân mảnh xử lý truy vấn phân tán Nội dung chương bao gồm kiến trúc phân mảnh đề xuất module xử lý truy vấn phân tán Chương Cài đặt thực nghiệm Trình bày việc cài đặt chương trình xử lý truy vấn phân tán hệ quản trị sở liệu đồ thị Neo4j, kết việc thực nghiệm áp dụng vào toán thực tế 11 - Sau phân mảnh đồ thị đảm bảo việc tìm đường trước sau phân tán - Một ứng dụng đặc trưng đồ thị tìm đường đồ thị, tiêu biểu việc tìm đường đỉnh liên thông Mục tiêu, đối tượng phạm vi Trong đề tài nghiên cứu tiêu chí phân tán giải số vấn đề liên quan đến phân tán thuật toán phân tán, lưu trữ mảnh, thông tin meta, truy vấn sở liệu đồ thị phân tán Cụ thể tốn tìm đỉnh liên thơng, toán đồ thị Việc phân tán dự định tiến hành phân làm hai mảnh máy chủ Phân vùng chứa toàn sở liệu đồ thị đĩa cứng Phân vùng hai phân vùng chứa tất thông tin, liệu quen thuộc người dùng họ đăng nhập Ví dụ thơng tin cá nhân, mối quan hệ,… Nội dung, phương pháp - Thiết kế mơ hình cho việc lưu trữ, truy vấn sở liệu đồ thị - Cài đặt việc phân tán sở liệu đồ thị hai máy - Kiểm tra kết truy vấn trước sau phân tán từ sở liệu đồ thị thành hai sở liệu đồ thị - Tìm đỉnh liên thơng đồ thị - Một số thuật toán phân vùng đồ thị như: Kernighan–Lin, Fiduccia-Mattheyse, METIS Kế hoạch bố trí thời gian NC - Gặp giáo viên hướng dẫn lần/tuần trình bày cơng việc thực tuần nhận công việc, yêu cầu cho tuần - Sau tháng bắt đầu thực đề tài, bắt đầu viết tổng quát thảo luận văn hồn thành hết thời gian thực - Cụ thể sau: Nội dung Thời gian dự kiến Khái quát việc phân tán sở liệu đồ thị tháng công việc cụ thể liên quan Nghiên cứu mơ hình cho việc lưu trữ, truy vấn tháng sở liệu đồ thị tiến hành phân tán Nghiên cứu lý thuyết phân tán lựa chọn tháng phương pháp phù hợp với sở liệu đồ thị theo mơ hình thiết kế Cách truy vấn, tìm đường sau phân tán Xây dựng mơ hình phân tán sở liệu đồ thị tháng Thực nghiệm, đánh giá Viết tổng quát thảo tháng luận văn, báo khoa học Hoàn thành luận văn, báo khoa học tháng 9.Tài liệu tham khảo [1] Li-Yung Ho, Jan-Jan Wu, Pangfeng Liu “Distributed Graph Database for LargeScale Social Computing” Cloud Computing (CLOUD), 2012 IEEE 5th International Conference on 24-29 June 2012 [2] Kai Zeng, Jiacheng Yang, Haixun Wang, Bin Shao, Zhongyuan Wang “A Distributed Graph Engine for Web Scale RDF Data”, ISSN: 2150-8097, 2013 [3] Renzo Angles, “A Comparison of Current Graph Database Models”, Data Engineering Workshops (ICDEW), 2012 IEEE 28th International Conference on 1-5 April 2012 [4] Justin J Miller “Graph Database Applications and Concepts with Neo4j” Proceedings of the Southern Association for Information Systems Conference, Atlanta, GA, USA March 23rd-24th, 2013 [5]Arnau Prat-Pérez, David Dominguez-Sal, Josep-Lluis Larriba-Pey, Pedro Trancoso “Producer-Consumer: The Programming Model for Future ManyCore Processors” [6] Norbert Mart´ınez-Bazan, Sergio G´omez-Villamor, Francesc Escal´e-Claveras “DEX: A High Performance Graph Database Management System” Data Engineering Workshops (ICDEW), 2011 IEEE 27th International Conference [7] Ian Robinson, Jim Webber, and Emil Eifrem “Graph database” Copyright 2013 Neo Technology, Inc All rights reserved Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472 [8] Renzo Angles, Claudio Gutierrez “Survey of graph database models”, Journal ACM Computing Surveys (CSUR) Volume 40 Issue 1, February 2008 [9] Wenzhuo Yang, Huan Xu “A Divide and Conquer Framework for Distributed Graph Clustering” Proceedings of the 32nd International Conference on Machine Learning (ICML-15) [10] David Dominguez-Sal, Norbert Martinez-Bazan , Victor Muntes-Mulero, Pere Baleta, Josep Lluis Larriba-Pey “A Discussion on the Design of Graph Database Benchmarks”, 2012 [11] Hongcheng Huang, Ziyu Dong “Research on architecture and query performance based on distributed graph database Neo4j”, Consumer Electronics, Communications and Networks (CECNet), 2013 3rd International Conference on 2022 Nov 2013 [12] “Neo4j,” http://neo4j.org/ [13] “METIS” http://glaros.dtc.umn.edu/gkhome/metis/metis/overview/ [14] Daniel Nicoara, Shahin Kamali, Khuzaima Daudjee, Lei Chen “Hermes: Dynamic Partitioning for Distributed Social Network Graph Databases”, 2015 [15] Lu Wang, Yanghua Xiao, Bin Shao, and Haixun Wang “How to Partition a Billion-Node Graph”, 2013 NGƯỜI HƯỚNG DẪN (Họ tên chữ ký) TS Ngô Thanh Hùng TP HCM, ngày 20 tháng 01 năm 2016 HỌC VIÊN KÝ TÊN (Họ tên chữ ký) Nguyễn Duy Tân Kỷ yếu Hội nghị Quốc gia lần thứ X Nghiên cứu ứng dụng Công Nghệ thông tin (FAIR); Đà Nẵng, ngày 17-18/08/2017 XÂY DỰNG MODULE XỬ LÝ TRUY VẤN PHÂN TÁN TRÊN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J Nguyễn Duy Tân 1, Ngô Thanh Hùng 2 Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh Trường Đại học Cơng nghệ Thơng tin, Đại học Quốc gia Thành phố Hồ Chí Minh duytan.khmt@gmail.com, hungnt@uit.edu.vn TĨM TẮT — Bài báo trình bày kiến trúc phân tán module xử lý truy vấn phân tán hệ quản trị sở liệu đồ thị Neo4j Kiến trúc áp dụng phân mảnh dọc sở liệu đồ thị Neo4j, phân mảnh đặt máy tính kết nối với thông qua giao thức HTTP Module thiết kế nhằm xử lý số mẫu truy vấn theo ngôn ngữ Cypher dựa sở đại số quan hệ Module ứng dụng cho số tốn thực tế phát triển thêm để tối ưu xử lý nhiều mẫu câu truy vấn Từ khóa — Neo4j, Cypher, phân mảnh dọc sở liệu đồ thị, xử lý truy vấn phân tán sở liệu đồ thị I GIỚI THIỆU Neo4j hệ thống quản lý sở liệu đồ thị phát triển Neo Technology Inc sở liệu đồ thị phổ biến theo DB-Engines (db-engines.com) Nó sở liệu giao dịch đầy đủ (ACID) chứa liệu cấu trúc dạng đồ thị bao gồm nút mối quan hệ chúng Trong Neo4j, thứ lưu trữ dạng nút, cạnh (quan hệ), thuộc tính Mỗi nút cạnh có số lượng khơng giới hạn thuộc tính Cả nút cạnh gắn nhãn Nhãn sử dụng để thu hẹp việc tìm kiếm Cypher ngơn ngữ truy vấn sở liệu đồ thị phổ biến Neo4j cho phép truy vấn cập nhật đồ thị cách hiệu Cypher ngôn ngữ tương đối đơn giản mạnh mẽ Cú pháp Cypher cung cấp cách trực quan để so khớp mẫu cần tìm dựa vào thơng tin nút mối quan hệ Các truy vấn sở liệu phức tạp dễ dàng thể thông qua Cypher Đối với sở liệu đồ thị chưa phân tán tất quan hệ nằm máy chủ với thông tin nút làm ảnh hưởng đến việc quản lý tính riêng tư bảo mật liệu Việc phân mảnh sở liệu đồ thị, giống việc phân mảnh sở liệu quan hệ, mang lại nhiều lợi ích như: - giúp phân quyền bảo mật dễ nhờ áp dụng sách bảo mật, phân quyền mảnh cách riêng biệt; - giúp nâng cao tính sẵn sàng hệ thống nhờ tránh trường hợp “đơn điểm gây lỗi” (single point of failure); - số trường hợp giảm thời gian truy vấn nhờ giảm dung lượng phân mảnh hay nói cách khác nhờ tăng tỉ lệ truy xuất thành công từ nhớ; Do phiên miễn phí Neo4j chưa hỗ trợ phân tán nên việc nghiên cứu phát triển hệ thống phân tán sở liệu đồ thị Neo4j cần thiết Hiện có nhiều cơng trình liên quan đến việc phân tán sở liệu đồ thị Neo4j Trong báo [2] nhóm tác giả xây dựng thành phần mở rộng sở liệu đồ thị Neo4j, cho phép di chuyển liệu từ xa phục vụ cho câu truy vấn nhằm tối ưu hóa thời gian truy vấn Bên cạnh đó, báo giới thiệu thuật tốn phân vùng động sử dụng tài nguyên đồng thời tăng hiệu suất lên so với cách phân vùng ngẫu nhiên Bài báo [3] xem xét phương pháp phân vùng sở liệu đồ thị theo cạnh, đỉnh thuộc tính Phương pháp phân vùng theo đỉnh áp dụng việc xử lý truy vấn liệu máy chủ chưa trình bày Trong [4, 5, 6] đề cập đến số thuật toán phân tán đồ thị áp dụng cụ thể để phân chia liệu mạng xã hội thực tế như: Facebook, Twitter,… Như biết sở liệu quan hệ có ba phương pháp phân mảnh phương pháp phân mảnh ngang, phương pháp phân mảnh dọc phương pháp lai.Trong cơng trình mà chúng tơi tổng quan tập trung vào việc phân tán đồ thị theo đỉnh – phương pháp phân mảnh ngang sở liệu đồ thị Nhận thấy phương pháp phân mảnh dọc sở liệu đồ thị mang lại lợi ích tương tự lợi ích mà mang lại cho sở liệu quan hệ nên nghiên cứu chúng tơi trình bày hình thức phân mảnh dọc sở liệu đồ thị - phân mảnh quan hệ Chúng tơi trình bày kiến trúc phân mảnh dọc module xử lý truy vấn phân tán hệ quản trị sở liệu đồ thị Neo4j ngôn ngữ Cypher Cấu trúc báo gồm phần, phần (I) – giới thiệu, phần (II) trình bày kiến trúc phân mảnh dọc sở liệu đồ thị, phần (III) phân tích module xử lý truy vấn phân tán, phần (IV) phần cài đặt thực nghiệm, phần (V) phần kết luận phần cuối (VI) tài liệu tham khảo II KIẾN TRÚC PHÂN TÁN A Đề xuất kiến trúc Trong báo này, kiến trúc phân mảnh dọc thực sở phân tán quan hệ sở liệu đồ thị Mỗi phân mảnh bao gồm số quan hệ sở liệu đồ thị ban đầu với tồn thơng tin nút có liên quan đến nhiều số quan hệ Các quan hệ không trùng lắp phân mảnh Mỗi phân mảnh đặt thư mục khác máy tính khác (các nút mạng) liên kết với qua giao thức HTTP, giống giao thức sử dụng API Neo4j XÂY DỰNG MODULE XỬ LÝ TRUY VẤN PHÂN TÁN TRÊN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J Trên tất nút mạng chứa module xử lý truy vấn phân tán Metadata mô tả kiến trúc phân mảnh lưu trữ tất nút mạng bao gồm thông tin sau:  Thơng tin phân mảnh gồm vị trí phân mảnh quan hệ kèm PARTITION = Vị trí phân mảnh thứ # [Quan hệ]{Thuộc tính quan hệ}; Vị trí phân mảnh thứ hai # [Quan hệ]{Thuộc tính quan hệ};…; Thơng tin phân mảnh tách biệt dấu chấm phẩy (;) Vị trí phân mảnh, mô tả IP nút mạng đường dẫn đến thư mục chứa sở liệu Neo4j, quan hệ cách dấu thăng (#) Mỗi quan hệ đặt ngoặc vng ([]), thuộc tính quan hệ đặt ngoặc nhọn ({}) Trường hợp phân mảnh có nhiều quan hệ quan hệ tách biệt dấu gạch nối (-) Trong số đó, thơng tin phân mảnh nút mạng (phân mảnh local) mô tả đường dẫn đến thư mục chứa sở liệu Neo4j  Thông tin loại nút thuộc tính NODE = (Loại nút 1){Thuộc tính loại nút 1}; (Loại nút 2){Thuộc tính loại nút 2}; (Loại nút 3){Thuộc tính loại nút 3}; …; Các loại nút tách biệt dấu chấm phẩy (;) Tên loại nút đặt dấu ngoặc đơn (), thuộc tính nút đặt dấu ngoặc nhọn ({})  Thông tin quan hệ dùng mô tả quan hệ loại nút kèm RELATIONSHIP = (Loại nút 1)-[:Quan hệ 1]->(Loại nút 2); (Loại nút 3)-[:Quan hệ 2]->(Loại nút 3); …; Mỗi quan hệ gắn với hai loại nút cố định Các quan hệ tách biệt dấu chấm phẩy (;) Kiến trúc phân mảnh dọc đề xuất mở rộng việc cho phép tập quan hệ phân mảnh khác có phần giao để tăng tính sẵn sàng hệ thống tăng khả tính tốn song song (giúp giảm thời gian xử lý truy vấn) Tuy nhiên báo chưa tập trung vào vấn đề tối ưu truy vấn phân tán Mơ hình module xử lý đề xuất dạng Bên cạnh vấn đề bảo mật chưa nghiên cứu để đưa vào thiết kế B Ví dụ minh họa Trong báo này, câu truy vấn ví dụ phần kiểm chứng mơ tả cho trường hợp phân mảnh sở liệu đồ thị Neo4j sau Cơ sở liệu đồ thị Movie ban đầu gồm:   Thông tin nút: gồm hai loại nút o Person: gồm thuộc tính như: tên, ngày sinh, nơi sinh,… o Movie: gồm thuộc tính như: tựa đề, nội dung, năm phát hành, ngôn ngữ,… Thông tin quan hệ: gồm ba quan hệ o ACTS_IN: liên kết nút Person Movie Dùng để định diễn viên phim Đây quan hệ có hướng với đỉnh đầu nút Person, đỉnh cuối nút Movie o DIRECTED: liên kết nút Person Movie Dùng để định đạo diễn phim Đây quan hệ có hướng với đỉnh đầu nút Person, đỉnh cuối nút Movie o FRIEND: liên kết nút Person Person Dùng để định mối quan hệ bạn bè hai người Đây quan hệ có hướng với đỉnh đầu nút Person, đỉnh cuối nút Person Cơ sở liệu phân thành phân mảnh dựa quan hệ ACTS_IN, DIRECTED FRIEND Phân mảnh chứa toàn quan hệ ACTS_IN toàn nút Person, nút Movie Phân mảnh chứa toàn quan hệ DIRECTED toàn nút Person, nút Movie Phân mảnh chứa toàn quan hệ FRIEND toàn nút Person (phân mảnh không chứa nút liệu Movie quan hệ FRIEND khơng liên quan đến nút Movie) Hình Ví dụ nút mạng chứa phân mảnh dọc sở liệu đồ thị Movie Mỗi phân mảnh đặt lên nút mạng hình 1, đó: Các thơng tin metadata giống nút mạng bao gồm thông tin: NODE = (Movie){id,studio,releaseDate, description, language, title, trailer, imageUrl, genre}; Nguyễn Duy Tân, Ngô Thanh Hùng (Person){id, birthday, birthplace, name, biography}; RELATIONSHIP = (Person)-[:ACTS_IN]->(Movie); (Person)-[:DIRECTED]->(Movie); (Person)-[:FRIEND]->(Person); Và metadata khác thông tin phân mảnh sau:  Nút mạng PC1 chứa phân mảnh với thông tin metadata sau:  PARTITION = D:\Neo4j\\Movie1\graph.db#[ACTS_IN]{}; \\192.168.1.11\Neo4j\Movie2\graph.db#[DIRECTED]{}; \\192.168.1.12\Neo4j\Movie3\graph.db#[FRIEND]{}; Nút mạng PC2 chứa phân mảnh với thông tin metadata sau:  PARTITION = \\192.168.1.10\Neo4j\\Movie1\graph.db#[ACTS_IN]{};D:\Neo4j\Movie2\graph.db#[DIRECTED]{}; \\192.168.1.12\Neo4j\Movie3\graph.db#[FRIEND]{}; Và nút mạng PC3 chứa phân mảnh với thông tin metadata sau: PARTITION = \\192.168.1.10\Neo4j\\Movie1\graph.db#[ACTS_IN]{}; \\192.168.1.11\Neo4j\Movie2\graph.db#[DIRECTED]{}; D:\Neo4j\Movie3\graph.db#[FRIEND]{}; III MODULE XỬ LÝ TRUY VẤN PHÂN TÁN A Ý tưởng thuật tốn Module xử lý truy vấn phân tán có nhiệm vụ tiếp nhận yêu cầu truy vấn, viết ngôn ngữ truy vấn Cypher, từ nút mạng nội bộ, thực phân tích truy vấn thực xử lý để trả lời truy vấn giống chưa có phân mảnh Để giải việc chúng tơi đề xuất thuật tốn gồm bước bản: B1: Phân tích câu truy vấn gốc thành tập truy vấn (cũng viết ngơn ngữ Cypher), truy vấn liên quan đến quan hệ truy vấn bao gồm tất điều kiện liên quan đến quan hệ Gọi T(r1, r2, …, rm) truy vấn gốc liên quan đến m quan hệ khác đôi r1, r2, …, rm, với ri thuộc tập tất quan hệ sở liệu đồ thị xét Truy vấn T tách thành n truy vấn con: T1(r1), T2(r2), …, Tm(rm) truy vấn liên quan đến quan hệ r1, r2, …, rm tương ứng B2: Gửi truy vấn đến nút mạng chứa quan hệ tương ứng, gọi thực thi thông qua GraphDatabaseService API Neo4j nút mạng lấy kết Mỗi truy vấn Ti(ri) trả kết O(Ti) B3: Tổng hợp kết O(Ti) tạo kết O(T) cho truy vấn gốc T Bước bước giai đoạn xử lý phức tạp, phụ thuộc lớn vào dạng câu truy vấn gốc Trong khuôn khổ báo nghiên cứu giải dạng mẫu câu truy vấn phổ biến Cypher dựa sở phép toán đại số quan hệ hợp, giao, kết, … Cách giải dạng câu truy vấn chúng tơi trình bày chi tiết phần 3.3 Việc thực thuật tốn khn khổ báo số hạn chế sau:  Ở bước 1, chưa xem xét đến việc tối ưu xử lý truy vấn cách cân nhắc việc gộp số quan hệ, mà tất quan hệ chứa phân mảnh đó, vào truy vấn Việc giúp giảm số truy vấn cần xử lý bước 2, đồng thời giúp giảm khối lượng xử lý để tạo kết cuối O bước Nhờ giảm đáng kể thời gian xử lý truy vấn  Ở bước 2, chọn máy chứa quan hệ cần tìm chưa tính đến việc lựa chọn máy số máy chứa quan hệ (nếu có trùng lắp) để thực song song nhằm giảm thời gian xử lý truy vấn Những hạn chế hướng đến nghiên cứu B Mã giả chi tiết thuật toán Đầu vào: truy vấn từ người dùng Đầu ra: kết thực thi câu truy vấn Bước 1: If Truy vấn hợp lệ Đi tiếp Bước Else Thông báo lỗi Bước 2: Danh sách mệnh đề = Phân rã truy vấn(Truy vấn) Danh sách quan hệ = Lấy quan hệ(Truy vấn) Bước 3: If Danh sách quan hệ > Danh sách truy vấn = Viết lại truy vấn(Truy vấn,Danh sách mệnh đề, Danh sách quan hệ) Else XÂY DỰNG MODULE XỬ LÝ TRUY VẤN PHÂN TÁN TRÊN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J Thêm Truy vấn vào Danh sách truy vấn Bước 4: If Danh sách truy vấn > Danh sách kết = Thực thi song song(Danh sách truy vấn mới) Else Kết = Thực thi truy vấn(Danh sách truy vấn mới) Bước 5: If Danh sách truy vấn > Kết = Tổng hợp liệu(Danh sách kết quả) Bước 6: Xuất kết C Thuật toán viết lại truy vấn tổng hợp kết trả Trong ngôn ngữ truy vấn Cypher, liệu nút đặt cặp dấu ngoặc đơn (n) Dữ liệu quan hệ đặt cặp dấu ngoặc vuông, trước tên quan hệ có dấu hai chấm [:r] Cặp dấu gạch ngang lớn hơn/ nhỏ để liên kết nút quan hệ (n1) - [:r] -> (n2) (n1) (n2) RETURN n1, n2 Ý nghĩa truy vấn tìm tất cặp nút (n1, n2) có quan hệ r1, r2, …, rm, quan hệ khác đôi Truy vấn dạng viết lại m truy vấn sau: T1(r1): MATCH (n1) - [:r1] -> (n2) RETURN n1, n2 T2(r2): MATCH (n1) - [:r2] -> (n2) RETURN n1, n2 …… Tm(rm): MATCH (n1) - [:rm] -> (n2) RETURN n1, n2 Các truy vấn thực thi kết cuối hợp kết truy vấn O(T) = O(T1)ᴗO(T2) ᴗ…ᴗO(Tm) Ví dụ: MATCH (n) - [r:ACTS_IN | :DIRECTED] -> (m) RETURN n.name, type(r) as relationship, m.title, m.language; Câu truy vấn tìm tất người tham gia diễn xuất làm đạo diễn cho phim Truy vấn viết lại thành hai truy vấn Một truy vấn tìm tất người tham gia diễn xuất phim T1(ACTS_IN): MATCH (n)-[r:ACTS_IN]->(m) RETURN n.name, type(r) as relationship, m.title, m.language Và truy vấn thứ hai tìm tất người tham gia đạo diễn cho phim T2(DIRECTED): MATCH (n)-[r:DIRECTED]->(m) RETURN n.name, type(r) as relationship, m.title, m.language Kết cuối hợp kết hai câu truy vấn  Dạng thứ hai M1.2: áp dụng cho câu truy vấn nút nhiều nút có quan hệ lúc với nhiều nút khác Đây dạng phổ biến T(r1, r2, …, rk): MATCH (n1) - [:r1] - >(n2) ,(n2) – [:r2] -> (n3) , … , (ni) – [:ri] -> (ni+1) , … , (nm) – [:rm] -> (nm+1) RETURN n1, n2, …, nm+1 Nguyễn Duy Tân, Ngô Thanh Hùng Ý nghĩa câu truy vấn tìm tất m+1 nút (n1, n2, …, nm+1) cho cặp nút ni ni+1 có quan hệ ri với nhau, quan hệ r1, r2, …, rm khác đôi Truy vấn dạng M1.2 viết lại thành m câu truy vấn đơn, câu truy vấn chứa quan hệ sau T1(r1): MATCH (n1) – [:r1] -> (n2) RETURN n1, n2, ID(n2) AS n2ID T2(r2): MATCH (n2) – [:r2] -> (n3) RETURN n2, n3, ID(n2) AS n2ID …… Tm(rm): MATCH (nm) – [:rm] -> (nm+1) RETURN nm, nm+1, ID(ni) AS niID Kết cuối câu truy vấn kết kết câu truy vấn lại với dựa khóa chung chúng: O(T) = O(T1)*n2O(T2)*n3O(T3)*…*nmO(Tm) Ví dụ: Câu truy vấn tìm tất diễn viên đạo diễn phim MATCH (a)-[:ACTS_IN]->(m)(m) RETURN distinct a.name as actor,m.title, ID(m) AS mID truy vấn thứ hai tìm tất người đạo diễn MATCH (m) (m) WHERE NOT((n) - [:DIRECTED] -> (m)) AND n.birthplace = ‘New York’ RETURN n.name, n.birthday, n.birthplace, m.title, m.studio; viết lại thành hai truy vấn, truy vấn thứ tìm tất người đóng vai trò diễn viên sinh New York MATCH (n)-[r:ACTS_IN]->(m) WHERE n.brirthplace = ‘New York’ RETURN n.name,n.birthday, n.birthplace, m.title,m.studio, ID(n) AS nID, ID(m) AS mID truy vấn thứ hai tìm tất người đóng vai trò đạo diễn XÂY DỰNG MODULE XỬ LÝ TRUY VẤN PHÂN TÁN TRÊN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J MATCH (n)-[:DIRECTED]->(m) RETURN ID(n) AS nID,ID(m) AS mID Kết sau hiệu truy vấn thứ với truy vấn thứ hai Mẫu truy vấn lồng khơng có mệnh đề OPTIONAL:  Dạng mẫu M2: [MATCH] … [WITH] … [MATCH] … [WITH] … … [WHERE] [RETURN] [ORDER BY] [SKIP] [LIMIT]      Mô tả: mẫu truy vấn có nhiều cặp mệnh đề [MATCH] [WITH] mệnh đề [RETURN] Các mệnh đề lại [WHERE], [ORDER BY], [SKIP] [LIMIT] tùy biến (sử dụng không sử dụng) Ý nghĩa mẫu truy vấn: dạng mẫu truy vấn lồng, kết tìm mệnh đề [MATCH] tầng xem xét thêm điều kiện truy vấn bổ sung mệnh đề [MATCH] tầng liền tiếp tục mệnh đề [MATCH] tầng cuối Truy vấn viết lại cách biến đổi cặp mệnh đề [MATCH] [WITH] với tùy biến khác thành truy vấn dạng cặp mệnh đề [MATCH] [RETURN] với tùy biến tương ứng Mỗi câu truy vấn thuộc dạng M1.1, M1.2 M1.3 Kết truy vấn ban đầu kết trả truy vấn kết với dựa trường liệu chung Ví dụ: Truy vấn ban đầu, tìm tất người tham gia diễn xuất 10 phim làm đạo diễn phim MATCH (a:Actor)-[:ACTS_IN]->(m:Movie) WITH a, count(m) AS ACTS WHERE ACTS >= 10 WITH a, ACTS MATCH (a:Director)-[:DIRECTED]->(m:Movie) WITH a, ACTS, collect(m.title) AS directed WHERE length(directed) >= RETURN a.name, ACTS, directed ORDER BY length(directed) DESC, ACTS DESC; viết lại thành hai truy vấn, truy vấn thứ tìm tất người làm diễn viên 10 phim MATCH (a:Actor)-[:ACTS_IN]->(m:Movie) WITH a,count(m) AS ACTS WHERE ACTS >= 10 RETURN a,ACTS,ID(a) AS aID Và truy vấn thứ hai tìm tất người làm đạo diễn phim MATCH (a:Director)-[:DIRECTED]->(m:Movie) WITH a,collect(m.title) AS directed WHERE length(directed) >= RETURN a.name,directed,ID(a) AS aID Kết hai câu truy vấn kết lại dựa trường aID Mẫu truy vấn lồng có mệnh đề OPTIONAL:  Dạng mẫu M3: [MATCH] [OPTIONAL MATCH] … [WITH]… [OPTIONAL MATCH] … [WITH]… … [WHERE] [RETURN] [ORDER BY] [SKIP] [LIMIT]   Mô tả: mẫu truy vấn có mệnh đề [MATCH], nhiều cặp mệnh đề ([OPTIONAL MATCH], [WITH]) mệnh đề [RETURN] Các mệnh đề lại [WHERE], [ORDER BY], [SKIP] [LIMIT] không bắt buộc Ý nghĩa câu truy vấn: câu truy vấn lồng, loại nút (tạm gọi loại nút A) kết mệnh đề [MATCH] kết trái (kết phía quan hệ - loại nút này) với loại nút khác (tạm gọi loại nút B) mô tả mệnh đề [OPTIONAL MATCH] Ý nghĩa kết trái trường hợp trường hợp khơng tìm nút B cụ thể để kết (có quan hệ theo mô tả [OPTIONAL MATCH]) với tập nút A tập nút A giữ nguyên kết trả (nếu yêu cầu [WITH]) Có loại nút [WITH] tiếp tục kết trái với loại nút khác cặp Nguyễn Duy Tân, Ngô Thanh Hùng    mệnh đề ([OPTIONAL MATCH], [WITH]) cặp [OPTIONAL MATCH], [WITH] cuối Viết lại truy vấn thực cách tách mệnh đề [MATCH] đầu tiên, cặp mệnh đề [OPTIONAL MATCH] [WITH] Đối với mệnh đề [OPTIONAL MATCH] [WITH] từ khóa [OPTIONAL MATCH] thay thành từ khóa [MATCH], từ khóa [WITH] thay thành [RETURN] Mệnh đề [RETURN] câu truy vấn thêm khóa (ID) ứng với nút chung tất mệnh đề [RETURN] tất câu truy vấn nhằm thực kết liệu lại với Tiếp theo câu truy vấn đơn viết lại dựa dạng mẫu truy vấn đơn M1.1, M1.2, M1.3 mô tả Sau viết lại hồn tất danh sách câu truy vấn đơn Trường hợp mệnh đề [MATCH] không chứa loại quan hệ mệnh đề ghép với truy vấn danh sách truy vấn đơn Giữa mệnh đề [MATCH] câu truy vấn có thêm từ khóa [OPTIONAL] Trường hợp mệnh đề [MATCH] có chứa quan hệ mệnh đề viết lại dựa dạng mẫu truy vấn đơn M1.1, M1.2, M1.3 mô tả Kết viết lại thêm vào danh sách truy vấn đơn để thực thi Kết truy vấn ban đầu: o Trường hợp mệnh đề [MATCH] không chứa quan hệ: kết trả truy vấn ứng với cặp ([OPTIONAL MATCH]) kết trái với kết trả vể truy vấn ứng với cặp ([OPTIONAL MATCH]) thứ hai; kết kết trái với kết trả vể truy vấn ứng với cặp ([OPTIONAL MATCH]) thứ ba; câu truy vấn ứng với cặp ([OPTIONAL MATCH]) cuối Kết cuối kết truy vấn ban đầu o Trường hợp mệnh đề [MATCH] có chứa quan hệ: kết trả câu truy vấn mệnh đề [MATCH] kết lại với dựa trường liệu chung Tiếp theo kết kết trái với tập liệu câu truy vấn lại Ví dụ: Truy vấn ban đầu tìm thơng tin phim có tên “The Matrix” đạo diễn , diễn viên liên quan đến phim có: MATCH (movie:Movie {title: "The Matrix"}) OPTIONAL MATCH (director)-[:DIRECTED]->(movie) WITH movie, COLLECT(director.name) AS directors OPTIONAL MATCH (actor)-[:ACTS_IN]->(movie) WITH movie, COLLECT(actor.name) AS actors, directors RETURN movie.title, actors, directors Sẽ tách thành ba truy vấn con, truy vấn thứ tìm đạo diễn phim The Matrix MATCH (movie:Movie {title: "The Matrix"}) OPTIONAL MATCH (director)-[:DIRECTED]->(movie) RETURN movie,COLLECT(director.name) AS directors,ID(movie) AS movieID truy vấn thứ hai tìm diễn viên phim The Matrix MATCH (movie:Movie {title: "The Matrix"}) OPTIONAL MATCH (actor)-[:ACTS_IN]->(movie) WITH movie,COLLECT(actor.name) AS actors RETURN movie.title,actors,ID(movie) AS movieID Kết ba câu truy vấn kết trái lại dựa trường movieID IV CÀI ĐẶT VÀ THỰC NGHIỆM A Cài đặt Chương trình xử lý truy vấn xây dựng dạng ứng dụng web Nền tảng lập trình Java sử dụng để xây dựng Giao diện chương trình gồm hộp thoại cho phép người dùng nhập truy vấn Sau nhập liệu người dùng nhấn nút “Execute” để thực thi chương trình Thành phần bên có tab Tab “Result of distributed Neo4j” để hiển thị kết truy vấn cở sở liệu phân tán Tab “Execution Plan” thể bước thực thi truy vấn phân mảnh Tab “Result of undistributed Neo4j” để so sánh kết truy vấn cở sở liệu không phân mảnh Để thuận tiện cho việc tham khảo, thử nghiệm, đánh giá cộng đồng, triển khai hệ thống lên website: http://45.119.83.92/WebNeo4jCQL/index.jsp với giao diện dễ sử dụng tập câu truy vấn viết sẵn bao gồm toàn truy vấn thử nghiệm báo B Thực nghiệm Dữ liệu truy vấn thực nghiệm lấy từ trang tên miền nhà sản xuất Neo4j [1] Cơ sở liệu đồ thị thực nghiệm Movie gồm thông tin sau:  Nút: Person (50179 nút), Movie (12862 nút)  Quan hệ: ACTS_IN, DIRECTED, FRIEND, RATED Cơ sở liệu đồ thị Movie chia làm ba phân mảnh ví dụ phần II.B trên: XÂY DỰNG MODULE XỬ LÝ TRUY VẤN PHÂN TÁN TRÊN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J Trong cấu hình nút mạng là:  Máy PC1: Intel Core i5 3320M 2.60Ghz, RAM 4GB  Máy PC2: Intel Core Duo P8600 2.40Ghz, RAM 4GB  Máy PC3: Intel Dual Core T4200 2.00Ghz, RAM 3GB Bảng Số lượng thực nghiệm mẫu truy vấn Mẫu truy vấn Mẫu truy vấn đơn Mẫu truy vấn lồng khơng có mệnh đề OPTIONAL Mẫu truy vấn lồng có mệnh đề OPTIONAL Số lượng truy vấn thử nghiệm 30 15 Việc thực thi truy vấn hệ thống phân mảnh dọc, thực nghiên cứu này, cho kết trùng khớp với kết thực thi truy vấn sở liệu đồ thị lúc chưa phân mảnh tất 50 truy vấn thử nghiệm bảng Điều cho thấy thuật tốn việc thực hóa thuật tốn hồn tồn xác cho dạng mẫu câu trình bày Trong khuôn khổ nghiên cứu này, chúng tơi chưa tìm thấy cơng trình liên quan đến việc phân mảnh dọc sở liệu đồ thị chúng tơi chưa thể thực đánh giá so sánh mơ hiệu với phương pháp, nghiên cứu khác V KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Bài báo đề xuất kiến trúc phân mảnh dọc cho sở liệu đồ thị Neo4j xây dựng module xử lý truy vấn kiến trúc phân mảnh dọc Kiến trúc phân mảnh đề xuất đơn giản, meta data mô tả thủ công Các nút mạng kiến trúc liên kết với thông qua giao thức HTTP chưa có chế kiểm sốt xem nút mạng có gặp cố bị ngắt khỏi mạng hay không Module xử lý truy vấn phân tán giải năm dạng mẫu câu truy vấn Cypher dựa sở phép toán đại số quan hệ hội, giao, hiệu, kết, … Các mẫu câu cho phép giải phần lớn câu truy vấn tập hợp liệu sở liệu đồ thị Nhờ đó, kết nghiên cứu sử dụng framework sở liệu đơn giản cho ứng dụng thực tế có sử dụng sở liệu đồ thị phân tán Neo4j Tuy nhiên nhiều mẫu câu khác, mẫu câu liên quan đến việc lựa chọn sau thực xử lý với liệu kết foreach…, case…when…, unwind…, collect , chưa nghiên cứu giải thành cơng nghiên cứu Trong thuật tốn xử lý phân tán đề xuất, yếu tố để tăng hiệu năng, giảm thời gian trả lời truy vấn chưa nghiên cứu thấu đáo như: chưa sử dụng phân mảnh để tối ưu truy vấn; chưa tính đến việc gộp số quan hệ (mà chứa phân mảnh đó) xử lý mẫu M1.1 M1.2, hay gộp cặp [MATCH] [WITH] khả gộp (chứa quan hệ phân mảnh có nút chung làm sở để kết) mẫu M2, … để giảm thời gian xử lý trao đổi liệu Một khía cạnh khác việc chứng minh cho nhu cầu thực tế mô hình phân tán này, thơng qua việc phân tích tốn thực tế, chưa trình bày báo Đây hướng nghiên cứu nhằm xây dựng hệ thống lưu trữ truy vấn sở liệu đồ thị phân tán hoàn chỉnh, tối ưu thiết thực VI TÀI LIỆU THAM KHẢO [1] Domain chứa tài liệu liên quan đến Neo4j nhà sản xuất cung cấp, https://neo4j.com/ [2] Nicoara, D., Kamali, S., Daudjee, K., & Chen, L (2015, March) Hermes: Dynamic Partitioning for Distributed Social Network Graph Databases In EDBT (pp 25-36) [3] Chairunnanda, P., Forsyth, S., & Daudjee, K (2012, June) Graph data partition models for online social networks In Proceedings of the 23rd ACM conference on Hypertext and social media (pp 175-180) ACM [4] Averbuch, A., & Neumann, M (2013) Partitioning Graph Databases-A Quantitative Evaluation arXiv preprint arXiv:1301.5121 [5] Nicoara, D (2014) Distneo4j: Scaling graph databases through dynamic distributed partitioning, A thesis presented to the University of Waterloo in fulfillment of thethesis requirement for the degree of Master of Mathematics in Computer Science [6] Ho, L Y., Wu, J J., & Liu, P (2012, June) Distributed graph database for large-scale social computing In Cloud Computing (CLOUD), 2012 IEEE 5th International Conference on (pp 455-462) IEEE BUILDING A MODULE TO HANDLE DISTRIBUTED QUERY PROCESSING ON NEO4J GRAPH DATABASE Nguyen Duy Tan, Ngo Thanh Hung ABSTRACT — This paper presents the distributed architecture and distributed query processing module on Neo4j graph database The proposed architecture is vertical fragmentation Fragments are placed on computers, which are connected to each other through the protocol HTTP Distributed query processing module was built based on relational algebra for handling some samples of queries, written in Cypher language It can be used in some practical case study and be developed with more sample of queries and higher degree of performance ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc BẢN GIẢI TRÌNH Tên đề tài luận văn: Phân tán sở liệu đồ thị Neo4j Học viên: Nguyễn Duy Tân MSHV: CH1401017 Giảng viên hướng dẫn: TS Ngô Thanh Hùng Phản biện 1: PGS TS Đặng Trần Khánh Phản biện 2: PGS TS Trần Văn Lăng Ngày bảo vệ: 14/09/2017 Kết bảo vệ (điểm): 7.6 Yêu cầu 1: Cần làm rõ: phân mảnh Giải trình 1: Đã làm rõ nội dung phân mảnh trang 28-29 luận văn Nội dung bổ sung sau:  “Bản liệu (Replication): kĩ thuật quan trọng hữu hiệu việc phân bố sở liệu, cho phép tạo liệu giống hệt nhau, di chuyển đến vùng khác đồng hoá liệu cách tự động để tất có giá trị liệu Nhân thực thi sở liệu server hay server khác kết nối mạng LAN,WAN hay Internet Mục tiêu nhân độc lập “Site”và quán liệu o Nhất quán liệu (Data consistency): Có cách để đạt tính qn liệu: - Nhất quán giao dịch(Transactional Consistency): Bảo đảm tất liệu giống site thời điểm, tất giao dịch thực site - Hội tụ liệu (Data Convergence): Với hội tụ liệu, tất site quy giá trị liệu không thiết giá trị liệu bị gây tác vụ làm site User tự thao tác site theo cách khác Khi nút (node) đồng bộ, tất site hội tụ giá trị o Độc lập site xét đến ảnh hưởng thao tác site đến site khác Thường độc lập site tăng tính qn liệu giảm Nhân kết hợp (Merge replication) có mức độc lập site cao nhất, tạo hội tụ lại khơng đảm bảo tính qn liệu 2PC (two phase commit) có tính qn liệu cao lại khơng có tính độc lập site Những giải pháp khác thường hai tính o Các thành phần nhân bản: - Publisher: server tạo liệu để nhân đến server khác - Subscriber: server lưu giữ nhân nhận tác vụ cập nhật - Distributor: server mà chứa CSDL phân tán (distribution database) lưu trữ metadata, history data transaction - Publication: đơn giản tập hợp mẩu liệu (article) ” Yêu cầu 2: Cần có phần tối ưu hóa câu truy vấn Giải trình 2: Đã bổ sung phần tối ưu hóa câu truy vấn trang 52 luận văn với nội dung sau: “Phương pháp tối ưu hóa câu truy vấn đề xuất dựa kiến trúc phân mảnh dọc đề xuất thuật toán xử lý truy vấn phân tán gồm nội dung sau:  Gộp quan hệ phân mảnh xử lý mẫu câu truy vấn M1.1 M1.2 để tránh thực thi nhiều truy vấn phân mảnh giảm thời gian tổng hợp liệu sau  Xem xét cặp [MATCH] [WITH] khả gộp (chứa quan hệ phân mảnh có nút chung làm sở để kết) xử lý dạng mẫu câu truy vấn M2  Tương tự, dạng mẫu M3 xem xét việc gộp cặp [OPTIONAL MATCH] [WITH] để tăng thời gian truy vấn  Đối với thuật toán tổng hợp liệu hai câu truy vấn tiến hành lọc liệu trước kết chúng lại với  Cho phép thuật tốn xử lý truy vấn lựa chọn máy số máy chứa quan hệ (nếu có trùng lắp quan hệ phân mảnh) để thực song song nhằm giảm thời gian xử lý truy vấn  Sử dụng phân mảnh để tăng hiệu tối ưu hóa câu truy vấn.” Do thời gian hạn chế nên phần tối ưu hóa câu truy vấn chưa cài đặt Nội dung đề cập đến phần hạn chế luận văn trang 70-71 luận văn với nội dung sau: “Trong thuật toán xử lý phân tán đề xuất, yếu tố để tăng hiệu năng, giảm thời gian trả lời truy vấn chưa nghiên cứu thấu đáo như: chưa sử dụng phân mảnh để tối ưu truy vấn; chưa tính đến việc gộp số quan hệ (mà chứa phân mảnh đó) xử lý mẫu M1.1 M1.2, hay gộp cặp [MATCH] [WITH] khả gộp (chứa quan hệ phân mảnh có nút chung làm sở để kết) mẫu M2, … để giảm thời gian xử lý trao đổi liệu Đây hướng nghiên cứu nhằm xây dựng hệ thống lưu trữ truy vấn sở liệu đồ thị phân tán hoàn chỉnh, tối ưu thiết thực ” Yêu cầu 3: Bổ sung đánh giá phân tán ngang, dọc sở liệu đồ thị phân tán Giải trình 3: Đã bổ sung đánh giá phân mảnh ngang, dọc sở liệu đồ thị cơng trình nghiên cứu liên quan trang 35-36 luận văn với nội dung sau: “* Đánh giá phân tán ngang, dọc sở liệu đồ thị phân tán:  Phân tán ngang hình thức phân tán sở liệu đồ thị theo đỉnh Việc phân tán ngang giúp tăng hiệu suất cho hệ thống dung lượng phân mảnh giảm Tuy nhiên, việc phân mảnh ngang có số vấn đề phức tạp việc: phân chia phân mảnh, phân mảnh phải cân bằng, giảm cắt cạnh, truy vấn liệu phân mảnh (cần phải lấy liệu từ xa phục vụ cho việc truy vấn – quy trình xử lý tốn kém), tối ưu hóa truy vấn Do đó, nút thêm vào phải đảm bảo vấn đề Vì vậy, phân mảnh ngang ln cần phận phân chia lại phân mảnh có thay đổi liệu  Phân tán dọc hình thức phân tán sở liệu đồ thị theo cạnh (quan hệ) Việc phân tán dọc giúp cho việc quản lý, phân quyền liệu dễ dàng nhờ việc tách biệt quan hệ Trong số trường hợp giảm thời gian truy vấn dung lượng phân mảnh giảm Tuy nhiên, phân tán dọc có vấn đề phức tạp xử lý truy vấn quan hệ nằm phân mảnh khác nhau, việc tối ưu hóa truy vấn Khi liệu thêm vào phân mảnh dọc cần xác định phân mảnh chứa quan hệ loại nút kèm để xác định phân vùng cần thêm vào Vì vậy, không cần phận phân chia lại liệu phân mảnh ngang Đối với kiến trúc phân tán dọc sở liệu đồ thị trình bày nghiên cứu xây dựng module xử lý truy vấn phân tán xử lý dạng truy vấn phổ biến sở liệu đồ thị Neo4j Vì vậy, kiến trúc phân tán dọc sở liệu đồ thị module xử lý truy vấn phân tán đưa vào áp dụng thực tiễn.” Yêu cầu 4: Xóa phần kết luận liên quan đến node bị hư hỏng hệ thống hoạt động Giải trình 4: Đã xóa nội dung “giúp nâng cao tính sẵn sàng hệ thống nhờ tránh trường hợp “đơn điểm gây lỗi” (single point of failure)” trang 33 luận văn TPHCM, ngày 29 tháng năm 2017 Học viên ký, ghi rõ họ tên Ý kiến GVHD (họ tên, chữ ký) TS Ngô Thanh Hùng Nguyễn Duy Tân ... phân tán hệ quản trị sở liệu đồ thị 2.1 Cơ sở liệu đồ thị Cơ sở liệu đồ thị loại sở liệu NoSQL không quan hệ, phù hợp với tập liệu phân tán lớn Thay sử dụng bảng sở liệu quan hệ, sở liệu đồ thị. .. Sơ đồ phân lớp chung cho xử lý truy vấn phân tán 2.5 Phân mảnh ngang, phân mảnh dọc, phân mảnh hỗn hợp sở liệu đồ thị 2.5.1 Phân mảnh ngang sở liệu đồ thị Phân tán ngang hình thức phân tán sở liệu. .. hỗn hợp sở liệu đồ thị 31 2.5.1 Phân mảnh ngang sở liệu đồ thị 31 2.5.2 Phân mảnh dọc sở liệu đồ thị 31 2.5.3 Phân mảnh hỗn hợp sở liệu đồ thị 32 Chương KIẾN TRÚC PHÂN MẢNH

Ngày đăng: 23/12/2018, 06:16

Từ khóa liên quan

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

Tài liệu liên quan