本文来源gaodaima#com搞(代@码$网6
前言
写这篇文章的出发点是记录我在工作中处理数据的问题中累计的经验,写着写着发现每一个点都会衍生出其它的背景知识,如优化索引时需要对慢查询、Explain等相关功能有一定的了解,如引入Elasticsearch需要解决数据的同步,学习Elasticsearch的知识等等,由于文章的篇幅不可能把每一个点都像视频教程一样细细道来,只能以我有限的认知和对一些通用性的点进行归纳总结。即便是这样,文章的篇幅也已经很长了,大家如果对某一点有兴趣的话还请自行baidu/google单个细节的深入知识。
文章的篇幅较长,如有兴趣不妨品味一遍,希望没有浪费您的数十分钟。【推荐学习:《mysql视频教程》】
思考角度
数据库技术到目前共经历了人工管理阶段、文件系统阶段和数据库系统阶段。
在早期没有软件系统的时候,通过手工计帐和口头协议的人工管理阶段也能实现现实世界对某种业务运行,这种形式存在了相当长的时间,是效率相对低下的一种方案。往后的一个阶段,随着计算机技术的发展,出现了以excel表格代替手工计帐的文件系统阶段,一定程度的提高了生产力。再到软件系统以操作简单、效率高效的数据库系统阶段,实现了生产力的再次提升,把现实世界的具体问题抽象成了数据,通过数据的流转与变动来表代现实世界的业务。而在软件系统中,数据的存储一般由一个关系型数据库搭配多个非关系型数据库组建而成。
数据库跟系统业务是强关联的,这就要求产品经理的设计业务的时候要了解数据存储跟查询的流程,在设计之初就明确改业务对数据库会有什么影响跟是否需要引用新的技术栈。如产品经理设计的一个业务是对多张单表体积百万级的mysql表进行数据统计分析汇总,如果直接用mysql多表查询的话一定会产生慢查询从而导致msyql服务的宕机,这时解决方案便是要不产品端妥协,要不改变技术栈。
系统架构与数据库方案中要选择更合适公司团队能力的,在系统前期,简单的数据库优化配合钞能力会是最有性价比方案,但遇到mysql数据库钞能力也无能为力的时候,引入对关键功能为核心的软件服务就会成为最有性价比方案,如何在遇到问题时选择合适的方案,就是体现你价值的时候了。
一个穷小伙攀上一个富家女,短暂的甜蜜終敌不过现实阶级的不对等,美好的结局只存在于穷小伙的幻想与琼瑶老师的电视剧中。
如何在有限的成本中提升数据存储的性能,便是本文章于大家论讨的中心思想。
背景知识
相信大家的日常工作中会经常接触到以下内容,小弟就简单地总结一下吧。
关系型数据库
关系型数据库就是由二维表及其之间的联系所组成的一个数据组织,为软件提供事务数据一致性、数据持久化等功能,是软件系统的核心存储服务,是我们开发跟面试都是最常接触到的数据库,对于一些小型外包项目,一个mysql足以满足全部的业务需求了。就是一个我们经常接触到的东西,内里其实是充满了门道的,往后章节再细聊其中门道。
优点:
- 事务
- 持久化
- 相对通用的SQL语言