首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声誉引擎的设计

声誉引擎的设计
EN

Stack Overflow用户
提问于 2013-06-15 21:36:31
回答 1查看 126关注 0票数 2

让我们设想一个社交网络,在这个网络中,每个用户都可以通过委托等方式从他人那里获得声誉。假设A和B最初的信誉是1,当A委托给B时,A有0,B有2,然后B可以委托给C,以此类推。

此外-延迟有其作用域,并且作用域可以嵌套。所以A可以委托所有主题的声誉,或者只委托编程,或者只委托c#。他可以将编程委托给B,但将C#委托给C。这意味着最终的声誉取决于给定的作用域。

因此,我们得到了一种有向图结构(可能是树,但还不清楚循环是什么),我们需要遍历它来计算信誉。

我试图用DDD原则对其进行建模,但我不确定这里的总和是什么。

我认为委托树/图是一个候选,因为聚合是一致性的单位。然而,这意味着聚合将是非常大的。作用域使它变得更加复杂,因为它使聚合边界变得不清晰。C#上的委托是编程上委托的聚合的一部分吗?

那么用户呢?作为一个集合,它必须存储到/来自其他用户的引用(委托)。再说一次-给定的用户属于哪个聚合?

另一个问题是如何有效地计算声誉。我猜在这种情况下,图形数据库将比关系数据库更合适,但这是唯一好的答案吗?

EN

回答 1

Stack Overflow用户

发布于 2013-06-17 05:00:21

中的根聚合用于强制执行不变量。您告知我们的委托规则是一组不变量。不知道你可能需要什么其他不变量,很难说出合适的根聚合是什么,但简单地按照你所呈现的"user“在我看来是一个完美的根聚合,可以将你所有的委托规则作为不变量来执行。用户可以具有一个或多个委派范围,这些委派范围本身可以是根聚集。根据委派规则,用户可以委派给另一用户,而另一用户又可以根据这些相同的规则委派。这允许您强制执行所有不变量,并且在DDD规则下存储对(其他)用户的引用是没有问题的。

不断询问如何一致地强制执行特定于域的规则,您将发现您的根聚合。

关于你的另一个问题:图形数据库似乎比关系数据库更好,但很难用有限的信息来判断。我建议您单独发布这个问题,并包括您对关系数据库和图形数据库的考虑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17124242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档