Đầu tiên, hãy báo trước: Tôi khá mới mẻ với các khái niệm đằng sau cơ sở dữ liệu tài liệu, vì vậy đây có thể là một câu hỏi hoàn toàn rõ ràng.RavenDB có phù hợp với khái niệm này không?
Tôi cần phải thiết kế một hệ thống duy trì một danh mục phân cấp sâu của các bộ phận tạo nên các sản phẩm có độ phức tạp cao. Nó sẽ chi tiết các thành phần vật lý tạo thành từng phần - và mỗi phần có thể là các thành phần của các bộ phận khác - tất cả các con đường đến sản phẩm cuối cùng. Như thế này:
Widget
|- Sprocket
| |- A4 nut
| |- B15 screw
| |- Sprocket Backshell
|- Flange
| |- A4 washer
| |- Flange Housing
|- Widget Assembly
Widget trong ví dụ này sau đó có thể được kết hợp dưới dạng Phần bên dưới một số Sản phẩm khác.
Mỗi sản phẩm có thể chứa hàng chục nghìn đến hàng trăm nghìn phần và mỗi loại thành phần có các thuộc tính khác nhau, không liên quan phải được duy trì. Các thuộc tính này có thể bao gồm các kết nối giữa các phần liên quan.
Hiện tại, chúng tôi có phiên bản kém được thiết kế của hệ thống này, trong SQL Server, dưới dạng một bảng phẳng đơn với khoảng 120 cột và vài triệu bản ghi. Khoảng 85% các trường trong bảng này là null. Công việc của tôi là thay thế điều này bằng cái gì đó dễ bảo trì hơn và hiệu quả hơn và ít bị lỗi hơn.
Xây dựng điều này một cách hiệu quả trong cơ sở dữ liệu quan hệ có nghĩa là chuẩn hóa - trong trường hợp này, có một bảng cho từng loại phần. Đây sẽ là một vấn đề mà tôi nghi ngờ vì có hàng trăm loại phần, và các loại phần mới với các đặc tính riêng của chúng được bổ sung thường xuyên.
Tôi muốn sử dụng RavenDB cho điều này, vì cơ sở dữ liệu tài liệu sẽ phù hợp với tính chất động của các bộ phận, nhưng tôi không biết nó có phù hợp hay không. về tài liệu. Bản thân các sản phẩm là các đối tượng gốc, nhưng vì kích thước của chúng tôi không thể đủ khả năng để lưu trữ một sản phẩm dưới dạng một tài liệu duy nhất.
RavenDB có phù hợp với khái niệm này không? Có bất kỳ gợi ý về cách tốt nhất để đại diện cho nó trong tài liệu?
Điều này khá nhiều câu trả lời cho câu hỏi của tôi - tôi không nghĩ RavenDB sẽ phù hợp ở đây. Sự nhất quán cuối cùng sẽ là vấn đề ở đây - tôi đã quên mất đặc tính đó - và bản đồ/giảm sẽ không giúp tôi nhiều với vấn đề này, tôi không nghĩ vậy. Xấu hổ - Tôi thích tính chất giản đồ động của cơ sở dữ liệu tài liệu để lưu trữ dữ liệu phần, nhưng tôi không nghĩ rằng tôi có thể khiến khách hàng đăng xuất để duy trì hai cơ sở dữ liệu độc lập ... –
Đó là một điều thú vị. Tôi thấy rằng trong thực tế có rất ít trường hợp bạn không thể sống với tính nhất quán cuối cùng, vì hầu hết thời gian bạn không nhận ra bất kỳ sự khác biệt nào (lập chỉ mục ravens rất nhanh, mặc dù nó chạy không đồng bộ) và thậm chí nếu - bạn có thể thực thi tính nhất quán dễ dàng cho các truy vấn đó. Tôi đã xây dựng một số ứng dụng kinh doanh với RavenDB và không tìm thấy điều này là một vấn đề (có những người khác). Tôi không thấy lý do nào khiến khách hàng của bạn cần phải duy trì các dbs độc lập. Bạn có thể gửi email cho tôi nếu bạn muốn theo dõi điều đó. –