用于异步BI的标记驱动数据库

时间:2013-04-09 13:14:16

标签: database-design tags nosql

我正在设计一个我正在设计的标签驱动软件架构。

我想要做的是将纯文本存储在数据库中,这是所有者和其他实体所喜欢的。纯文本填充标签就像Twitters主题标签一样,应该是可搜索/可索引的。 这可以在应用程序方面完成,因此我将需要为业务智能人员处理大量需要处理的大量数据。

没有人准备好纯文本,这只是关于不需要保持一致并且可以异步运行的分析。

我知道Twitter使用了几个数据库:Gizzard和Cassandra用于推文,FlockDb用于关系。

我不想使用混合物来完成关系,我也不想建立下一个社交网络。我需要做的是分析与其他实体相关的所有标签。

如何解决哈希标记问题,或者如何处理文本以使其有效?

我真的在寻找一个不错的解决方案而不仅仅是任何解决方案。我真的知道如何为SQL创建模式。

感谢您帮助我完成数据库丛林。

1 个答案:

答案 0 :(得分:1)

这是在数据库中表示标签的一种相当标准的方法:

enter image description here

应用程序解析RAW_TEXT,对于每个已识别的标记,检查它是否已经在TAG中,如果它不是,则将其插入到那里。然后,只需将帖子与从中提取的标签连接起来,方法是插入TAG_POST。

注意TAG_POST的复合主键中的字段顺序 - 在前沿具有TAG_ID有助于有效搜索给定标记的帖子。如果您想获得给定帖子的标签,请翻转订单。如果您想要两者,请以与PK相反的顺序创建复合索引。

如果你的DBMS支持clustering,TAG_POST将是一个很好的候选者。


如果您的DBMS支持前沿索引压缩(Oracle),请考虑简单地执行此操作:

enter image description here

压缩索引会有效地存储同一TAG_NAME的多个重复内容,因此无需"外包"为了节省空间,它到另一张桌子。