我想建立一个类似于ebay的网站(一个迷你版,使用一个灯堆作为基本设置,我想也许你们会提出其他建议),我想知道他们是如何建立他们的系统的。我最不明白的是他们是如何管理自己的类别的。它们有一个搜索代码,可能有一个用于发布待售商品的代码,还有一个用于显示商品的代码。但是他们如何为每个类别创建/存储模板呢?他们的设置背后的数据库结构是什么?最后,他们有很多类别和子类别,比如说有人在里面发布了一个项目(这很可能是eBay用来添加类别的过程)
电机->零件和附件->赛车零件
几天后,人们在“赛车部件”下要求更多的子类别:
配件
赛车配件
紧固件、流体和垫圈
卡丁车赛车配件
安全设备
其他
因此,现在他们有了一个新的水平,赛车零件,像这样:
马达->零件和附件>赛车零件>附件
电机->零件和附件>赛车零件>紧固件
等。。
在添加新子类别之前已经发布的现有列表发生了什么?他们会被转移到子类别吗?易趣是否会强制将新物品列在子类别中,并删除其旧的“赛车部件”过账表?如果他们这样做了,如果用户丢失了一个类别,用户可能会感到困惑,不发布,然后易趣会赔钱。如果他们不删除一般赛车部件发布表单,那么用户将发布一个过于通用的类别,现在将很难使用“优化搜索”选项,因为所有表单都有不同的字段,ebay可以根据这些字段进行筛选。
如果你们有什么想法,请告诉我。我真的很困惑他们是怎么做到的,我真的很想理解:)
最佳答案
这里是Randy Shoup on Ebay's Architecture
他主要讨论可伸缩性、可用性、可管理性等。模式是您必须根据自己的特定需求自行设计的。
Slides
从他的chat transcript
“它甚至是一个关系数据库,还是真的与众不同?
这是一个非常不同的。它是一个像谷歌或雅虎这样的搜索引擎!由开发Altavista搜索引擎的人开发的,和许多搜索引擎一样,它也是基于类似的原则开发的,即它是一个反向索引。有一组具有id的文档,关键字被索引到这些文档中,查询操作通过将这些关键字的列表或向量相交来进行,非常简单,并且有很多关于如何工作的详细信息。另一方面,易趣风格的搜索引擎面临的挑战是,我们的用户希望搜索引擎基本上是近实时更新的。当有人出价一个项目,改变价格,价格是一个过滤器,人们非常感兴趣的查询。所以它实际上意味着这种风格——那种经典的网络搜索引擎风格“你在一种批处理模式下建立索引,然后将其上传到搜索引擎”对我们来说并不是真正的工作。它需要更多的实时性。所以我将在我的异步部分稍微讨论一下实时系统是如何工作的,但是无论如何,为了完成搜索可伸缩性的思想,我们的想法是搜索引擎可以水平拆分。所以有一个不管大小的搜索索引。我们把它分成10块、20块、60块、100块,然后这样划分基础设施。然后我们有一个聚合器,它现在确实在索引的所有不同部分上进行分散/聚集。因此,有人查询“ipod”、“米老鼠”或“wii”,聚合器将查询发送到不同的拆分或碎片中的每一个,并将结果返回并聚合它们并将它们发送回用户。
关于database - 试图了解易趣的模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1234158/