2017-02-02 15 views
5

Tôi đang tạo mẫu một lược đồ bảo vệ người dùng/bảo vệ dữ liệu trong Neo4j và tôi gặp sự cố lạ với một trong các truy vấn của mình. Đối với nền, khái niệm là một người dùng đang cố gắng để có được từ một để có thể nhận được nếu họ có nhận dạng truy cập chính xác. Vì vậy, các cạnh của chúng tôi là các loại có số nhận dạng truy cập trong chúng. Tôi đang thử nghiệm sơ đồ này bằng cách tạo nhiều nút và kết nối các cặp với các truy cập khác nhau. Tức là, tôi có rất nhiều bộ:Số lượng lớn các loại mối quan hệ trong truy vấn cypher

(a)-[:ACCESS_A]->(b) 

Với các truy cập khác nhau. Tôi truy vấn chúng với:

{some query} with a match (a)-[:ACCESS_A|:ACCESS_B|<...>|:ACCESS_Z]->(b) return b 

trong đó kích thước của danh sách trong kết quả cạnh tăng lên với số lượng người dùng truy cập.

Tất cả đều hoạt động tốt, cho đến khi danh sách đạt tới 201 lượt truy cập. Tại thời điểm này, hồ sơ hiển thị các lần truy cập db và thời gian thực hiện đi WAY lên. Tại 200 loại mối quan hệ, tiểu sử hiển thị 1051 lần truy cập db, nhưng 201 loại mối quan hệ hiển thị 31801. Mức tăng gấp 30 lần cho một loại khác! Thời gian thực hiện tăng theo cách tương tự. từ 199 đến 200 chỉ tăng khoảng 50 lần truy cập và đó là do số lượng nút tăng lên.

Sau khi làm việc nhiều hơn, có vẻ như số vòng 200 là một cá trích đỏ nhiều hơn vấn đề. Trước đây, các loại mối quan hệ của tôi là 4 ký tự. Khi tôi thay đổi chúng thành 9 ký tự (prepending "EDGE_", như một bài kiểm tra), vấn đề bắt đầu xảy ra ở 50 loại - 50 có 36 lượt truy cập, trong khi 51 có 291 - một bước nhảy nhỏ hơn, nhưng đáng kể khi so sánh với tăng trước đó kiểm tra.

Dường như có một số mối quan hệ về tên mối quan hệ với nơi truy vấn bị tắt, nhưng tôi vẫn đang điều tra.

Những điều mà tôi đã thử nghiệm và không tìm thấy được quan tâm:

  • chiều dài của các truy vấn tổng thể (kích thước string): Nó không ở kích thước truy vấn hoàn toàn khác nhau với 4 và 9 loại mối quan hệ nhân vật
  • chiều dài của danh sách trong mệnh đề [e: < ...>] (kích thước chuỗi). Như trên, nó không thành công với kích thước rất khác nhau
  • số nút hoặc cạnh trong đồ thị dưới

Trả lời

1

Theo hiểu biết của tôi bạn không nên chạy vào vấn đề hiệu suất với chỉ có 200 loại mối quan hệ.

Trước phiên bản 3.0, số loại mối quan hệ bị giới hạn ở 64k. Giới hạn đó đã bị xóa với phiên bản 3.0.

+0

Vấn đề của tôi không phải là với số loại trong biểu đồ (thực tế nhỏ hơn số lượng loại có thể tôi chuyển vào, vì lý do thử nghiệm) nhưng với số trong truy vấn của tôi. – Tal

0

Tôi đã có thể khám phá giải pháp cho vấn đề của mình. Dường như yêu cầu Neo4j cho nhiều loại mối quan hệ khác nhau hơn tồn tại gây ra vấn đề. Tôi đã có thể sử dụng nhiều hơn 200 khi tất cả các loại đó đều tồn tại. Do đó, giải pháp là để đảm bảo bạn không yêu cầu bất kỳ loại nào không có trong biểu đồ.

Các vấn đề liên quan