Bạn đang giả định rằng lưu trữ phiên và lưu trữ cơ sở dữ liệu là độc quyền. Họ không. Nhưng hãy bắt đầu bằng cách giả sử chúng là.
Lợi thế của việc lưu trữ phiên là ba lần:
- Không cần phải chèn dữ liệu vào cơ sở dữ liệu. Bạn chỉ cần đặt một biến phiên và bạn đã hoàn tất. Đơn giản và ít rủi ro về chức năng.
- Không cần quản lý vòng đời của người dùng ghé thăm và giỏ hàng vì các container / khung làm việc đó cho bạn
- Thông thường tự động dọn dẹp các phiên nhàn rỗi cũ được thực hiện cho bạn.
Nhược điểm của lưu trữ phiên:
- Mối quan hệ phiên, trừ khi bạn điều tra nhân rộng
- Không có chuyển đổi dự phòng, trừ khi bạn điều tra sao chép hoặc lưu giữ thủ công trạng thái phiên vào đĩa, điều này có thể trở nên phức tạp.
- Tất cả các phiên phải được lưu trữ trong bộ nhớ. Điều này được khuếch đại nếu bạn sử dụng nhân rộng.
Ưu điểm của lưu trữ cơ sở dữ liệu:
- Không cần phải lo lắng về mối quan hệ phiên hoặc nhân rộng nhà nước. Bạn có thể làm tròn tất cả các yêu cầu.
- Ít bộ nhớ trong ứng dụng.
- Nếu đơn hàng được hoàn thành, mọi thứ sẽ kết thúc trong cơ sở dữ liệu, vì vậy điều này có thể giúp việc hoàn thành dễ dàng vì dữ liệu đã có sẵn.
Nhược điểm của lưu trữ cơ sở dữ liệu:
- Giỏ hàng bị bỏ rơi - một số người dùng ẩn danh đã thêm một mặt hàng vào giỏ hàng của họ và biến mất. Dữ liệu đó tồn tại mãi mãi trừ khi bạn có một số quy trình hết hạn.
- Bạn cần đưa ra một cách để theo dõi người dùng và tìm hiểu xem, đối với một yêu cầu nhất định, điều này thể hiện một phiên duyệt web hiện có hay mới. (vâng, điều này có thể dễ dàng nếu bạn sử dụng cookie, nhưng làm thế nào để bạn đảm bảo hai người dùng không kết thúc với cùng một id?).
- Thêm mã
Bạn đã không đề cập đến nền tảng bạn đang sử dụng. Tôi sẽ tìm kiếm một cách tiếp cận sử dụng phiên dựa trên cơ sở dữ liệu trong đó dữ liệu phiên chỉ tồn tại trong bộ nhớ trong vòng đời của chu kỳ yêu cầu / phản hồi, tải nó từ cơ sở dữ liệu và lưu lại vào cơ sở dữ liệu. Điều này đã phục vụ tôi tốt trong quá khứ.
Ưu điểm của phiên hỗ trợ cơ sở dữ liệu:
- Không cần mối quan hệ máy chủ.
- Dễ dàng trên bộ nhớ máy chủ ứng dụng
- Dữ liệu phiên nhàn rỗi / bị bỏ rơi được dọn sạch cho bạn.
- Vòng đời của người dùng truy cập đầu tiên, truy cập lặp lại, kết thúc phiên là tất cả đã được tìm ra cho bạn.
- Dễ mã
Nhược điểm của phiên hỗ trợ cơ sở dữ liệu:
- Cấu hình - bạn cần điều tra vùng chứa của mình, cho dù đó là PHP, Java EE (Tomcat, Jetty, JBoss, v.v.), node.js + express.js hay không hỗ trợ điều này và cung cấp cấu hình đúng.
- Bạn có thể cần tải thử nghiệm này vì bạn đang thêm 2 thao tác cơ sở dữ liệu cho mỗi yêu cầu.
Có một khả năng thứ ba, mà ai đó đã chạm vào trước đó. Bạn có thể bỏ qua việc sử dụng các phiên hoàn toàn và sử dụng bộ nhớ phía máy khách bằng cách nhúng mọi thứ vào bộ nhớ trong cookie hoặc html.
Tôi sẽ để lại những ưu / nhược điểm của nó như là một bài tập cho bạn, nhưng tôi sẽ cho bạn một gợi ý rằng đối với lưu trữ html5, khả năng tương thích trình duyệt có thể là điều cần xem xét cẩn thận.
Tôi đã phác thảo sự thật cho bạn. Hy vọng rằng điều này sẽ giúp bạn đưa ra quyết định đúng đắn cho tình huống của bạn.