Chúng tôi đang xây dựng một nền tảng web kết hợp nhiều dịch vụ, mỗi dịch vụ có dữ liệu cơ bản riêng. Các dịch vụ này đang được xây dựng độc lập theo các nguyên tắc của Kiến trúc hướng dịch vụ , nhưng chúng giao dịch với các dữ liệu có khả năng liên quan. Chúng tôi đang xem xét liệu các dịch vụ này nên chia sẻ một cơ sở dữ liệu lớn hay mỗi cơ sở dữ liệu đều có cơ sở dữ liệu riêng. (Chúng tôi đang có kế hoạch sử dụng SQL Server 2008 Enterprise trên cụm Windows 2008.)
Một số ưu điểm của từng phương pháp chúng tôi đã xem xét bao gồm:
Cơ sở dữ liệu đơn
- Dữ liệu liên quan từ các dịch vụ khác nhau có thể được liên kết với nhau bằng các ràng buộc khóa ngoài
- Trích xuất phân tích đơn giản hơn để viết và thực hiện nhanh hơn
- Trong trường hợp xảy ra thảm họa, việc khôi phục nền tảng về trạng thái nhất quán sẽ dễ dàng hơn
- Đối với dữ liệu được tham chiếu bởi nhiều dịch vụ, dữ liệu được lưu trong bộ nhớ cache của một dịch vụ có thể sẽ được sử dụng ngay sau đó bởi một dịch vụ khác
- Quản trị và giám sát đơn giản hơn và rẻ hơn trước
Nhiều cơ sở dữ liệu
- Công việc bảo trì, sự cố phần cứng, vi phạm bảo mật và vv không nhất thiết ảnh hưởng đến toàn bộ nền tảng
- Giả sử mỗi cơ sở dữ liệu nằm trên phần cứng riêng biệt, nhân rộng nhiều máy mang lại nhiều lợi ích hiệu suất hơn so với nhân rộng một cơ sở dữ liệu lớn
Từ góc độ hoạt động, có lợi hơn không khi mỗi dịch vụ trong nền tảng này có được cơ sở dữ liệu riêng hoặc tất cả chúng đều đi trong cùng một cơ sở dữ liệu? Những yếu tố chính thông báo một câu trả lời cho câu hỏi này?