为什么你成不了架构师

近期入职新公司 接手架构重构 感慨颇多、也学到不少东西、

学会了时间不使用timestamp 使用bigint、价格不使用decimal 而是int or bigint

以前常念叨 适合业务的技术才是最好的技术、却少有感慨

为什么使用bigint作为时间单位?

1
2
3

1、首先兼容oracle、其次项目内部流转不容易异常【项目中是这个说法、貌似timestamp我也没碰到过异常】<br>
2、还有就是int值比较容易比较 尤其针对范围查询 较快些吧、估计timestamp底层比较就是int方式

{———-}

为什么使用int或者bigint作为价格单位

1、首先这点不能一定就说项目中就一定是对的、暂时没有想到以前的设计方案

项目中的想法了解到、价格小数点取到后四位 1.0001元、

2、当然decimal肯定可以甚至可以更好的decimal(10,5)这样的设计我觉得会更好

事实上现在也出现了问题 总价格不能超过2100000.00000【int的最大值】

系统重构是痛苦的、后续任务中涉及表重构、需要设计索引、

以前曾经擅自在项目表设计上加过联合索引、被领导小训了一顿、

从此对之是挺害怕的、甚至到之前一直都不知道为什么错了、知识水平有限

回家路上是左思右想、有了这么几个猜测

1
2
3
4
5
6
7
1、使用explian table查询表索引 联合索引两个字段有一个被索引另一个没有索引
2、联合索引、更新表要更新索引缓存、而实际查询率并不高、
也就是说花费了巨大的代价去维护一个索引健、而用到的时候却比较少
3、我擅自增加索引的表是用户表、用户表更新比较频繁、查询较少、
进一步增大了【2】的代价去干了不该干的事、
4、一系列的骚操作、不知道底层就瞎搞胡搞、须知所有的设计都是有利有弊、
都是为了某些业务场景而设计、把不该用的配置用到不该用的业务上、就会与期望值南辕北辙

为什么你成不了架构师?

每一个系统都有自己的业务需求、天下没有两片一样的叶子、也没有两个一样的系统、

即使业务需求一样、不同的程序员也会设计出不同的系统

1
2
3
4
5
6
7
8
9
10
都在讲架构师要有两方面准备【技术架构】和【业务架构】

技术架构:从最简单的LAMP【linux+apache tomcat+mysql+php】到SOA、
到微服务、以及各个组件的针对场景使用
业务架构:这个是选择来的、不同的公司在做不同的业务、没有业务架构知识、
你连一个表都设计不出来、不了解业务面对老系统设计都不敢动、还谈什么架构?


就像 我为什么在这使用中文:而不是英文:
因为中文间距宽 更易读、而使用英文 间距小 不容易读

只去关注技术的优缺点、永远成不了架构师、只有了解系统的特点、才能更好的设计出一个优秀的系统、又快又稳定。