2012-02-20 70 views
0

作为一个培训项目,我正尝试在Azure上构建一个Family Tree应用程序。NO SQL数据库的设计

第一步是数据库,我打算使用表存储。

对于家族树应用程序,表格存储设计的外观如何?

我虽然有一些解决方案。

  • 每人一个入口,其中xml与该人的所有关系。但是这意味着需要为给定的更改和大量的重复数据更新多行。
  • 一个表,每种类型的信息,一个人,一个关系......但是,这感觉就像一个关系型数据库

回答

1

我会为每个家庭每人建立一个分区,因此对于每个人,分区键将是家庭,行键是该人的标识符。每个人为父母提供一个属性(通常只有两个:))。通过这种方式,您可以快速将整个分区读入内存,并使用内存树结构遍历图形。一个典型的家庭应该有不到一百个节点,所以会闪电般快。更新将始终是一个家庭,所以交易可以用于每个家庭都在一个分区。

对于一个非常困难的(相关的)练习,在键值存储(表存储)之上实现一个图形数据库(如家谱)。想想Twitter或Facebook有什么需要在所有关系(社交图)中看到更新(推文,新闻)的问题。然后你开始进入NoSQL的有趣(困难)部分。

1

我的第一个问题是,你如何计划访问的信息?考虑如何构建数据,以便访问它。不要回避违反我们过去20年来的正常化规则。拥抱冗余的专业模型。也想出来并考虑使用平行查询。如果数据存储在多个位置,请同时追踪每个位置并汇总结果。

最后,以预定义的显示格式存储一些数据。赔率是你的家庭树信息大多是阅读,所以有“优化的意见”。也许当你找到想要显示的人时,那里就有一个XML文件,可以让所有数据准备好查看。

1

鉴于家族树应用程序与实体之间的关系比实体本身更重要,因此在关系数据库中对此进行建模将会更合适。

我发布这并不回答你的问题,但在一天结束时,我们需要选择最适合该任务的工具。