一位后端开发的养肝历程,护发经验
限定列的有效值是非常有用的,比如bug表的status,我们定义check约束,让它只允许保存(“NEW”,”IN PROGRESS”,”FIXED”),那么它就会拒绝所有不存在以上集合中的无效值。但是定义check约束,我们日后改如何修改限定有效值呢?这就是本章所讲的反模式。
阅读全文
整数是一个很有用的数据类型,但是只能存出整数,但是它不能表示像“2.5”这样的浮点型。如果数据对精度要求很好,你需要使用另一种数据类型来代替整形。当然还要保证运算结果必须正确。
由于许多原因USQL移除本地MySQL功能,需要者可以参照以下教程来完成。
在一个新环境(新电脑),第一次执行mvn package,很有可能出先类似问题,具体报错信息如下:
mvn package
随着数据量增长,数据库的查询性能也会随之下降,哪怕查询结果只是很少的几千行,遍历表中积累的数据也可能使整个查询性能变得极差,即使使用了索引,随着数据量增大,索引的作用也变得非常有限。 本章目标就是要优化数据库的结构来提升查询性能以及表的平滑扩展。
有时候在我们需求中,一条记录会对应多个相同内容的列,比如电话号码:家庭电话、工作电话、手机号码等。那么就需要分四列来存储,而且后面需求可能还加入出差电话、传真号码这些不可预测的分类。
像第2章一样,解决一个属性看上去只属于一张表,但是同时可能会有多个值。 这一章,使用bug数据添加标签来举例。一个bug可以存在多个标签。
在生产环境下出现bug,都需要靠日志才能定位到问题的关键,而有效的日志往往能让你事半功倍。在生产并发访问情况下,日志纵横交错,那么如何快速找到你要看的日志呢? 本章将介绍通过AOP使打印的每一条日志增加一个与业务相关的logId。
允许用户对bug记录进行评论,我们很容易设计出一个一对多的关系。但是随着需求变更,可以进行评论的可能是多张表,比如bug和feature_request都可以进行评论,就会有类似以下的关系。
12345678
-- 错误的语句,仅用于表现关系create table comment( comment_id serial primary key, issue_id bigint unsigned not null, ....... foreign key(issue_id) reference bug(issue_id) or reference feature_request(issue_id));
可扩展性是程序员所追求的。通常一张表对应一个实体,但是需求中也可能两个实体他们继承同一个父类实体,他们由相同的属性,也有不同属性。 bug和feature_request,有相同的属性,我们抽出一个父类issue。
本篇主要粗略介绍程序在启动时,连接mq做了哪些操作,你可能需要先自己阅读一遍源码,再来看本篇文章,或对照源码看本篇文章