【问题标题】:How to specify tablespaces and prefix for table names in apache activiti如何在apache activiti中为表名指定表空间和前缀
【发布时间】:2020-09-22 01:36:49
【问题描述】:

我在我的 Spring Boot 应用程序中使用 activiti:'org.activiti:activiti-spring-boot-starter:7.1.0.M3.1'。 默认情况下,所有 activiti 表都包含在 Spring Boot App 数据库模式中——在我的例子中是 Oracle 12.2。所有 activiti 表名都以 'ACT_' 前缀开头,并且所有这些表及其索引都在默认的 'USERS' 表空间中。

是否可以为 activiti 表指定额外的前缀?比如我想给所有的activiti表加上'FOO_'前缀,那么'ACT_RE_MODEL'就是'FOO_ACT_RE_MODEL'。

如何指定表空间'INDX'让activiti在不同的表空间而不是'USERS'中创建索引?

【问题讨论】:

    标签: java oracle indexing activiti tablespace


    【解决方案1】:

    如果你使用的是 Activiti 5 或 6,它使用 MyBatis 作为 ORM。 为了更新标准表名和索引,需要修改activiti-engine/src/main/resources/org/activiti/db下的mybatis映射)

    您还需要更新创建和删除 sql 文件(在同一文件夹下)

    显然这会造成升级问题,但我相信您已经意识到这一点。

    【讨论】:

    • 是的,升级问题很明显,所以我不会修改MyBatis映射器。在您回答之后,我在 application.yml 中发现了两个可用的 activiti 参数:'custom-mybatis-mappers' 和 'custom-mybatis-x-m-l-mappers'。可能是,这些参数帮助我使用“INDX”表空间重建索引?
    【解决方案2】:

    您可能不想将USERS 表空间用于与您的应用程序相关的任何内容。与其尝试为每个对象自定义表空间,不如为整个架构设置一个默认表空间通常更简单,如下所示:

    alter user app_schema default tablespace schema_tablespace;
    

    【讨论】:

    • 我知道,但是我们需要将 USERS 表空间用于表,将 INDX 表空间用于索引。管理员可以在应用安装时为索引指定表空间名称。
    • 但是为什么需要使用 USERS 表空间呢?该表空间通常在许多临时用户之间共享,并且可能会因意外活动而被填满。我工作过的每个关心表空间管理的组织都希望应用程序使用该表空间。而且为索引使用单独的表空间通常是浪费时间。这两种选择可能都有充分的理由,我只是想检查一下你是否有充分的理由,并且你不会仅仅因为“这是我们一直这样做的方式”而以一种奇怪的方式做事。 (但我有时知道“它就是这样”。)
    • 在我们的例子中:“历史上如此”。我的 Spring Boot 应用程序只是一个大系统中的一个小模块,并且需要将应用程序数据存储在它自己的数据库中,而不是在系统范围的数据库中。好的,我一定会向项目经理提出这些问题。
    猜你喜欢
    • 2021-05-29
    • 1970-01-01
    • 2014-11-07
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多