2010-06-13 4 views
0

Je regardais le site Web d'amazon et me demandais comment l'une de la caractéristique aurait été mise en application. La caractéristique: ce que les clients achètent après avoir vu un article particulier.amazon design doute

Si je devais développer une telle fonctionnalité, je générerais probablement un identifiant de session pour chaque session d'utilisateur et stockerais la combinaison id d'identification de page de session dans un fichier journal. et si un livre est acheté, définissez un indicateur distinct pour l'identifiant de la page d'identification de la session. Un programme séparé peut ensuite être exécuté sur le fichier journal périodiquement, pour identifier les groupes qui ont été achetés ensemble/visualisés ensemble et cette information peut être stockée dans un fichier persistant. Ceci est bien sûr une solution simple sans tenir compte de la nature distribuée des serveurs - mais cela suffirait-il ou pourrait-on m'aider à identifier un meilleur design?

Répondre

1

Ce que vous pouvez faire est de suivre ce que chaque utilisateur a regardé, en ayant (user_id, product_id, date) dans une base de données. Vous pouvez ensuite regarder ce que les gens ont acheté le jour où ils ont regardé cet article. Mais, vous voudrez améliorer cela, car, si j'ai regardé une casserole et acheté un livre, vous ne voulez pas montrer les deux, à moins que ce soit un livre lié à la cuisine, peut-être. Mais, stocker l'ID de session n'est probablement pas le meilleur choix, car, ce qui se passe si j'avais regardé quelque chose, puis plus tard, après avoir parlé avec mon SO, j'ai décidé que je pouvais acheter cet iPad, comme il ne le ferait pas apparaître comme quelque chose que j'ai acheté après avoir regardé un cahier. Donc, commencez par écrire quelques histoires d'utilisateurs, essentiellement quelques scénarios qui montrent ce que vous voulez faire, alors la conception sera probablement plus facile.

+0

Bonne idée. Mais l'utilisateur dans de nombreux cas peut ne pas être enregistré lors de la recherche d'un produit. J'ai envisagé l'utilisation de la base de données au début, mais ce ne sera pas un frein à la performance quand il y a des millions de pages par jour. – praveen

+0

La conception pilotée par l'utilisateur est une excellente idée. – praveen

+0

Si votre table n'est pas fortement indexée, alors les insertions sont rapides, donc juste quelques index et ça devrait aller. –