2010-06-13 184 views
0

我在看亞馬遜網站,並想知道如何實現一個功能。該功能:顧客在查看特定商品後購買的商品。亞馬遜設計懷疑

如果我要開發這樣的功能,我可能會爲每個用戶會話生成一個會話ID並將會話ID頁面ID組合存儲在一個日誌文件中。如果購買了書籍,則爲會話ID頁面ID設置單獨的標誌。然後可以定期在日誌文件上運行單獨的程序,以識別一起購買/查看的組,並且可以將信息存儲在持久性文件中。

這當然是一個簡單的解決方案,而不考慮服務器的分佈式特性 - 但是這樣做還是可以幫助我確定一個更好的設計。

回答

1

您可以通過在數據庫中存儲(user_id,product_id,date)來跟蹤每位查看者查看的內容。然後,你可以看看人們在看那件商品的那天買了什麼。

但是,你會想要改善這一點,因爲如果我看着烹飪鍋,買了一本書,你不想展示這兩本書,除非它是一本烹飪相關的書,或許。

但是,存儲會話ID可能不是最好的選擇,因爲,如果我看了一些東西會發生什麼,然後在與我談話後會發生什麼,我決定我可以購買iPad,顯示爲我在查看筆記本後購買的東西。所以,從寫出一些用戶故事開始,基本上只是一些顯示你想要做什麼的場景,那麼設計可能會更容易。

+0

好主意。但是,在許多情況下,用戶可能在搜索產品時未註冊。我最初考慮了數據庫的使用,但是當每天有數百萬次頁面點擊時,它不會成爲嚴重的性能拖延。 – praveen 2010-06-13 14:46:13

+0

用戶故事驅動的設計是一個好主意。 – praveen 2010-06-13 14:47:01

+0

如果你的表沒有嚴重索引,那麼插入是快速的,所以只需要幾個索引,它應該沒問題。 – 2010-06-13 17:34:26