当前位置: 首页 > 知识库问答 >
问题:

MappedTable能否在运行时动态定义?

滑弘扬
2023-03-14

我是一个快乐的jOOQ用户已经有一段时间了。在我的应用程序中,我从不更新或删除任何内容。我总是插入一个新行,这样整个历史记录总是可用的。该应用程序具有时间机器模式,允许查看给定日期的数据。

实体的模式类似于

  • 实体表格
    • id
    • 实体的所有不变属性
    • inserted_在插入的时间戳处
    • id
    • entity_id: fk到实体
    • 所有可变属性
    • inserted_at:插入的时间戳

    通过过滤inserted_at列,我可以让我的时间机器工作。

    一切都很好,但随着数据的增加,应用程序的性能正在恶化。我想走捷径。

    我考虑做以下事情:

    • 使用最新版本的数据更新表(与活动表相同的模式,与数据库触发器保持同步):entity_update_latesttable
    • 根据用例动态决定是否命中entity_update表的entity_update_latest

    为了动态地决定,我考虑在我的Jooq配置中使用<代码> MabDabdTe>代码>。

    是否有任何缓存层在使用MappdTable,或者它是安全的,有我自己的实现的MappdTable,根据一些上下文信息动态决定哪个表命中?

    我在考虑找个代理人。


共有1个答案

南宫胡媚
2023-03-14

MappedTable的使用中是否有缓存层

是的,否则,查找会相对缓慢,至少在基准测试中是这样。缓存位于Configuration中。

如果想绕过缓存,可以为每个查询创建一个新的配置,但大多数示例建议您插入一个配置实例,因为所有缓存都位于其中。

但从我对您的需求的理解来看,您不会按每个查询刷新缓存,而是可能每小时/每天刷新一次?在这个时间间隔内创建一个新的配置应该可以。

或者,我自己的实现可以根据一些上下文信息动态决定要命中哪个表,这是否安全

不,这个代理不起作用,至少在jOOQ 3.16中不起作用

 类似资料:
  • 问题内容: 我有一种需要动态更改控制器的情况,以便相应地影响范围变量。总体结构: 我在这里看到它可以在一个。可以在外面做吗?换句话说,我可以告诉angular将其读取为变量而不是字符串文字吗? 问题答案: 正如评论中所讨论的那样,具有用于处理这些情况的强大 功能/库 - (具有强大的 Wiki ) 。 这是需要开发功能块- 状态 的答案,而不是在视图/ URL中进行思考 (从首页引用) : Ang

  • 问题内容: 我的机器上有一个jvm服务器,现在我想在同一台机器上有2个我的apserver,但是我希望备用服务器分配给xmx的内存非常少,因为它的被动服务器是主服务器(主动服务器) )掉了,我想给没有启动的被动服务器分配更多的内存,而无需重启它(我让它们的xmx都太多了- 请注意,它们会在启动时消耗内存,并且我不允许outOfMemory的可能性)。 所以我要被动-低xmx,一旦主动下降,我希望我

  • 问题内容: 我想知道以下情况是否可能。出于测试目的,我希望在应用程序上下文中为不同的测试声明不同的模拟类。这些是使用Jersey REST客户端的验收测试。有没有办法在运行时动态声明bean?Spring是否有API允许在加载上下文后更改应用程序上下文? 问题答案: 关于第一个问题,你可以在运行时通过BeanDefinitionRegistry.registerBeanDefinition()方法

  • 问题内容: 是否可以在运行时动态加载Django应用?通常,应用是在初始化时使用settings.py中的INSTALLED_APPS元组加载的。但是,是否可以在运行时加载其他应用程序?我在不同情况下遇到此问题。例如,一种情况是在测试期间出现的,当时我想动态加载或卸载应用程序。 为了使问题更具体,想象一下我有一个名为我放置应用程序的目录,并且我想自动安装安装在其中的任何新应用程序,而无需手动编辑s

  • 我有一个如下所示的url路径: 如果为 ,则请求应转到。如果为 ,则请求也应转到。如果为 ,则请求应转到,依此类推。 稍后,新的< code >标识符 和< code>N被添加到系统中,并且它们的请求应该被路由到< code>service_IV。 是否可以动态配置Spring cloud zuul代理来执行上述任务? 这个问题包含了一种不同的方法来检验这个问题。 其中,Zuul具有以下配置: Z

  • 我想检查某个程序是否在计算机启动时运行,我为此访问了类: 输出确实是,因为该程序实际上是在windows启动时运行的,但是当我通过禁用该程序启动时(它的状态变为),下次我运行上面的代码时,结果仍然是,尽管该程序不再是启动程序的一部分。 这让我得出了一个简单的结论,当windows任务管理器禁用启动程序时,它不会删除注册表项中的项,而是更改了它的另一个值..但是我无法找到那个更改的值。 我希望有人能