试图了解ebay的架构

时间:2009-08-05 15:55:56

标签: database schema ebay

我想建立一个类似于ebay的网站(它的迷你版本,使用LAMP堆栈作为我猜的基本设置,或者你们可能会提出其他建议),我想知道他们是如何构建他们的系统的。我最不了解的部分是他们如何管理他们的类别。他们有一个搜索代码,可能还有一个用于发布待售商品的代码以及一个用于显示商品的代码。但他们如何为每个类别创建/存储模板?他们设置背后的数据库结构是什么?最后他们有这么多的类别和子类别,假设有人发布了一个项目(这很可能是ebay用于添加类别的过程) 电机 - >零件和配件>赛车零件

几天后,人们在“赛车部件”下要求更多子类别:

  • 附件
  • 赛车零件
  • 紧固件,流体和垫圈
  • 卡丁车赛车零件
  • 安全设备
  • 其他

所以现在他们为赛车部件提供了一个新的水平:

  • 电机 - >零件和配件>赛车零件>附件
  • 电机 - >零件和配件>赛车零件>紧固件 等。

在添加新子类别之前已发布的现有列表会发生什么?他们被转移到子类别?易趣是否强制要在子类别中列出新项目并删除“赛车零件”的旧发布表单?如果他们这样做,如果用户错过了一个类别,用户可能会感到困惑而不发布,然后ebay会赔钱。如果他们没有删除一般的赛车零件发布表格,那么用户将发布一个过于通用的类别,现在很难使用“优化搜索”选项,因为所有表单都有不同的字段,ebay可以过滤由

如果你们有任何想法,请告诉我。我真的很困惑他们是怎么做的,并且真的很想理解:)

2 个答案:

答案 0 :(得分:4)

这是Randy Shoup on Ebay's Architecture

他主要讨论可扩展性,可用性,可管理性等。根据您的具体要求,您可以自己设计Schema。 Slides

来自他的chat transcript

“它甚至是一个关系数据库,还是真的不同?

这是一个非常不同的。它是像谷歌或雅虎这样的搜索引擎!由开发AltaVista搜索引擎的人开发,与许多搜索引擎一样,它是基于类似的原则开发的,这是一个倒排索引。有一组带有ID的文档,关键字被索引到这些文档中,查询操作通过交叉列表或这些关键字的向量发生,非常简单,并且有关于它如何工作的更多细节。挑战 - 对于eBay风格的搜索引擎而言,挑战在于我们的用户希望搜索引擎能够在近乎实时的情况下进行更新。当有人对可以更改价格的商品出价时,价格是人们非常有兴趣查询的过滤器。所以它实际上意味着风格 - “你以某种批处理模式构建索引然后将其上传到搜索引擎”的经典网络搜索引擎风格,这对我们来说并不适用。它需要更加实时。所以我将在我的异步部分讨论一下这个实时系统是如何工作的,但无论如何,为了完成搜索的可扩展性思想,我们的想法是搜索引擎可以水平分割。所以这个整体搜索索引无论大小如何。我们把它分成十或二十或六十或几百块,然后用这种方式划分基础设施。然后我们有一个聚合器片段,它现在确实散布/聚集在索引的所有不同部分。所以有人查询“iPod”或“Mickey Mouse”或“Wii”,聚合器将查询发送到不同的分割或分片中的每一个,并将结果返回并聚合它们并将它们发送回用户。“

答案 1 :(得分:0)

我能想到的一个简单设计是拥有一个用于存储类别的数据库关系,另一个用于属于类别的项目。

第一个数据库关系将以父子方式存储类别,其中很容易添加更多类别或子类别。与项目的第二个关系将与第一个关系中的一个或多个条目具有外键关系,反映该项目所属的一个或多个类别。