CHƯƠNG 5 NGÔN NGỮ TRUY VẤN ĐỒ THỊ CYPHER

Một phần của tài liệu Tiểu luận môn cơ sở dữ liệu nâng cao Cơ sở dữ liệu đồ thị Neo4j (Trang 56)

Cypher là ngôn truy vấn đồ thị mà cho phép truy vấn, chỉnh sửa việc lưu trữ trên đồ thị một cách hiệu quả mà không phải viết bất kỳ phép duyệt đồ thị thông qua mã. Cypher vẫn đang phát triển và hoàn thiện, điều đó có nghĩa là cấu pháp của Cypher có thể thay đổi.

Cypher được thiết kế trở thành ngôn ngữ truy vấn nhân tạo, phù hợp với cả hai lập trình viên và các chuyên gia về cơ sở dữ liệu. Mục đích chính của chương này là thực hiện một ví dụ đơn giản đến phức tạp về truy vân sử dụng Cypher.

Ngôn ngữ truy vấn bao gồm nhiều mệnh đề khác biệt.

- START: Điểm bắt đầu trong đồ thị, đạt được thông qua chỉ mục hoặc phần tử IDS.

- MATCH: mẫu đồ thị để so sánh, điều kiện ràng buộc điểm bắt đầu START

- WHERE: Tiêu chí lọc.

- CREATE: Tạo nút và mối quan hệ

- DELETE: xóa nút, mối quan hệ, thuộc tính. - SET: Cập nhật thuộc tính giá trị

- FOREACH: Thực hiện cập nhật trên mỗi phần tử trong danh sách - WITH: Chia câu truy vấn thành nhiều, bộ phận khác biệt

Ví dụ cho đồ thị như sau:

Hình 5. 1. Ví dụ đồ thị

Ví dụ tìm một người dùng có tên là John trong chỉ mục và sau đó duyệt đồ thị để tìm kiếm những bạn của bạn John(không thông qua trực tiếp bạn của anh ây) trước khi trả về bạn của bạn John và John

Câu truy vấn như sau:

START john=node:node_auto_index(name = 'John') MATCH john-[:friend]->()-[:friend]->fof

RETURN john, fof Kết quả như sau:

Ví dụ tiếp theo là chúng ta sẽ thêm tiêu chính lọc cho câu truy vấn. Chúng ta lấy danh sách của user(IDs của nút) và duyệt đồ thị tìm kiếm những user khác mà có mối quan hệ là friend. Chỉ trả về những user được follow, người có tên bắt đầu bằng chữ S. Câu truy vấn như sau:

START user=node(5,4,1,2,3) MATCH user-[:friend]->follower WHERE follower.name =~ /S.*/ RETURN user, follower.name Kết quả như sau:

Một phần của tài liệu Tiểu luận môn cơ sở dữ liệu nâng cao Cơ sở dữ liệu đồ thị Neo4j (Trang 56)