数据服务
1. 什么是数据服务
有数据操作的服务就是数据服务。
2. 数据库
我们使用两个数据库,一个是postgre,我们用它来保存配置数据,一个是mysql,我们用它来存储业务数据库。如果你的系统比较小,只使用一个数据库也是可以的。如果数据库比较大,需要分库的话,也可以配置多个数据库。
注:
- 分库时多个数据库之间的表不能进行联合查询。
- 分库访问时,原子操作与单库原子操作不一致。
- 分库访问的配置文件写法与单库配置文件不一致,请参阅原子操作文档@mmstudio/an000036,@mmstudio/an000037和@mmstudio/an000014。
- 在同一个项目中分库访问和单库访问可以并存.
- mysql/mariadb支持数据库集群方式,postgre暂不支持。请根据项目需求合理选择数据库。
- postgre数据库支持存储json格式数据和查询,mysql/mariadb不支持
- 如果修改了配置文件
mm.json
,需要重新启动调试(在vscode中快捷键为alt+m d
)。 - 对于多库访问方式,请不要修改数据库名称(不是地址),否则需要同时修改该项目所有用到的代码。
- 注意@mmstudio/an000037不支持
$1,$2
这样的占位符,请使用?,?
. - 还可以使用
api的方法
实现多数据库兼容
2.1. docker
推荐使用docker创建数据库,以下为docker-compose
的配置文件
version: '3.7'
services:
postgres:
image: postgres
container_name: postgres
volumes:
- /home/feidao/data/postgre:/var/lib/postgresql/data
restart: always
environment:
POSTGRES_DB: mmstudio
POSTGRES_USER: mmstudio
POSTGRES_PASSWORD: Mmstudio123
ports:
- 5432:5432
mariadb:
image: mariadb
container_name: mariadb
restart: always
volumes:
- /home/feidao/data/mysql:/var/lib/mysql
environment:
MYSQL_DATABASE: mmstudio
MYSQL_USER: mmstudio
MYSQL_PASSWORD: Mmstudio123
MYSQL_ROOT_PASSWORD: Mmstudio123
ports:
- 3306:3306
adminer:
container_name: adminer
image: adminer
restart: always
ports:
- 8080:8080
使用docker-compose
启动命令为:
sudo docker-compose -f /path/to/images.yaml up
2.2. 数据库操作
数据库操作一般包含增,删,改,查四种操作的各种组合。详见sql操作中的示例
2.3. 调用原子操作完成服务
练习内容