问题标签 [aggregates]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
domain-driven-design - 是否应该始终完整加载域实体?
我有一个自定义 ASP.NET 成员资格提供程序,我正在尝试向其中添加密码历史记录功能。用户的密码在 X 天后过期。然后他们必须将密码更改为过去 X 次更改中未使用过的密码。
我已经有了 User 实体,它有一个密码属性作为他们当前的密码。这映射到数据库中的用户表。由于我需要以前密码的列表,因此我创建了一个 UserPassword 表来存储此信息以及对 UserId 的 FK 引用。
由于密码是值对象,在用户之外没有任何意义,它们属于用户聚合,用户作为根。但我的困境就在这里。当我从存储库中检索用户时,我是否总是必须获取他们以前使用的所有密码?99% 的时间我都不关心他们的旧密码,所以每次我需要用户实体时检索它们对于数据库性能来说似乎是一件愚蠢的事情。我不能使用延迟加载,因为 User 实体与上下文断开连接。
我正在考虑创建一个 PasswordHistory 实体,但由于上述原因,密码并不是真正的实体。
你们那里的 DDD 专家将如何处理这种情况?
谢谢。
编辑1:在考虑了更多之后,我意识到这本质上是一个关于延迟加载的问题。更具体地说,您如何处理断开连接的实体中的延迟加载?
编辑 2:我正在使用 LINQ to SQL。使用CodePlex中的this将实体与上下文完全分离。
entity-framework-4 - 使用 Entity Framework 4.0 的存储库模式聚合和聚合根
我有一个关于使用我的数据模型实现存储库模式的问题。我在网上搜索并查看了很多帖子,但我没有找到任何可以解决我疑问的答案。基本上我们的域模型如下所示,我们有一个客户端对象,它有很多子对象,而一些子对象又会有一个子对象,并且在任何时候都不需要这些没有父对象的子对象,也不会生成在应用程序中的任何意义。
它是这样的。所以从上面的表示中我有一些聚合,根是客户端对象,所以我想在聚合根级别创建一个存储库,即客户端。我的问题是如何处理其他聚合。任何人都可以请给我一些想法。
谢谢,阿杰。
postgresql - 如何使用 count() 返回零值
如何返回 count(a.thread_id) = 0 的行?
postgresql - 具有多个参数的 PostgreSQL 聚合
我一直试图在接受一个或多个选项参数的 PostgreSQL(8.4 或 9.1)中创建聚合。
一个例子是创建一个PL/R
扩展来计算第 p 个分位数,使用0 <= p <= 1
. 这看起来像quantile(x,p)
,并且作为查询的一部分:
哪里TABLE (category:text, x:float)
。
建议?
sql - 多聚合、多过滤、单表 SQL
以下模拟表包含订单详细信息,其中cust_nbr
表示订单号。我正在尝试查找订单是否包含item_nbr
90000,我需要知道 90000 的价格是否大于其他项目加税的总和。我在这张表中有数十万条记录。我正在使用 Teradata。
样本数据:
查询应执行以下操作:
所以,初步结果应该是:
然后,对于初步结果中的每条记录,我需要从结果中减去 90000 的价格,item_nbr
只有purchase
当购买低于item_nbr
90000 的价格时才返回结果为net_cb
所以,我的最终结果应该是:
sql-server - 在同一选择语句中聚合查询
我有一个选择语句,它返回 5 列(这需要 1-2 分钟),其中一列是颜色(即只有红色、蓝色和黄色三种颜色)。现在我想在同一个 select 语句中显示红色的行数、蓝色的行数和黄色的行数。
选择语句是这个
我想要这样的输出
有什么帮助吗?
sql - postgres 综合性能
我注意到 Postgres (8.3) 中的简单聚合性能存在一些问题。问题是,如果我有一个由 (customer_id,order_id) 唯一的表(比如 200M 行),那么查询select customer_id,max(order_id) from larger_table group by customer_id
比执行以下操作的简单 Java/JDBC 程序慢一个数量级以上:
1) 初始化一个空的 HashMap customerMap(这将映射 id -> 最大订单大小) 2) 执行“select customer_id,order_id from large_table”,并获取流式结果集 3) 迭代结果集,在每一行执行类似的操作以下:
这种性能差异是预期的吗?我不应该这么想,因为我想上面的内容非常接近内部发生的事情。是否有证据表明数据库存在错误/错误调整?
java - DDD:跨聚合维护约束
仍在阅读和学习 DDD 并尝试将其应用到我正在从事的项目中。我仍在尝试绕过聚合并遇到一个有趣的问题。
假设我有 2 个聚合,1 个具有根的帐户实体,另一个具有根的用户实体。
没有用户就无法创建帐户,但用户可以,这就是为什么它们都充当自己聚合的根。请注意,他们的聚合包括其他实体,但这对我的问题并不重要。
一些业务规则: 1) 创建帐户时,必须与用户关联。如果用户不存在,则必须先创建它。
2) 当一个帐户被删除时,其关联的用户也必须被删除。
3) 创建用户时,不需要与帐户关联。
3) 当一个用户被删除时,如果它与一个帐户相关联,它也必须被删除。
由于 Account 和 User 形成了它们自己的聚合,因此可能会有它们自己的 Repositories。这意味着标准的添加、删除、查找和删除方法将由每个存储库定义。
因此,鉴于这些情况,完成以下任务的最佳方法是什么: 1) 创建帐户时,我想我会在其用户属性上调用一个方法来验证用户是否存在。这是正确的吗?
2)删除帐户后,我如何也删除其关联的用户。从帐户存储库?但这不仅仅是在用户存储库中重复代码吗?或者存储库可以相互引用和调用吗?
3)当用户被删除时,确定它是否与帐户相关联并在不重复代码的情况下将其删除的最佳方法是什么(可能类似于第二个问题)。
我在某处读到,如果逻辑跨越两个实体或聚合,请考虑使用服务。但我对此并不满意,因为是什么阻止了客户端(假设 API 将得到发展,并且用户将在未来使用其他演示文稿)绕过服务并简单地调用存储库?
更新1:
刚刚意识到这可能是一个相关的问题:我应该如何强制聚合根之间的关系和约束?
sql - 在 sql 中使用聚合函数
我可以在不使用来自一个查询的视图的情况下执行以下操作。
这里 N_DEPT 可能是原始表,其中包含名为 DID、MANAGERID 和 BUDGET 的列。
我想获得控制最大预算的 MANAGERID。一名经理可以控制多个部门。DID 是该表的主键。
我怎样才能做到这一点?
repository - 领域驱动设计和聚合参考
我正在设计域模型,但有些东西似乎不太好。
我从一个主要的聚合开始。它引用了其他聚合,而那些其他聚合也引用了更多聚合。我可以从主聚合开始遍历洞域模型。
我看到的问题是我将在内存中保存所有聚合实例。
这是一个好的设计吗?我可以通过延迟加载来解决内存问题,但我认为我有更深层次的问题。
我有另一个关于聚合引用的问题。我应该懒惰地加载对其他聚合的引用吗?如果是这种情况,我几乎不会使用他们的存储库。那样可以么?