【问题标题】:Hierarchical Data Model with JPA使用 JPA 的分层数据模型
【发布时间】:2020-12-09 16:12:36
【问题描述】:

最近我遇到了这样的模式模型
结构看起来完全一样,我只是用像表(*)这样的实体名称重命名 从表 C 开始,所有表都有接近 200 列,从 C 到 L

发布这个的原因是,我以前从未遇到过这样的结构,如果有人已经经历过这样的经历或工作过类似或更复杂的工作,请分享你的想法,

  1. 这样的结构是好是坏,为什么?

  2. 假设我们需要有 API 来为这样的表结构保存数据, 如何设计API

  3. 我们将如何管理所有这些表中的事务

  4. 在服务代码中,我们可能需要从这些表中获取数据并传输到外部系统的情况很少。 这里要注意的是,外部系统正在接受扁平结构中的请求,而不是我们上面提到的层次结构中的请求。如果需要将这些数据传输到外部系统,我们如何管理编组和取消编组

  5. 最后但同样重要的是,用于管理此类数据的 API 每天至少可以消耗 2K。

    你对此有什么想法,我不知道我们为什么需要它,它需要详细讨论,我们需要分解。

如果我考虑 Spring Data JPA,Hibernate。我需要考虑什么,

更重要的是,所有这些表的行值都将基于 ownerId/tenantId 进行限制,因此所有表中的数据需要保持一致。

【问题讨论】:

  • 请不要将文本格式化为代码,它不可读,您是否尝试过自己阅读您的问题?
  • @perissf。发帖后我没查,我又编辑了。粘贴图像使下面的内容成为代码。如果还不清楚,请告诉我。我将尝试重申这个问题以覆盖更广泛的受众。
  • 好的,现在格式没问题了。您能否扩展第 1 点,以使其不是一个可讨论的问题?更好地解释图中所示的结构,不要问它是好是坏,而是问结构是否有一些特征(哪些特征?)。添加代码。并且不要在一篇文章中问很多问题。只有一个

标签: java hibernate spring-data-jpa spring-data data-modeling


【解决方案1】:

我不能评论结构的一般方面,因为它是非常特定于领域的,人们需要知道为什么选择这个结构才能说出它是否好。无论哪种方式,您都可能无法更改它,所以为什么还要问它是否好?

话虽如此,对于这样的模型,您应该考虑以下几个方面:

  • 更新数据时,只更新真正改变的列以避免索引垃圾并允许数据库在页面中使用备用存储是非常重要的。这是在将 Hibernate 与此类模型一起使用时通常会出现的性能问题,因为 Hibernate 通常会更新所有“可更新”列,而不仅仅是脏列。不过,有一个选项可以进行动态更新。如果没有动态更新,每次更新可能会产生更多的 IO,从而使锁保持更长时间,从而影响整体可伸缩性。
  • 读取数据时,请务必不要默认使用连接提取,因为这可能会导致结果集大小爆炸。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-20
    • 2011-11-03
    • 2012-08-15
    • 1970-01-01
    • 2015-04-15
    • 2014-03-19
    • 1970-01-01
    • 2011-05-19
    相关资源
    最近更新 更多