技术文章

当前位置:首页>帮助手册>技术文章

o2server启用数据库配置分库实现分库存储和数据库中间件+分库配置存储

时间:2022-08-11   
内容导读

本篇说明 O2OA 服务端在多数据库场景下的配置思路:数据存储由 openjpa 完成对象与表的映射,连接池负责实际访问,当单库容量或并发成为瓶颈时,可借助数据库中间件或增加数据库实例分担压力。文中还提到类名与表名需保持互斥、不同数据源之间的切换方式,以及组合配置时的注意事项,便于按业务规模规划存储结构,并评估后续扩容与运维成本。

数据库中间件实现分库分表数据存储

o2server 的数据存储由 openjpa 完成 ormapping 映射,再通过 durid 连接池访问数据库;当数据量增长到单库难以承载时,可以通过数据库中间件或配置多数据库来分担压力。

数据库中间件.drawio.png

数据库中间件配置可以参考:mysql 实现数据库读写分离搭建高负载 o2server 集群

配置多数据库实现分库数据存储

o2server 同时支持在业务层面实现数据分库存储.可以通过在:

o2server/externalDataSources.json

通过配置实现针对不同的数据进行分库存储,实际环境中已完成工作,已办,已阅会随着使用年限的增长不断增加,但访问较少(冷数据),通过下面的配置我们将已完成工作,已办,已阅存储到独立的数据库 db2中,其他数据则存储到默认的 db1中.这样可以较好的存储数据而不用经常考虑扩容和性能问题.

配置分库.drawio.png

[
{"url":"jdbc:mysql://192.168.100.1:3306/db1?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8",      "username" : "root","password" :"123456","includes": [],"excludes": [
     "com.x.processplatform.core.entity.content.WorkCompleted",
            "com.x.processplatform.core.entity.content.TaskCompleted",
            "com.x.processplatform.core.entity.content.ReadCompleted"
            ],"enable" : true},
{"url":"jdbc:mysql://192.168.100.2:3306/db2?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8",      "username" : "root","password" :"123456","includes": [
            "com.x.processplatform.core.entity.content.WorkCompleted",
            "com.x.processplatform.core.entity.content.TaskCompleted",
            "com.x.processplatform.core.entity.content.ReadCompleted"
            ],"excludes": [],"enable" : true}
]

在第一条配置中将配置数据库链接到 db1,由于数据是通过 ormapping 映射到数据库表的,数据库表是通过 entity 的 java 类名进行标识的.

  • 已完成工作:com.x.processplatform.core.entity.content.WorkCompleted

  • 已办:com.x.processplatform.core.entity.content.TaskCompleted

  • 已阅:com.x.processplatform.core.entity.content.ReadCompleted

在 excludes 中将这三个类排除在外 在第二条配置中将配置数据库链接到 db2,在 includes 中包含在第一条配置中排除的类. 这样这三个类关联的数据库表将存储到 db2中. 这样就可以实现在业务层面实现数据库分库存储.

多数据库配置时,类名与表之间必须保持互斥。

"数据库中间件" + "配置多数据库" 实现数据存储层面和业务层面的数据库分库分表环境

也可以结合"数据库中间件" 和 "配置多数据库" 实现复杂的数据库分库分表配置.

上述配置可以组合使用,从而对数据存储实现更精细的控制。

数据库中间件+配置分库混合.drawio.png

相关问题讨论

windows 环境下启动失败 Exception: can not define o2server base directory.

o2server/externalDataSources.json

查看原帖讨论 · 12,273 次浏览

关于运行 o2server 报 NoClassDefFoundError: org/apache/logging/log4j/core/Layout 的问题

o2server 数据存储通过 openjpa 实现 ormapping,再通过 durid 的数据库连接池实现和数据库的连接.所以 o2server 可以使用各种数据库中间件(数据库代理)实现数据库的分库分表存储.

查看原帖讨论 · 11,173 次浏览

o2oa 安装 sqlserver2008r2后无法启动

数据库中间件配置可以参考:mysql 实现数据库读写分离搭建高负载 o2server 集群

查看原帖讨论 · 10,075 次浏览

相关内容

兰德网络O2OA平台软件

兰德网络 O2OA 平台软件

开源、自主可控的协同办公底座

研发与运营

纵横翱途(杭州)科技有限公司

企业级协同应用 · 工作流引擎 · AI 智能体

www.o2oa.net | 400-888-0545

上一篇:使用鉴权配置实现外部系统与O2OA 平台的单点登录

下一篇:关联内容管理文档和审批流程