Tôi hơi bối rối về giải pháp tốt nhất cho ứng dụng của tôi là gì. Như tôi đã thấy cho đến nay, tôi phải chọn giữa neo4j độc lập (RestGraphDatabase) và một EmbeddedGraphDatabase (RemoteGraphDatabase không dành cho việc sử dụng sản xuất).Máy chủ Neo4j và được nhúng
Ưu REST:
-> Các dịch vụ khác nhau có thể truy cập vào neo4j DB (mẫu: tôi có một dịch vụ mà có trách nhiệm Nodes thuộc loại A, B và C. Các dịch vụ thứ hai là chịu trách nhiệm cho các nút D và H và có thể kết nối các nút D thành nút A). Theo cách đó tôi có cấu trúc miền sạch. Mỗi dịch vụ chỉ chịu trách nhiệm về các nút miền riêng của nó. Tôi có thể cập nhật từng dịch vụ và không phải tắt toàn bộ ứng dụng của mình.
-> Tôi có thể truy cập vào DB neo4j từ các ngôn ngữ khác nhau (PHP)
Nhược điểm: - Hiệu suất không phải là tốt như một EmbeddedGraphDatabase (kể từ khi máy chủ neo4j và dịch vụ trên cùng một máy độ trễ là không lớn lắm). - Không có giao dịch
Câu hỏi của tôi: Đây có phải là quyết định tốt để đi với máy chủ độc lập không? Hoặc tôi nên sử dụng một nhúng và trộn các dịch vụ thành một lớn? Có thể chạy một ứng dụng lớn (phức tạp) mà không cần hỗ trợ giao dịch không?
Tôi muốn thêm rằng REST-API (được thử nghiệm với hai thư viện Python) có vấn đề về hiệu năng nghiêm trọng với các tập dữ liệu lớn (chúng tôi đã nhập 10 GB, vì vậy thậm chí không phải là tập dữ liệu thực sự lớn). Chúng tôi đã sử dụng trình nhập lô nhưng sau một giới hạn nhất định, máy chủ gần như chặn. Có các cuộc thảo luận mở về vấn đề đó, nhưng tôi chưa nhận thức được giải pháp. Nói chung, tôi muốn giới thiệu cài đặt được nhúng cho tất cả các vật nặng. – Bouncner
@ Bouncner Ba năm sau, bạn có biết đây có phải là trường hợp không? Khoảng thời gian giống như bạn chúng tôi cũng nhận thấy vấn đề hiệu suất này, nhưng đã không sử dụng nó kể từ đó. –