Database design 哪种标记模式最有效?

Database design 哪种标记模式最有效?,database-design,tags,Database Design,Tags,Stackoverflow的标记处理是迄今为止我见过的最好的处理之一 有人知道这是否是一种模式模式,我可以从中获得一些想法吗 否则,我只是在寻找关于其他人成功实现了哪些标记模式的建议。您可以从以下内容开始: 本文中提到: 这一切都取决于数据量、内容-标签分布和密度比 如果您的标签分布和密度比较低(典型的人工生成的数据),则只需为数据使用的每个可能的标签集合生成唯一的id或哈希。将“标记集合”id与每个数据实例与这些标记相关联 对于许多形式的人工生成的数据,这一点出人意料地有效 e、 g.Stac

Stackoverflow的标记处理是迄今为止我见过的最好的处理之一

有人知道这是否是一种模式模式,我可以从中获得一些想法吗


否则,我只是在寻找关于其他人成功实现了哪些标记模式的建议。

您可以从以下内容开始:

本文中提到:

这一切都取决于数据量、内容-标签分布和密度比

如果您的标签分布和密度比较低(典型的人工生成的数据),则只需为数据使用的每个可能的标签集合生成唯一的id或哈希。将“标记集合”id与每个数据实例与这些标记相关联

对于许多形式的人工生成的数据,这一点出人意料地有效

e、 g.Stackoverflow有约500000个问题和约20000个标签(太多重复标签!)。大多数问题只有不到五个标签。在最坏的情况下,您将有500000个“标签收集”id要关联,但更现实的是,您将有数千个

由于标记的特定组合不再使用,您还必须对“标记收集”集合进行实例跟踪或垃圾收集

e、 g

  • 标记:id,标记名
  • TagCollection:id,instanceCount
  • TagCollectionTag:tagCollectionIId,tagId
  • 数据:id、标题、内容、tagCollectionId
如果使用了散列(集合中所有标记的散列),则插入标记的速度很快。否则,您必须搜索TagCollection和TagCollectionTag集合,但无论如何这不应该太大

搜索速度快;搜索TagCollectionTag以查找包含特定标记集的实例,然后查找具有任何这些tagCollectionId的数据行


希望这不会太让人困惑:-)

+1我一年前读过这个答案。一年后,我又开始寻找这个答案:)。提前谢谢。您是否可以对“集合的所有标记上的哈希”部分进行一些说明,您的意思是生成一个哈希,将该集合对应的所有标记与应用程序逻辑结合起来,或者我可以从数据库本身获得帮助。这里哪种哈希方案最好?