数据库规划
由于CabloyJS内置三个运行环境,因此,我们需要对不同的运行环境配置不同的MySQL参数。在介绍MySQL参数配置之前,我们还需要先介绍一个数据库规划
的概念
为了进一步优化日常的开发体验,提升开发效率,CabloyJS定义了一个数据库规划
的概念,具体如下:
1. 测试环境
在测试环境
不必指定数据库名称,而是由系统自动创建测试数据库
。每当执行单元测试时,总是删除旧的测试数据库,然后创建一个新的测试数据库
- 1# 重建数据库 + 单元测试
- 2$ npm run test:backend
- 3# 或者
- 4# 仅重建数据库
- 5$ npm run db:reset
比如,项目的名称是cabloy-demo
,当执行单元测试时,系统会自动创建一个测试数据库,数据库名称为egg-born-test-cabloy-demo-20210703-110520
这样设计的好处
:在项目的开发迭代当中,难免会频繁的修改数据库架构。那么一般的做法是,打开数据库管理工具进行手工修改。在CabloyJS中,只需要在模块的Bean组件version.manager
中编写变更逻辑,然后执行一遍单元测试
就生效了。换句话说,在CabloyJS开发当中,很少用到数据库管理工具
有人会问一个问题
:如果执行单元测试
会重新创建一个新的数据库,那么之前的测试数据是不是又需要重新手工输入一遍?
- 针对这个问题,CabloyJS也提出了相应的解决方案:就是在模块的Bean组件
version.manager
中直接编写测试数据的初始化逻辑。每当创建新的测试数据库时,这些测试数据都会自动生成
关于模块的Bean组件
version.manager
,请参见:模块数据版本与变更
2. 开发环境
在开发环境
也不必指定数据库名称。每当启动后端开发服务时,总是查找可用的测试数据库,如果没有找到(比如,没有执行过单元测试)就自动创建一个新的测试数据库
- 1# 启动后端开发服务
- 2$ npm run dev:backend
3. 生产环境
在生产环境
需要手工创建数据库,并在config.prod.js
中指定数据库名称
- 1# 启动服务
- 2$ npm run start:backend
- 3# 启动服务(后台运行)
- 4$ npm run start:backend-daemon
- 5# 停止服务
- 6$ npm run stop:backend
MySQL连接配置
注意:以下均是默认配置,一般不用变更,只要确保
host
、port
、user
和password
符合实际值即可
1. 测试环境
src/backend/config/config.unittest.js
- 1 // mysql
- 2 config.mysql = {
- 3 clients: {
- 4 // donnot change the name
- 5 __ebdb: {
- 6 host: '127.0.0.1',
- 7 port: '3306',
- 8 user: 'root',
- 9 password: '',
- 10 database: 'mysql', // donnot change the name
- 11 },
- 12 },
- 13 };
名称 | 说明 |
---|---|
__ebdb | 这是系统内置的MySQL节点名,不允许变更 |
database | 指定为mysql ,在执行单元测试时,会自动删除旧的测试数据库,然后创建一个新的测试数据库 |
2. 开发环境
src/backend/config/config.local.js
- 1 // mysql
- 2 config.mysql = {
- 3 clients: {
- 4 // donnot change the name
- 5 __ebdb: {
- 6 host: '127.0.0.1',
- 7 port: '3306',
- 8 user: 'root',
- 9 password: '',
- 10 database: 'mysql', // recommended
- 11 },
- 12 },
- 13 };
名称 | 说明 |
---|---|
database | 推荐指定为mysql ,在启动后端开发服务时,查找可用的测试数据库,如果没有找到就创建一个新的测试数据库。如果指定为其他具体的数据库名,就直接使用此数据库 |
3. 生产环境
src/backend/config/config.prod.js
- 1 // mysql
- 2 config.mysql = {
- 3 clients: {
- 4 // donnot change the name
- 5 __ebdb: {
- 6 host: '127.0.0.1',
- 7 port: '3306',
- 8 user: 'root',
- 9 password: '',
- 10 database: '{{name}}',
- 11 },
- 12 },
- 13 };
名称 | 说明 |
---|---|
database | 此数据库需要手工创建 |
SQL语句输出
在CabloyJS中只需指定一个参数即可实现SQL语句的输出,从而方便我们排查SQL方面的问题
src/backend/config/config.{env}.js
- 1 // mysql
- 2 config.mysql = {
- 3 clients: {
- 4 // donnot change the name
- 5 __ebdb: {
- 6 ...
- 7 hook: {
- 8 meta: {
- 9 long_query_time: 200,
- 10 },
- 11 },
- 12 },
- 13
- 14 },
- 15 };
名称 | 单位 | 说明 |
---|---|---|
long_query_time | 毫秒 | 当SQL语句执行时间超过该值,就会输出到控制台。如果设置为0,就相当于输出所有的SQL语句 |
评论: