这才是真正的表扩展方案

事情变得有意思了,上一篇花1小时撰写的一分钟文章,又引起了广泛的讨论,说明相关的技术大家感兴趣,挺好。第一次一篇技术文章的评论量过100,才知道原来评论精选还有100上限,甚为欣慰(虽然是以一种自己不愿看到的方式)。

《啥,又要为表增加一列属性?》的方案颇有争议:

(1)版本号version + 扩展字段ext

(2)用增加列的key+value方式扩充属性

有些评论,只能说所谓夏虫,何以语冰(作者要谦和,请删除)。因自己时间仓促,有些地方没有交代清楚,对不起大伙,实在抱歉。大部分评论还是在进行技术讨论,故今天再熬夜补充说明一下。

零、缘起

讨论问题域:

(1)数据量大、并发量高场景,在线数据库属性扩展

(2)数据库表结构扩展性设计

一、哪些方案一定是不行的

(1)alter table add column

要坚持这个方案的,也不多解释了,大数据高并发情况下,一定不可行

(2)通过增加表的方式扩展,通过外键join来查询

大数据高并发情况下,join性能较差,一定不可行

(3)通过增加表的方式扩展,通过视图来对外

一定不可行。大数据高并发情况下,互联网不怎么使用视图,至少58禁止使用视图

(4)必须遵循第x范式的方案

一定不可行。互联网的主要矛盾之一是吞吐量,为了保证吞吐量甚至可能牺牲一些事务性和一致性,通过反范式的方式来确保吞吐量的设计是很常见的,例如:冗余数据。互联网的主要矛盾之二是可用性,为了保证可用性,常见的技术方案也是数据冗余。在互联网数据库架构设计中,第x范式真的没有这么重要

(5)打产品经理

朋友,这是段子么,这一定不可行

二、哪些方案可行,但文章未提及

(1)提前预留一些reserved字段

这个是可以的。但如果预留过多,会造成空间浪费,预留过少,不一定达得到扩展效果。

(2)通过增加表的方式扩展列,上游通过service来屏蔽底层的细节

这个也是可以的。Jeff同学提到的UserExt(uid, newCol1, newCol2)就是这样的方案(但join连表和视图是不行的)

三、哪些读者没有仔细看文章

(1)version+ext太弱了,ext不支持索引

回复:属于没有仔细看文章,文章也提了如果有强需求索引可以使用MongoDB,它就是使用的json存储(评论中有不少朋友提到,还有其他数据库支持json检索)

(2)第二种key+value方案不支持索引

回复:uid可以索引

四、key+value方式使用场景

服务端,wordpress,EAV,配置,统计项等都经常使用这个方案。

客户端(APP或者PC),保存个人信息也经常使用这个方案。

今天的重点

以楼主性格,本不会进行解释,上文解释这般,说明这一次,楼主真的认真了。对于技术,认真是好事,认真的男人最可爱(打住,我要吐了)。好了,下面的内容才是今天的重点。

五、在线表结构变更

在《啥,又要为表增加一列属性?》文章的开头,已经说明常见新表+触发器+迁移数据+rename方案(pt-online-schema-change),这是业内非常成熟的扩展列的方案(以为大伙都熟悉,没有展开讲,只重点讲了两种新方案,这可能是导致被喷得厉害的源头),今天补充说一下。

以user(uid, name, passwd)

扩展到user(uid, name, passwd, age, sex)为例

基本原理是:

(1)先创建一个扩充字段后的新表user_new(uid, name, passwd, age, sex)

(2)在原表user上创建三个触发器,对原表user进行的所有insert/delete/update操作,都会对新表user_new进行相同的操作

(3)分批将原表user中的数据insert到新表user_new,直至数据迁移完成

(4)删掉触发器,把原表移走(默认是drop掉)

(5)把新表user_new重命名(rename)成原表user

扩充字段完成。

优点:整个过程不需要锁表,可以持续对外提供服务

操作过程中需要注意:

(1)变更过程中,最重要的是冲突的处理,一条原则,以触发器的新数据为准,这就要求被迁移的表必须有主键(这个要求基本都满足)

(2)变更过程中,写操作需要建立触发器,所以如果原表已经有很多触发器,方案就不行(互联网大数据高并发的在线业务,一般都禁止使用触发器)

(3)触发器的建立,会影响原表的性能,所以这个操作建议在流量低峰期进行

pt-online-schema-change是DBA必备的利器,比较成熟,在互联网公司使用广泛。

楼主非专业的dba,上面的过程有说的不对的地方,欢迎指出。要了解更详细的细节,可以百度一下。有更好的方法,也欢迎讨论,后续会梳理汇总share给更多的朋友。

六、结束

欢迎用批判的眼光看问题,欢迎任何友善的技术讨论,不太欢迎纯属误导非常蠢的方案这样的评论(但我还是会加精选,任何人都有发声的权利)。

借评论中@张九云 朋友的一句话不要以为自己见过的就是全世界,任何方案都有使用场景,一切都是tradeoff作为今天的结尾,谢谢大家的支持,感谢大家

以上就是这才是真正的表扩展方案的所有内容,希望对大家有所帮助.

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

美容院销售技巧|美容院销售技巧,美容院,销售,技巧
美容院销售技巧
贡茶柜台培训手册|柜台培训手册,贡茶柜台培训,贡茶柜台培训手册,贡茶,柜台,培训,手册
贡茶柜台培训手册
贡茶店长培训手册|店长培训手册,贡茶店长培训手册,茶店,培训,手册
贡茶店长培训手册
前台咨询手册|前台咨询手册,咨询手册,前台,咨询,手册
前台咨询手册
中小学生辅导培训机构的前台咨询手册|辅导机构咨询师手册,培训机构咨询手册,中小学生,辅导,培训机构,前台,咨询,手册
中小学生辅导培训机构的前台咨询手册
美业人你可以用这份宝典来借鉴(美容资料合辑)|美业资料合集,美容资料合辑,美业培训资料,美业资料大全,美业培训资料大全,美业人你,可以,这份,宝典,借鉴,美容,资料,合辑
美业人你可以用这份宝典来借鉴(美容资料合辑)
整形医院顾客来院接待流程图|整形医院接待流程,整形医院顾客接待流程,顾客来院接待流程图,整形,医院,顾客,来院,接待,流程图
整形医院顾客来院接待流程图
销售技巧话术培训PPT模板|销售技巧话术培训,销售技巧,销售话术,销售,技巧,话术,培训,ppt,模板
销售技巧话术培训PPT模板

历史上的今天:05月01日

美容院“拓客”必须这样做

美容院“拓客”必须这样做当下美业的经营,一直被人喜欢被人忧,喜欢的的是作为朝阳行业,趋势越来越好;忧的是投资开店简单,经营起来确实难;经过一年、两年、三年的辛辛苦苦,收益并不乐观,回头看看,最大的原因是顾客不进店!如何拓客进店?成为当下众多美容院又烦恼又想要。其实,拓客并不难,难的是拖进来之后你如何去接待。首先我们要确认,拓客的初心是什么?是为了提升业绩,还是为了寻找种子顾客;种子的使命是生根发芽

美容院拓客思路及方案!

美容院拓客思路及方案!美容院拓客思路拓客总体思路:一个美容院有100个老顾客,一个带一个就是100个新顾客,从目前情况来看美容院集中做老顾客带新顾客是一种最有效的手段之一。常规美容院的老顾客转介绍工作往往有几处弊端:1、没有把它当个事情来做,没有形成制度,偶尔要求美容师做此项目工作,美容师也偶尔要求老顾客做转介绍,达成如何就不得而之。2、没有充分调动美容师的积极性,全力以赴做好老顾客转介绍的工作。

美容院经营之美容院拓客技巧

美容院经营之美容院拓客技巧美容院为什么要拓客?新顾客不进门,老顾客又经常流失,美容院的业绩一天不如一天,如果美容院不积极拓客,开发新的顾客,那么,最终美容院的顾客只会一个个流失掉,业务不断下滑,美容院也就步入了万劫不复之地。这不是危言耸听,这是事实。由此可见,美容院必须保持一定数量的顾客,至少要开发30%的新顾客,才能维持美容院业务的需要。当然,在开发新顾客的同时,如何保护好老顾客,也非常重要。美

美容院拓客话术/技巧

美容院拓客话术/技巧老顾客带新顾客优惠卡话术: X姐:您在我们店做护理也有X年了,也是我们最忠诚的老客户了,我们非常喜欢你同时也感谢您这么多年对我们的支持!X姐:您应该很认可我们的服务和产品效果是吧?看您现在皮肤气质越来越好了!X姐:我每次见到您都感觉特别亲切,也很想和您聊天,和你聊天的同时可以让我学很多的知识,如果对我服务有什么意见和建议可要和我讲哦!这样我才会更快的成长,将来更好的给

美容院拓客方案

美容院拓客方案近期有很多美容院的老板咨询美容院怎么做到有效拓客。现在简单回复如下,当然要做到很有效的拓客还需要很多。(一)拓展新客户: 首先,开发新客户是业务开展,业绩增长的需要、现有客户的需求可能不会在短时间之内快速增长,需要不断进行新客户的开发和培养。要扩大业务量 两个条件一个也不能少. 成功销售的起点在于成功的开发客源。 美容院要维持一定量的顾客,一年必须至少开发20%以上的新顾客

美容院拓客营销六大精准法则,拓客又不伤客!

美容院拓客营销六大精准法则,拓客又不伤客!美容院拓展客源的方法有很多,关键在于美容院如何根据自身的实际情况而采取对应的方法,达到拓展客源的目的。在美容院要想方设法拓展客源的同时,美容院的管理工作也要做好,才不至于造成本末倒置的局面,获得美容院经营的稳定增长。美容院如何拓客一直是美容院老板经营的一个难点,业内人士曾调侃的说:与其说是招揽更多的新客户,不如说招更多的元宝进门。但是,美容院在客源问题上往

热门专题

开放大学|开放大学报名,开放大学报考,开放大学,什么是开放大学,开放大学学历,开放大学学费,开放大学报名条件,开放大学报名时间,开放大学学历,开放大学专业
开放大学
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中
小程序开发|微信小程序,小程序开发,小程序,小程序制作,微信小程序开发,小程序公司,小程序开发公司,分销,三级分销系统,分销系统
小程序开发
云南综合高中|云南综合高中
云南综合高中
卓越综合高中|卓越综合高中
卓越综合高中
云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部