1
virusdefender 2020-08-04 14:57:24 +08:00
docker run 一个 pg 不很简单么
|
2
johnsona 2020-08-04 15:00:44 +08:00
这告诉我们不要在 rdbms 用 json,老老实实关联
|
3
lolizeppelin OP |
4
love 2020-08-04 15:14:53 +08:00
什么场景要在关系数据库时用 json 呢?
|
5
lolizeppelin OP |
6
yjhatfdu2 2020-08-04 16:02:13 +08:00
试试 ponyorm
|
7
mahone3297 2020-08-04 16:06:28 +08:00
线上用 pg,测试用 sqlite ?
你能确保,你的测试,在测试环境过了,线上不出问题?虽然理论上,orm 封装了。。。 |
8
coolyujiyu 2020-08-04 16:49:34 +08:00
测试的环境和线上不一致?作死?
|
9
arischow 2020-08-04 16:53:29 +08:00
环境不统一这不科学
|
10
janxin 2020-08-04 16:54:55 +08:00
不是应该环境一致么...
万一踩到引擎不一致的坑怎么办? |
11
thonatos 2020-08-04 16:55:53 +08:00
显然,是被自己坑死的,和数据库没关系
|
12
Vegetable 2020-08-04 17:02:23 +08:00
sqlite 和 mysql 、pg 还是有一定区别的,一旦用到了其他数据库的特性,都没办法在 sqlite 上测试了吧,比如 DjangoOrm 有一些 pg 特有的特性,sqlite 还有个什么操作不支持,有点记不清了,遇到过一次。
|
13
cco 2020-08-04 17:05:34 +08:00
目前只用过 mysql 的 json 。。。。pg 想用没有需求
|
14
mxT52CRuqR6o5 2020-08-04 17:18:45 +08:00 via Android
@lolizeppelin 测试的目的是尽可能模拟真实环境找出问题,而不是为了方便开发
你对测试的理解就有问题 |
15
lyhiving 2020-08-04 17:25:42 +08:00
关联 JSON 是不对的,JSON 在数据库里面只是为了储存方便。
|
16
johnsona 2020-08-04 18:40:26 +08:00
@lolizeppelin 废话,pg 和 mysql 对 json 的支持能统一吗,你老老实实用 orm,会帮你把关联表转化成 array 好吧,别乱用,你抄 openstack 单元测试的时候,怎么不抄人家的表结构设计呢
|
17
Sunkz 2020-08-04 18:42:54 +08:00
我最近搞 postgis 快被坑死了
|
18
chinvo 2020-08-04 18:47:41 +08:00
efcore 的 sqlite 官方 驱动对有些查询的表现就和其他数据库的驱动不一致
既然是单元测试, 目的就是保障线上运行正常, 为什么不和线上环境保持一致 嫌单元测试实例销毁频繁也没办法, 你可以看看各种流行开源项目, CI 的时间基本都是消耗在 setup 阶段 |
19
chinvo 2020-08-04 18:48:18 +08:00
实在不行就 mock 吧
不实际操作数据库, 全都 mock sql 语句 就默认 sql 语句一定能正常工作好了 |
20
wangkun025 2020-08-04 18:51:16 +08:00
测试和生产不用同一种数据库,谁给你的勇气?
|
21
chihiro2014 2020-08-05 02:03:16 +08:00
每家数据库的内部实现都不统一。你这测试和生产不统一,太秀了
|
22
roundgis 2020-08-05 02:15:49 +08:00
json 的操作不是 sql 标准的一部分
就算是 orm 框架支持也不会兼容全部的数据库 |
23
lolizeppelin OP @mahone3297
@coolyujiyu @arischow @mxT52CRuqR6o5 @wangkun025 @chihiro2014 openstack 单元测试所有数据库都是 sqlite,集成测试才会用到 mysql 海量单元测试用 mysql 才是不现实的,时间过长 如果你们觉得 openstack 的这类开发了整套测试框架的大型项目用 sqlite 测试不合理,那可能你水平比我好很多,因为我大部分都是 openstack 里学来的,也希望你能介绍个更好的 项目 /经验 openstack 里没有使用 json 字段,json 内容都是文本存储 因此单元测试不需要解决 json 问题(所以我没得抄),但是也因此 openstack 没法在数据库层过滤 json 内容需要去业务层做,我自己加 json 发现坑在了单元测试上,mysql 都还好解决 @jsisjs20130824 openstack 的表设计我还是很熟的 这个 array 是 json 的 array,不是关联表,pg 从 json 中独立了出了一个 array 类,看 sqlalchemy 文档里说这个玩意进入标准 sql 了但 sqlalchemy 目前之支持 pg 这个字段用来存储 服务器 ip,vhost 的 domain name 非常好用,需要外网 ip 的就过滤外网字段长度>0, 需要 domain 就 any 字段 domain name, 比做关联表好用多了 |
24
wangkun025 2020-08-05 10:41:52 +08:00
@lolizeppelin 我错了。膝盖给你。
|
25
wuwukai007 2020-08-05 10:45:58 +08:00 via Android
今天发布的 django3.1 支持所有所有 django 支持的数据库的 json 支持,
|
26
johnsona 2020-08-05 14:40:51 +08:00
那你就单独搞一个 mysql 做测试用的数据库,sqlite 文件数据库只是方便,只有一个文件或者是只是内存数据库,但不代表就一定要用这个啊
|
27
no1xsyzy 2020-08-05 15:12:43 +08:00
特定单元测试给个 pg,添句注释 “现在只能用 pg 单测,随时关注替换” 呗
|
28
lolizeppelin OP |
29
lolizeppelin OP |
30
johnsona 2020-08-06 11:39:34 +08:00
@lolizeppelin mysql 的 json 都是后面版本才支持的,你以为呢。人挪活,树挪死,sqlite 没有 json 字段你怎么支持嘛。sqlite 作为单元测试只是减少运维工作量,不至于哪天单元测试用的数据库挂了,你 jenkins 构建跑不过。
但其实也不一定奸杀运维工作量,比如你用的是 flask,你完全可以在单元测试脚本里面,把配置的数据库连接的数据库改成其他数据库,例如 unit 而不是 develop,这样还是一台 mysql 服务器,但是单元测试一个库,其他的环境用其他的库,根本不会相互影响,我就不信你们只有本地和生产,没有测试环境的数据库。 |
31
johnsona 2020-08-06 11:41:31 +08:00
@lolizeppelin 那什么,突然发现自己昨天评论不太合适,还是好好评论,当作把自己知道的表达出来的一种途径吧
|
32
ghostviper 2020-09-04 09:39:30 +08:00
自己写 udf
|