Cơ sở dữ liệu đồ thị Neo4j được tạo được sự quan tâm lớn trong những năm gần đây nhờ khả năng giải quyết các bài toán liên quan đến mạng ngữ nghĩa và mạng xã hội với kích thước lớn. Một trong những giải pháp để xử lý dữ liệu lớn thường được áp dụng là lưu trữ và xử lý phân tán.
Kỷ yếu Hội nghị KHCN Quốc gia lần thứ XII Nghiên cứu ứng dụng Công nghệ thông tin (FAIR); Huế, ngày 07-08/6/2019 DOI: 10.15625/vap.2019.00010 CẢI TIẾN THUẬT TOÁN XỬ LÝ TRUY VẤN TRÊN CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J PHÂN TÁN Phạm Hữu Mão, Ngô Thanh Hùng Trƣờng Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh phamhuumaoit@gmail.com, hungnt@uit.edu.vn TÓM TẮT: Cơ sở liệu đồ thị Neo4j tạo quan tâm lớn năm gần nhờ khả giải toán liên quan đến mạng ngữ nghĩa mạng xã hội với kích thước lớn Một giải pháp để xử lý liệu lớn thường áp dụng lưu trữ xử lý phân tán Một số nghiên cứu phân mảnh ngang sở liệu Neo4j đề xuất Tuy nhiên chưa có nghiên cứu phân tán sở liệu Neo4j (phân tán sở liệu quan hệ phân chia tập hợp node quan hệ thành tập con, tập đặt nút mạng, tập có giao) module xử lý truy vấn Neo4j phân tán mức độ suốt cao Nghĩa người dùng không cần phải thay đổi ứng dụng (câu truy vấn ứng dụng) mà truy vấn đến sở liệu phân tán giống trước phân tán Kiến trúc phân tán thuật toán xử lý truy vấn Cypher sở liệu phân tán Neo4j trình bày [1] Thuật tốn truy vấn xử lý ba mẫu câu truy vấn Neo4j, đáp ứng hầu hết nhu cầu ứng dụng thực tế Trong nghiên cứu đề xuất cải tiến kiến trúc phân tán, cải tiến hiệu thuật toán xử lý truy vấn Cypher nói Thuật tốn cải tiến cho thấy hiệu cao so với thuật toán gốc tất trường hợp thử nghiệm Từ khóa: Neo4j, vertical partitioning model on Neo4j, Cypher query proccessing on vertical partitioning Neo4j, Phân tán Neo4j, Xử lý truy vấn Cypher Neo4j phân tán I GIỚI THIỆU Trong năm gần đây, nghiên cứu sở liệu đồ thị Neo4j giải đƣợc nhiều vấn đề lƣu trữ xử lý liệu, trở thành vấn đề đƣợc trọng nhà nghiên cứu [2] Khẳng định ƣu sở liệu đồ thị ứng dụng liên quan đến mạng ngữ nghĩa phân tích mạng xã hội [3] Nghiên cứu sử dụng sở liệu đồ thị thay cho sở liệu quan hệ việc biểu diễn ontology đa ngành lĩnh vực lọc hóa dầu [4] Sử dụng hệ quản trị sở liệu đồ thị Neo4j để lƣu trữ liệu việc làm thông tin liên quan sinh viên tốt nghiệp [5] Đề xuất mơ hình mạng xã hội thời gian thực (time-varying social network model) để mô tả truy vấn thông tin ngƣời hoạt động có liên quan thời gian thực Tác giả sử dụng hệ quản trị sở liệu đồ thị Neo4j để thực nghiệm mơ hình chứng minh hiệu nhiều so với sử dụng hệ quản trị sở liệu quan hệ Bên cạnh đó, việc nghiên cứu kỹ thuật phân mảnh sở liệu đồ thị đƣợc triển khai [6] Đề xuất giải thuật phân mảnh ngang động để giải toán hiệu truy vấn sở liệu đồ thị kích thƣớc lớn với hàm mục tiêu tăng độ liên quan node phân mảnh giảm số lƣợng cạnh bị cắt edge-cut (là cạnh mà node nằm phân mảnh node đầu nằm phân mảnh khác) Thuật toán đƣợc thử nghiệm hệ thống gồm nhiều hệ quản trị sở liệu đồ thị Neo4j kết nối với qua hệ thống mạng truyền thông Mỗi hệ quản trị chứa đựng phân mảnh ngang sở liệu gốc, đƣợc tính tốn nhờ vào thuật tốn đề xuất Ƣu điểm thuật tốn tự thích ứng với thay đổi liệu nhƣ truy vấn ngƣời dùng giúp tăng tính cục truy vấn duyệt đồ thị (duyệt phân mảnh) từ tăng tốc hiệu thực thi hiệu sử dụng nhớ Bài báo [1] đề xuất kiến trúc phân tán cho sở liệu đồ thị Neo4j phân tán xây dựng module xử lý truy vấn kiến trúc Module xử lý truy vấn phân tán đạt mức độ suốt cao – suốt phân mảnh, nghĩa ngƣời dùng không cần phải thay đổi ứng dụng (câu truy vấn ứng dụng) sở liệu bị phân mảnh phân tán hệ thống hệ quản trị Neo4j độc lập Qua cho thấy ứng dụng sở liệu đồ thị Neo4j nhƣ hệ quản trị sở liệu Neo4j phân tán đƣợc quan tâm nghiên cứu Tuy nhiên liên quan đến Neo4j phân tán có nghiên cứu xây dựng hệ xử lý truy vấn phân tán ứng với mức suốt phân mảnh cịn (chỉ có [1]) Trong nghiên cứu chúng tơi phân tích để cải tiến kiến trúc phân mảnh dọc cải tiến thuật toán xử lý truy vấn Cypher hệ quản trị sở liệu Neo4j phân tán đƣợc đề xuất [1] II KIẾN TRÚC PHÂN TÁN CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J II.1 Khái niệm phân tán sở liệu đồ thị Phân tán sở liệu đồ thị khơng phải phân mảnh thuộc tính node quan hệ mà phân chia tập hợp node quan hệ thành tập con, tập phân mảnh CẢI TIẾN THUẬT TOÁN XỬ LÝ TRUY VẤN TRÊN CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J PHÂN TÁN 74 II.2 Kiến trúc hệ quản trị sở liệu phân tán Neo4j Hệ quản trị sở liệu Neo4j phân tán bao gồm nhiều hệ quản trị sở liệu Neo4j hoạt động độc lập liên kết với với module xử lý truy vấn phân tán thông qua mạng truyền thơng Hình Hệ quản trị CSDL Neo4j phân tán Mỗi hệ quản trị Neo4j hệ thống chứa phân mảnh sở liệu gốc (trƣớc phân tán) Mỗi mảnh chứa tất node tập tập tất quan hệ sở liệu gốc Các tập quan hệ có giao tùy theo nhu cầu thực tế Đố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 Do việc phân tán liệu kèm phân mảnh riêng biệt thuận tiện việc quản lý liệu Bên cạnh đó, việc phân tán sở liệu giúp nâng cao tính sẵn sàng hệ thống nhờ tránh đƣợc trƣờng hợp “đơn điểm gây lỗi” số trƣờng hợp cịn giảm thời gian truy vấn nhờ giảm dung lƣợng phân mảnh Ƣu điểm thiết kế là: - Phân chia để phân quyền quản lý: đơn vị quản lý số quan hệ thuộc phạm vi quản lý mình; - Phân chia tải site để tăng hiệu năng: site quản lý tập liệu nhỏ phục vụ truy vấn liên quan đến tập quan hệ này; - Tăng tính sẵn sàng liệu Nhƣợc điểm thiết kế là: - Trong trƣờng hợp truy vấn phải sử dụng liệu từ nhiều site diễn trình truyền liệu qua lại site có liên quan, điều đa số trƣờng hợp dẫn đến làm tăng thời gian xử lý so với truy vấn sở liệu toàn cục Đây nhƣợc điểm chung thiết kế phân tán Vì thiết kế sở liệu phân tán, nhà thiết kế phải lựa chọn phƣơng án phân mảnh/phân tán cho giảm đƣợc tần suất thực truy vấn liên mảnh/liên site - Tuy nhiên, số trƣờng hợp, nhờ xử lý song song nhiều site mà việc thực truy vấn liên site cho hiệu cao (thời gian thực thi ngắn hơn) so với truy vấn sở liệu toàn cục Trong phần thực nghiệm nghiên cứu này, quan sát thấy số trƣờng hợp nhƣ III MODULE XỬ LÝ TRUY VẤN CYPHER TRÊN HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN NEO4J III.1 Phát biểu toán Cho biết: - Lƣợc đồ phân tán phân mảnh liệu site nhƣ sau: Phân mảnh 1; Phân mảnh 2; Phân mảnh 3; ; Phân mảnh n: phân mảnh chứa nhiều quan hệ node tƣơng ứng Yêu cầu: - Thực truy vấn Cypher từ ngƣời dùng, trả kết cho truy vấn cho trình thực hệ quản trị CSDL phân tán hoàn toàn suốt với ngƣời dùng Phạm Hữu Mão, Ngô Thanh Hùng 75 III.2 Thiết kế bước xử lý truy vấn Cypher sở liệu phân tán Neo4j Các bƣớc xử lý đƣợc thiết kế nhƣ hình Trong bƣớc nối truy vấn tìm tập tối thiểu phần cải tiến đƣợc đề xuất nghiên cứu Các bƣớc cịn lại kế thừa từ [1] Hình Sơ đồ thuật tốn Mơ tả chi tiết bƣớc xử lý: Bước 1: Phân tích câu truy vấn gốc thành tập truy vấn đơn, truy vấn đơn chứa quan hệ nhất, truy vấn đơ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 R(r1, r2, , rm) thuộc tập tất quan hệ sở liệu đồ thị xét Truy vấn T đƣợc tách thành n truy vấn con: T1, T2,…, Tm, truy vấn chứa {r1}, {r2}, , {rm} quan hệ tập R Bước 2: Xem xét khả nối câu truy vấn đơn thu đƣợc từ bƣớc 1, chúng có chứa quan hệ thuộc phân mảnh Tìm tập câu truy vấn đơn tối thiểu, chọn tập chứa đầy đủ quan hệ câu truy vấn gốc Tập hợp danh sách quan hệ phân mảnh thu đƣợc bƣớc 1, tiến hành xác định quan hệ câu đơn thuộc phân mảnh nào, phân mảnh ta sẻ thu đƣợc tập hợp câu đơn Tìm tập tối thiểu từ tập câu đơn phân mảnh Bước 3: Nối câu đơn chứa tập tối thiểu bƣớc Gọi G (T1, T2,…, Tm) tập tối thiểu chứa câu truy vấn đơn có quan hệ tƣơng ứng r1, r2,…, rm, với R(r1, r2, , rm) thuộc tập tất quan hệ phân mảnh Truy vấn T’ đƣợc tạo thành cách nối câu đơn T1+T2+ +Tm Bước 4: Gửi tập câu truy vấn đến phân mảnh đích chứa quan hệ tƣơng ứng, gọi thực thi thông qua GraphDatabaseService API Neo4j phân mảnh Tổng hợp kết cuối dựa vào phép toán đại số quan hệ có đƣợc phân rã truy vấn ban đầu Mỗi truy vấn Ti trả kết O(Ti) Tổng hợp kết O(Ti) theo phép toán thu đƣợc từ việc phân rã truy vấn ban đầu, tạo kết O(T) cho truy vấn gốc T IV THỰC NGHIỆM IV.1 Cài đặt hệ sở liệu Neo4j phân tán môi trường đám mây Chƣơng trình xử lý truy vấn đƣợc xây dựng dƣới dạng ứng dụng web Nền tảng lập trình Java 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, nút “Execute” để thực thi chƣơng trình, nút “Remove” dùng để xóa truy vấn kết liên quan Thành phần bên dƣới có tab: CẢI TIẾN THUẬT TỐN XỬ LÝ TRUY VẤN TRÊN CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J PHÂN TÁN 76 Tab “Result of distributed Neo4j”: Hiển thị kết truy vấn sở liệu đồ thị phân tán nhấn nút “Execute” bao gồm thơng tin nhƣ: số dịng trả về, thời gian thực thi truy vấn kết truy vấn Tab “Step Execute”: Thể bƣớc thực thi truy vấn gồm danh sách tập tối thiểu, danh sách câu truy vấn sau nối, danh sách phân mảnh thực truy vấn, phép toán đại số quan hệ cặp câu truy vấn đƣợc hiển thị cách cụ thể, cuối xuất kết cho ngƣời dùng Tab “Result of undistributed Neo4j”: Hiển thị kết truy vấn sở liệu không phân tán Nội dung tab bao gồm: số dòng trả về, thời gian thực thi truy vấn kết thực thi câu truy vấn Hệ thống sở liệu Neo4j phân tán đƣợc cài đặt tảng điện toán đám mây với cấu hình nhƣ sau: - Có máy chủ ảo Trên máy có cài hệ quản trị Neo4j hoạt động độc lập Mỗi máy có cấu hình: + Nhà cung cấp: Google Cloud + Machine Type: vCPUs, GB memory + OS: Ubuntu 16.04 LTS + Disk Type: Standard persistent disk + Disk Size: 15G Để so sánh kết hiệu hệ sở liệu Neo4j phân tán so với sở liệu Neo4j toàn cục, máy chủ ảo chứa hệ quản trị sở liệu Neo4j khác đƣợc tạo IV.2 Dữ liệu thử nghiệm Cơ sở liệu Neo4j toàn cục sở liệu đồ thị Movie gồm thông tin sau: Nút: - Nút Person có 50179 đỉnh; - Thuộc tính nút Person: id, birthday, birthplace, name, biographsy; - Nút Movie có 12862 đỉnh; - Thuộc tính nút Movie: id, studio, releaseDate, description, language, title, trailer, imageUrl, genre; Quan hệ: - Quan hệ ACTS_IN liên kết nút Person Movie - Quan hệ DIRECTED liên kết nút Person Movie - Quan hệ FRIEND liên kết nút Person Person - Quan hệ RATED liên kết nút Person Movie Thông tin quan hệ: - 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 - 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 - 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 - RATE: liên kết nút Person Movie Dùng để định ngƣời bình chọn cho phim Đây quan hệ có hƣớng với đỉnh đầu nút Person, đỉnh cuối nút Movie Để thực thử nghiệm sở liệu đƣợc đặt hệ quản trị Neo4j tập trung Đồng thời copy phân mảnh đƣợc đặt Neo4j phân tán nhƣ sau: Cơ sở liệu đƣợc phân tán phân mảnh: - Phân mảnh 1: (Movie1) chứa toàn quan hệ ACTS_IN toàn nút Person, nút Movie - Phân mảnh 2: (Movie2) chứa toàn quan hệ ACTS_IN, FRIEND toàn nút Person, nút Movie - Phân mảnh 3: (Movie3) chứa toàn quan hệ FRIEND, RATE, DIRECTED toàn nút Person, Movie Tập câu truy vấn Cypher sử dụng để thử nghiệm đƣợc tổng hợp từ nhiều trang web khác nhau, số câu truy vấn đƣợc tạo tác giả nhằm thể đƣợc ƣu điểm nhƣợc điểm hệ thống phân tán so với tập trung IV.3 Kết đánh giá Kết thực nghiệm 10 câu truy vấn tổng 70 câu truy vấn: Phạm Hữu Mão, Ngô Thanh Hùng 77 Bảng Kết thực nghiệm Stt 10 Thời gian xử lý Neo4j tập trung (s) 4.876) 6.064 3.241 15.499 3.229 3.081 3.239 2.791 4.333 4.333 Thời gian xử lý Neo4j phân tán [1] (s) 8.481 8.972 5.728 22.036 6.073 16.003 5.102 2.526 4.467 4.467 Thời gian xử lý Neo4j phân tán cải tiến (s) 4.992 5.939 2.925 12.775 2.370 9.183 2.957 2.795 3.902 3.902 V KẾT LUẬN Nghiên cứu đề xuất cải tiến thuật toán xử lý truy vấn Cypher sở liệu Neo4j phân tán cài đặt hệ sở liệu đồ thị Neo4j phân tán Khả xử lý truy vấn phân tán hệ thống hỗ trợ mức suốt mức cao giúp ngƣời dùng không tốn công sức viết lại ứng dụng sau thiết kế phân tán sở liệu Hệ sở liệu đồ thị Neo4j phân tán đƣợc kiểm nghiệm với liệu mẫu Movie cho thấy kết khả quan Đa phần câu truy vấn không nhiều so với truy vấn tập trung số trƣờng hợp, nhờ có xử lý phân tán mà hệ thống phân tán cho kết tốt hệ tập trung Mặc dù thuật tốn đƣợc cải thiện khâu tìm tập nhỏ tập nối, nhƣ tính tới đặc trƣng liệu có để tăng hiệu Đó hƣớng cải tiến thuật toán tiềm TÀI LIỆU THAM KHẢO [1] Nguyễn Duy Tân, Ngô Thanh Hùng “Xây dựng module xử lý truy vấn phân tán hệ quản trị sở liệu đồ thị Neo4j ” Kỉ Yếu Hội Nghị Quốc Gia Lần Thứ X Về Nghiên Cứu Cơ Bản Ứng Dụng Công Nghệ Thông Tin (FAIR), Đà Nẵng 17-18/08/2017 [2] Guia, J., Soares, V G., & Bernardino, J (2017) Graph Databases: Neo4j Analysis In ICEIS (1) (pp 351-356) [3] Gong, F., Ma, Y., Gong, W., Li, X., Li, C., & Yuan, X (2018) Neo4j graph database realizes efficient storage performance of oilfield ontology PloS one, 13(11), e0207595 [4] Constantinov, C., Iordache, L., Georgescu, A., Popescu, P S., & Mocanu, M (2018, October) Performing Social Data Analysis with Neo4j: Workforce Trends & Corporate Information Leakage In 2018 22nd International Conference on System Theory, Control and Computing (ICSTCC) (pp 403-406) IEEE [5] Cattuto, C., Quaggiotto, M., Panisson, A., & Averbuch, A (2013, June) Time-varying social networks in a graph database: a Neo4j use case In First international workshop on graph data management experiences and systems (p 11) ACM [6] Nicoara, D., Kamali, S., Daudjee, K., & Chen, L (2015, March) Hermes: Dynamic Partitioning for Distributed Social Network Graph Databases In EDBT (pp 25-36) IMPROVE QUERY ALGORITHMS ON A DISTRIBUTED GRAPH DATABASE Pham Huu Mao, Ngo Thanh Hung ABSTRACT - Neo4j graph database has created great interest in recent years with the ability to solve problems related to semantic networks and social networks with large size One of the solutions to large data processing is commonly applied is distributed storage and processing A number of studies on horizontal fragmentation of Neo4j database have been proposed However, there has not been any research on dispersion of Neo4j database (dispersion of relational database is to divide the set of nodes and relations into subsets, each subset will be located at a node, the set children can be delivered) and the query processing module on Neo4j disperses at the highest transparency level This means that the user does not need to change the application (the query in the application) but can still query the distributed database just like before it is distributed Distributed architecture and Cypher query processing algorithm on Neo4j distributed data are presented in [1] This query algorithm only handles three basic query patterns in Neo4j, but meets most of the needs of actual applications In this study we propose to improve the distributed architecture, and improve the performance of the above mentioned Cypher query processing algorithm The improved algorithm shows that the performance is higher or equal to the original algorithm in all test cases ...CẢI TIẾN THUẬT TOÁN XỬ LÝ TRUY VẤN TRÊN CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J PHÂN TÁN 74 II.2 Kiến trúc hệ quản trị sở liệu phân tán Neo4j Hệ quản trị sở liệu Neo4j phân tán bao gồm nhiều hệ quản trị sở. .. kết hiệu hệ sở liệu Neo4j phân tán so với sở liệu Neo4j toàn cục, máy chủ ảo chứa hệ quản trị sở liệu Neo4j khác đƣợc tạo IV.2 Dữ liệu thử nghiệm Cơ sở liệu Neo4j toàn cục sở liệu đồ thị Movie... hệ sở liệu đồ thị Neo4j phân tán Khả xử lý truy vấn phân tán hệ thống hỗ trợ mức suốt mức cao giúp ngƣời dùng không tốn công sức viết lại ứng dụng sau thiết kế phân tán sở liệu Hệ sở liệu đồ thị