首页 文章

Adjecency List Model或Nested Set Model,我应该使用哪种数据模型来存储我的hierarchiecal数据?

提问于
浏览
0

我必须将我的Web应用程序从Twitter获取的消息存储到本地数据库中 . 存储消息的目的是我需要以分层次序显示这些消息,即用户通过我的应用程序输入的某些消息(即状态更新)是其他人的子节点(我必须将它们显示为父消息的子列表项) ) . 我应该使用哪种数据模型邻接列表模型或嵌套集模型?我必须管理四种类型的消息,每个类别中的消息可以有两个子节点 . 这里还有一个问题是,我在两种情况下都看到(实现)输入是手动控制的,这是在邻接模型中对父节点的引用,或者在嵌套列表中给出了右边,左边 . 我的应用程序从Twitter获取消息数据,如:

foreach ($xml4->entry as $status4) {
       echo'<li>'.$status4->content.'</li>';
       }

所以它没有手册,任何时候都可以获得任意数量的消息 . 如何在来自它的消息中 Build 父子关系 . 目前,用户在与四种类型的消息相对应的不同窗口中输入消息,我的应用程序添加关键字并将这些消息提取回到差异窗口中显示 . 所有这些消息都是父消息 . 现在我如何让用户输入可以作为另一个孩子保存到数据库中的消息 .

2 回答

  • 2

    当你说

    树的深度是2个节点 . 即每个父msg可以有两个子节点 .

    我有点迷惑不解了 .

    如果两个子节点中的每一个都可以有更多的子节点,那么您没有采用深度,而是节点的一个分支的宽度 .

    1) depth really = 2

    如果你的最大深度真的是2(换句话说,所有节点都连接到root,或者两个步骤中的零级节点;换句话说,对于每个节点,没有其他祖先,那么父和祖父母)然后你甚至可以使用关系模型直接存储分层数据(通过自联接,这种情况不是很低,最大深度很低,或者将数据分成3个实体 - 祖父母,父母和孩子)

    2) depth >> 2

    如果数字2是宽度并且深度是可变的并且可能非常深,则查看嵌套集,还有两个可供探索的可能性

    • 使用嵌套集的想法,你可以探索geom类型来存储分层数据,(好处可能不那么有趣 - 几个有用的运算符,单个字段,可能更好的索引策略)

    • continued fractions(基于嵌套集,tropashko提供了一般化,这似乎很有趣,因为他们承诺改进嵌套集的一些问题;虽然没有实现它......做你自己的测试) .

  • 1

    http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

    如果您要拥有更多或更少深度的数据树(从每个根节点开始),请考虑使用嵌套集,因为AL会很慢 .

相关问题