2008-11-18 47 views
7

Tôi biết sự đồng thuận chung về thông tin như các mặt hàng giỏ mua hàng là lưu trữ chúng trong phiên. Nhưng điều gì về các đối tượng thuộc về một người dùng có thể bị thay đổi bởi những người dùng khác? Ví dụ: một trang web giống như eBay. Nếu bạn lưu trữ "mục" của người dùng trong phiên, chứa số tiền giá thầu hiện tại và người dùng khác đến và đặt giá thầu trên mục đó, bạn sẽ phải cập nhật cả mục trong cơ sở dữ liệu cũng như mục trong phiên, phải không?Lưu trữ giỏ hàng trong phiên

Trong trường hợp như vậy, là các tùy chọn duy nhất để lưu trữ trong phiên và làm mới bất cứ khi nào hành động khác mà người dùng khác ảnh hưởng đến giá trị phiên của một người hoặc lưu trữ mọi thứ trong cơ sở dữ liệu và truy xuất nó mọi lúc (có thể tốn kém nếu bạn nói có giá thầu được hiển thị trên bảng điều khiển bên cạnh của mỗi trang).

Trả lời

6

Tôi sẽ lưu trữ tất cả trong cơ sở dữ liệu và truy xuất mọi lúc. Tùy thuộc vào sự biến động của bộ nhớ đệm dữ liệu trong vài giây có thể theo thứ tự. Vấn đề lớn nhất là giữ hai vấn đề nhất quán.

Tôi nghĩ rằng nó không phải là đắt tiền như bạn nghĩ để lấy dữ liệu mỗi lần. Cơ sở dữ liệu rất hiệu quả nếu bạn đang tìm kiếm dựa trên một khóa. Tôi muốn err ở phía bên của sự đơn giản (lưu trữ trong DB và lấy) cho đến khi vấn đề hiệu suất hiển thị dưới tải (tức là trong Load Load).

Nếu chỉ có một vài lần, bạn có thể sử dụng Cache ứng dụng (trừ khi bạn có nhiều quy trình/máy chủ) và đảm bảo DB và bộ nhớ cache luôn được đồng bộ.

4

Tôi sẽ lưu trữ nó trong cơ sở dữ liệu. Thứ nhất, vì dữ liệu của bạn an toàn hơn rất nhiều ở đó và nó giúp bạn dễ dàng chia sẻ hơn trong trường hợp bạn cần một trang trại. Ngoài ra, bạn không cần phải có dữ liệu trên mỗi trang. Chỉ khi người dùng vào giỏ hàng. Điểm cộng khác của việc lưu trữ nó trong cơ sở dữ liệu là bạn có thể phân tích sau, những thứ mà mọi người đang thêm vào giỏ hàng, nhưng không thực sự mua.

Các vấn đề liên quan