Không phải là một câu trả lời dễ dàng bởi vì rất nhiều phụ thuộc vào kiến trúc ứng dụng, cách sử dụng và các mẫu truy vấn của bạn, sự phân bổ giữa các ứng dụng tài nguyên), số tiền bạn có thể chi cho quản lý mã so với hoạt động và một loạt các vấn đề khác. Dưới đây là một số điều cần xem xét:
1) có một cơ sở dữ liệu sẽ làm cho việc quản lý hoạt động của bạn dễ dàng hơn, yêu cầu ít tài nguyên máy tính hơn và có thể cho phép bạn mở rộng quy mô tốt hơn, nhưng mã hóa lớp truy cập sẽ khó hơn và bạn thực sự phải kiến trúc tốt lớp bảo mật của mình vì những lý do rõ ràng. Bạn cũng sẽ tiêu thụ ít tài nguyên hơn trên máy khách / máy chủ web vì sẽ có ít kết nối hơn.
Có hai tùy chọn lược đồ phổ biến khi tiếp cận một cơ sở dữ liệu nguyên khối:
- Bạn có thể đặt tất cả dữ liệu tương tự vào một tập hợp (nghĩa là:hồ sơ cho tất cả các tài khoản được đưa vào cùng một tập hợp) và cấp cho mỗi tài liệu một khóa khách hàng để xác định dữ liệu nào thuộc về tài khoản nào. Điều này có thể cung cấp cho bạn các tùy chọn tốt nhất (tùy thuộc vào kiến trúc lược đồ của bạn) để mở rộng quy mô với ít tài nguyên máy tính nhất.
- Một tùy chọn khác là tách dữ liệu máy khách theo các bộ sưu tập - mỗi máy khách sẽ có các bộ sưu tập riêng trong cơ sở dữ liệu được xác định bằng tiền tố clientid (ví dụ:clientid_userprofiles).
2) tùy chọn cơ sở dữ liệu cho mỗi máy khách sẽ khiến bạn đau đầu hơn trong việc quản lý hoạt động và tốn nhiều chi phí hơn vì bạn sẽ cần nhiều tài nguyên máy tính hơn. Mặt khác, chi phí viết mã của bạn sẽ ít hơn vì mã sẽ dễ viết hơn. Nó cũng sẽ cho phép bạn phân phối tài nguyên của mình tốt hơn giữa người dùng nặng và nhẹ. Ví dụ:bạn có thể chuyển các máy khách sử dụng nhiều sang các máy mạnh hơn và cung cấp độ sắc nét trên cơ sở mỗi khách hàng.
3) bạn có thể cung cấp kết hợp hai tùy chọn - cơ sở dữ liệu dành riêng cho người dùng cấp cao (tài khoản trả nhiều tiền hơn), và sau đó là cơ sở dữ liệu dùng chung với dữ liệu được phân tách theo bộ sưu tập dành cho khách hàng cấp thấp và tài khoản thử nghiệm / freemium.
Lưu ý rằng nếu bạn thực hiện nhiều tuyến cơ sở dữ liệu, bạn nên xem xét tùy chọn khởi động --smallfiles. Điều này sẽ giúp bạn trong các tình huống mà bạn có nhiều người thiết lập "tài khoản thử nghiệm" nhưng những người không thực hiện nhiều với chúng.
Dù sao, hy vọng những điều trên cung cấp cho bạn thực phẩm để suy nghĩ. Thực hiện tìm kiếm trên https://groups.google.com / forum /? fromgroups #! searchin / mongodb-user / multitenant vì đã có một số cuộc thảo luận trên diễn đàn Mongo về vấn đề cụ thể này.
Đối với các tác động kiểm toán, phụ thuộc vào mức độ tuân thủ kiểm toán mà bạn cần tuân thủ. Nếu bạn mong đợi có được 1000 khách hàng, thì các yêu cầu tuân thủ của bạn sẽ cao hơn nhiều (và tốn kém hơn nhiều - hãy nghĩ rằng 10 đô la đến 100 đô la hàng nghìn đô la), so với nếu khách hàng của bạn là những công ty khởi nghiệp có thể chưa bao giờ nghe nói về SAS70, v.v. Câu trả lời cũng phụ thuộc vào loại dữ liệu bạn đang lưu trữ - đó là dữ liệu tài chính của người dùng hay chỉ là các diễn đàn của người dùng? Về cơ bản, nếu có bất kỳ lo ngại nào về việc cần phải vượt qua các cuộc kiểm tra bảo mật cho các công ty lớn trong tương lai, thậm chí đừng nghĩ đến cách tiếp cận cơ sở dữ liệu dùng chung.