.5 Ví dụ traversals trong neo4j

Một phần của tài liệu Giải pháp lưu trữ số lượng lớn các thực thể quan hệ trích xuất từ các bài báo mạng (Trang 32 - 34)

Tiếp theo, trong neo4j đề cập đến các index (chỉ mục) và constraints (ràng buộc). Neo4j thường được mô tả là lược đồ tùy chọn (schema optional), có nghĩa là khơng cần thiết phải tạo chỉ mục và ràng buộc. Hay có thể hiểu đơn giản là chúng ta vẫn có thể tạo dữ liệu với các node, relationship, properties mà không cần xác định trước một lược đồ. Các chỉ mục và ràng buộc có thể được đưa ra khi muốn, để đạt được lợi ích về hiệu suất hoặc mơ hình hóa.

Index được sử dụng để tăng hiệu suất, tốc độ truy vấn – duyệt cây đồ thị. Cụ thể kỹ thuật này sử dụng được trên cả thuộc tính đơn lẻ lẫn thuộc tính phức tạp và index có thể được thêm vào bất kỳ thời điểm nào. Lý do chính để sử dụng các index trong cơ sở dữ liệu đồ thị là để tìm kiếm điểm bắt đầu của một traversals trong biểu đồ. Sau khi tìm thấy điểm xuất phát đó, việc truyền tải dựa vào cấu trúc trong đồ thị để đạt được hiệu suất cao. Ví dụ: trong truy vấn Cypher tạo một index để tăng tốc độ tìm kiếm các tác nhân theo tên trong cơ sở dữ liệu: CREATE INDEX example_index_1 FOR (a:Actor) ON (a.name). Trong hầu hết các trường hợp, không cần thiết phải chỉ định các chỉ mục khi truy vấn dữ liệu, vì các chỉ mục thích hợp sẽ được sử dụng tự động.

Constraints – các ràng buộc được sử dụng để đảm bảo rằng dữ liệu tuân thủ các quy tắc của vùng dữ liệu. Các ràng buộc có thể được thêm vào cơ sở dữ liệu đã có dữ liệu trong đó. Điều này yêu cầu dữ liệu hiện có phải tuân thủ các ràng buộc đang được thêm vào. Chúng ta có thể truy vấn cơ sở dữ liệu để tìm hiểu những ràng buộc nào được định nghĩa bằng cú pháp Cypher: SHOW CONSTRAINTS. Ví dụ: SHOW CONSTRAINTS YIELD id, name, type, entityType, labelsOrTypes, properties, ownedIndexId.

Ngoài ra trong neo4j, nhiệm vụ thực hiện một truy vấn được phân tách thành các

21 này được kết hợp thành một cấu trúc dạng cây được gọi là execution plan 7 – kế hoạch thực thi. Mỗi execution plan được biểu diễn dưới dạng một nút trong cây và mỗi operator nhận đầu vào là không hoặc nhiều hàng và tạo ra dưới dạng không hoặc nhiều hàng đầu ra. Điều này có nghĩa là đầu ra từ một operator sẽ trở thành đầu vào cho operator tiếp theo. Các operator tham gia hai nhánh trong cây kết hợp đầu vào từ hai luồng đến và tạo ra một đầu ra duy nhất.

Đánh giá execution plan bắt đầu từ các node của cây dữ liệu. Các leaf node (node lá của cây) khơng có hàng đầu vào và thường bao gồm các operator như tìm kiếm và quét. Khi khai thác operators này lấy dữ liệu trực tiếp từ công cụ lưu trữ, do đó phát sinh

database hits (dbhits) 8. Bất kỳ hàng nào được tạo ra bởi các leaf node sau đó sẽ được

chuyển vào các node cha của chúng, từ đó chuyển các hàng đầu ra của chúng đến các node cha của chúng, v.v., tất cả các con đường lên đến node gốc. Node gốc tạo ra kết quả cuối cùng của truy vấn.

Dbhits là khi operator gửi lời yêu cầu đến storage engine (máy lưu trữ dữ liệu) để thực thi công việc như truy xuất hoặc cập nhật dữ liệu. Với một lần truy cập cơ sở dữ liệu là một đơn vị trừu tượng của công việc công cụ lưu trữ này. Hay hiểu một cách đơn giản và trực quan về dbhits thì đây là đơn vị tính chi phí cho mỗi lần thực hiện truy vấn trong neo4j.

Dựa vào công cụ execution plan và operator sẽ được trình bày chi tiết ở phần

chương 2 mục 2.2 sau chương này, từ đó tơi lựa chọn mơ hình dữ liệu tối ưu.

1.3 Cypher (query language)

Ngôn ngữ truy vấn sử dụng trong neo4j là Cypher 9 - giúp chúng ta thực hiện truy vấn lấy dữ liệu cần tìm. Cypher là một ngơn ngữ truy vấn biểu đồ, các khai báo cho phép truy vấn dữ liệu biểu thức và hiệu quả trong biểu đồ thuộc tính. Cypher phần lớn là một phát minh của Andrés Taylor trong khi làm việc cho Neo4j, Inc. (trước đây là Neo Technology) vào năm 2011. Cypher ban đầu dự định sẽ được sử dụng với cơ sở dữ liệu đồ thị Neo4J, nhưng đã được mở qua dự án OpencyPher vào tháng 10 năm 2015. Ngôn ngữ được thiết kế với sức mạnh và khả năng của SQL (ngôn ngữ truy vấn tiêu chuẩn cho mơ hình cơ sở dữ liệu quan hệ), nhưng Cypher dựa trên các thành phần và nhưu cầu của cơ sở dữ liệu được xây dựng dựa trên các khái niệm về lý thuyết đồ thị. Trong một mô hình đồ thị, dữ liệu được cấu trúc dưới dạng các nút (các đỉnh trong khoa học toán và

7 https://neo4j.com/docs/cypher-manual/current/execution-plans/

8 https://neo4j.com/docs/cypher-manual/current/execution-plans/db-hits/

22 mạng) và các mối quan hệ (cạnh trong khoa học toán và mạng lưới) để tập trung vào cách các thực thể trong dữ liệu được kết nối và liên quan đến nhau. Ví dụ, câu truy vấn Cypher cho đường đi trong đồ thị như ở Hình 1.5 được mơ tả trong Hình 1.6 bên dưới.

Một phần của tài liệu Giải pháp lưu trữ số lượng lớn các thực thể quan hệ trích xuất từ các bài báo mạng (Trang 32 - 34)

Tải bản đầy đủ (PDF)

(86 trang)