1.什么是web hook

webhook是一个API概念,并且变得越来越流行,我们能用事件描述的事物越来越多,webhook的作用范围也就越大, webhook作为一个清凉的事件处理应用,正变得越来越有用

我们在网上做的工作,大部分其实就是事件,webhooks已经成为了连接系统的主要方式,不管是用户创建,支付成功,DockerHub镜像推送或者Git仓库上的合并请求,这些都是非常有用并且轻量级的共享信息的方式

  • 简单来说,就是一种反向API,类似于触发器一样

    • 打个比方,比如项目A要从项目B获取数据,通常需要项目B提供一个API接口,然后项目A去请求项目B的接口,获取数据

    • 通过webhook机制,对客户端和服务端的模式进行逆转

    • 继续新增加一个需求,项目A需要从项目B获取实时数据,如果按照传统做法,不停的去请求接口,就算是实现了这个功能,但是,效率和性能都非常的低

    • 通过webhook机制,我们在项目B中加上一个触发器,在项目B每次创建新数据或者修改了某个数据,就会自动触发, 便会向项目B的hook地址进行请求,项目A收到项目B的请求,然后对数据进行处理


2.mysql外键的选择

所有的web开发都离不开性能和效率,我们就来聊聊mysql物理外键的性能问题

为何说外键有性能问题,让我们慢慢分析一下

  1. 数据库需要维护外键的内部管理,这样就给数据库增加了一些性能负担,尽管是些小负担,但是在数据量庞大的时候,和优化过的数据库差距也是很大的
  2. 外键等于把数据的一致性事务实现,全部交给数据库服务器完成,同样也会增加数据库服务器的压力
  3. 有了外键,当做一些设计外键字段的增删改等操作之后,需要触发相关操作去检查,从而不得不消耗资源
  4. 外键还会因为需要的请求对其他表内部加锁而容易出现死锁的情况

虽然很多人不推荐你使用物理外键,但你听到更多的是mysql,而不是SQL server或者其他,比较公认的是,他的外键设计得确实不怎么好,限制多功能不强大等等

还有,最重要的一点是,万一主键所在的表需要拆分,重构,那么,物理外键对应的表,也要进行一系列繁琐的操作,另一方面,数据库帮你保证级联关系,自己不保证思路清晰啊

所以,逻辑外键在业界是比较成熟的,不适用物理外键,我们也可以约定逻辑外键,不再数据库中声明,外键,只在程序中实现关联

那么,逻辑外键实现了物理外键的功能,这,才是开发人员的第一选择


说到这里,在数据库的策略上,我们也可以选择逻辑删除

逻辑删除,就是,只对表进行更新增加操作,不进行删除,不再使用的历史数据,定期的归档来减少压力

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐