周末继续闲扯
先问大家一个问题,在涉及到系统架构或者技术选型时,通常会面临很多选择,如果让你来做选型,你会选择什么方案,比如数据库你会选什么?
我这么问其实是设有陷阱的,但凡脱离了实际业务场景谈架构都是耍流氓。
开源数据库产品近10年来百花齐放,10年前还是关系型数据库的天下, 因为他们有天然优势,一通用,二保证了数据一致性,当然缺点也不少。
随着互联网的高速发展,业务也随之变得复杂,数据量呈指数级增长,所以近年来诞生了很多非关系型数据库,比如k-v类型的redis,文档数据库 mongodb, elasticsearch,等等。
最近我遇到一个问题就是某个业务数据量已经到了千万级别, 还在持续增长,因为数据库用的是 MySQL,在可以遇见的一段时间后,这个表将面临数据查询慢的性能瓶颈。
千万级数据量当然不是简单列加个索引就能解决问题的,毕竟重新建索引就是个非常缓慢的过程。
所以不得不做分表分库处理,虽然MySQL已经有很多成熟的分表分库的中间件,但好像针对python的并不多。 分表分库麻烦,是垂直分还是水平分,根据什么字段来分,都是要考虑的问题,要改动的业务逻辑代码也不少