jdbc 批量insert_CRUDer 的自我修养:PostgreSQL、JDBC、MyBatis、R2DBC

1f36de19db92dc6e2bc16dd2f5fe74d8.png

这是一系列文章的目录,对于一个合格的 CRUD 程序猿/媛、码农、IT民工,更高效的进行 CRUD 是我们孜孜不倦的追求!本文是系列文章的序文,首先介绍各技术的亮点,再在之后的单独文章里详细介绍各技术的功能、优势、技巧等……通过对这 4 个主题的介绍,增进我们更好的进行 CRUD 开发。

PostgreSQL

本系列文章以 PostgreSQL(以下简称:PG)为例讲解 SQL,对于 CRUDer ,SQL 是基础中的基础!我们应逃出 ORM 的束缚,在 SQL 的海洋里乘风破浪。这里首先介绍 PG 的其中 4 个亮点技术:

数组

其实 JDBC 标准本身是支持数组的,而且大部分数据库也支持数组类型,但日常开发中这个特性使用得还是比较少。在业务建模中应用数组是很常见的需求,比如一篇文章的 TAG 标签列表、组织的管理员(用户ID)列表等很多对于事实表需要存储少量列表数据的情况。而对于列表数据很多的情况使用数组存储就不大合适,继续使用一张关系表是个有效的解决方案,比如组织内的成员列表,因为一个组织内的成员可能很多,可能成千上万;这么大的一个数组是不必要的,而且通常业务上也不会一次性对这么大的一个数组进行查询或处理。

在了解了数组类型的适用范围后,我们来看看 PG 里具体怎样定义和使用数组。PG 的数组类型是一个完备的类型,支持几乎所有的类型的数组,如:int[]text[]numeric[]timestamp[] 等。可以看到,要声明一个列为数组类型,只需要在普通的类型后面加个中括号 [] 即可。我们可以 通过中括号并由 array 修饰 的方式来定义一个数组:

insert into t_test(topic, tags, user_ids, create_time)
values ('topic-002', array ['Java','Scala','Javascript','SQL'], array [2,3,4], now());

JSON

现在,越来越多的关系型数据库支持 JSON 了,这使关系型数据库在某种程度上具备了 NoSQL 的特性(灵活性),同时还拥有 NoSQL 不具备的关联查询、事物等易用的特性。可以说,在 PG 里使用 JSON(jsonb)类型会是一个比使用 MongoDB 更好的一个选择!因为 PG 的 JSON 融合了 NoSQL 数据库的模式灵活性,同时还具备关系型数据库的关系查询、事物、索引等能力,MongoDB 实际上在创建二级索引后性能非常的差,至于 K/V ,有很多比 MongoDB 更好的选择……

PG 里有两种 JSON :

  1. jsonb:将解析后的 JSON 结构以二进制的方式存储,类型 MongoDB 的 BSON 那样,有查询优化,同时可以为某些字段创建索引;
  2. json:按字符串存储,在每次使用时再转换成 JSON,写入速度更快,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值