哪些标签架构最有效/最有效?

时间:2009-02-27 23:00:54

标签: database-design tags

http://tagging.pui.ch/post/37027745720/tags-database-schemas

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

有谁知道它是否是一种模式模式我可以从中获得一些想法?

否则,我只是在寻找有关其他人成功实施的标记模式的建议。

2 个答案:

答案 0 :(得分:18)

这完全取决于标记分布和密度比的数据量和内容

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

对于许多形式的人类生成数据,这可以令人惊讶地发挥作用

e.g。 Stackoverflow有大约500,000个问题,大约20,000个标签(太多的dupe-ish标签!)。大多数问题都少于五个标签。在最糟糕的情况下,您将有500,000个“标签集合”ID来关联,但更现实的是,您将拥有数千个

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

e.g。

  • 标签:id,tagName
  • TagCollection:id,instanceCount
  • TagCollectionTag:tagCollectionIId,tagId
  • 数据:id,title,content,tagCollectionId

如果使用散列(在集合的所有标签上使用散列),则插入标签会很快。否则你必须搜索TagCollection和TagCollectionTag集合,但这不应该太大

搜索速度很快;在包含特定标记集的实例中搜索TagCollectionTag,然后查找包含任何tagCollectionId的数据行

希望这不会太混乱: - )

答案 1 :(得分:4)