对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设( 三 )


最后总结下就是 什么样的业务在什么场景下需要解决什么问题 , 用这个逻辑和上面的雷达图去套 , 去做选型 。那接下来我们看看vivo目前用到了那些数据库产品 。
2)vivo落地的数据库产品
可以先看这个图:

对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设

文章插图
标注蓝色的为目前用得比较多的 , 黄色的是我们自己做过改造开发的 , 红色是OLAP部分但目前不在我们团队 , 绿色是少量试用或者是特定场景使用的 。
  • MySQL:关系型数据库
  • RDS:公有云厂商提供各种数据库
  • Redis:KV数据库(缓存)
  • ElasticSearch:搜索相关业务
  • MongoDB:文档数据库
  • TIDB:分布式关系型数据库
  • KV Storage:KV数据库(持久化存储)
  • TSDB:时序数据
  • GDB:图数据
三、服务驱动的平台化建设
接下来谈服务驱动的平台化建设 , 还是之前的产品思路 , 我们先看我们的用户是谁 。
1、谁是数据库服务平台的用户?
对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设

文章插图
  1. 软件开发工程师:在软件设计实现中完成数据存取的需求
  2. 测试工程师:在软件测试中通过测试数据的构造完成测试任务
  3. 数据库管理员:满足业务的数据库各种服务需求
  4. 产品经理等:数据报表、数据修订等需求
当然 , 以上几类用户并没有先后顺序的区别 。这块可能和有些公司建设数据库服务平台时有些区别 , 因为我们不仅要满足数据库管理员即DBA的需求 , 也涵盖了公司所有对数据库有需求的用户 。从当前实践结果来看 , 不论是PV还是用户数 , 都远超DBA , 大概90%以上的用户是非DBA 。
2、用户需要的运行环境
那么用户会在什么样的场景下用我们的服务?
  1. 开发环境:在开发环境进行迭代开发业务功能 , 对性能和可靠性要求一般 , 但有比较频繁的变更需求
  2. 测试环境:在测试环境验证服务的功能、性能 , 测试过程中对可用性和性能有要求 , 非工作时间各种要求较低
  3. 预发环境:在生产环境验证服务的功能 , 对数据库可用性、性能等要求一般
  4. 正式环境:在生产环境提供稳定、可靠、高效、安全的数据库服务

对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设

文章插图
这张图最下面还有两块 , 一块是自建的IDC , 一块是公有云的场景 , 这个主要是和vivo的业务场景有关系 , 公有云场景主要服务于海外的用户 。
这里还有一部分没有在图中展示 , 我们知道在海外做经营 , 有些区域的数据合规法比较严格 , 不能和国内有网络上的互联互通 , 这部分一般会做单独的隔离处理 , 针对这部分还需要做单独的处理 , 由于内容比较复杂 , 就不展开讲了 。
3、数据库产品的生命周期
接下来讲四类用户在四种环境中是如何使用数据库产品的 , 这个主要包括了数据库产品的全生命周期 , 从数据库服务的创建到最终下线的全流程 。
对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设

文章插图
这个图里面的箭头和方向可以忽略 , 只是表述了全生命周期会经历那些环节 , 这些环节之间没有先后顺序 。
服务申请包含了服务接入、服务申请;之后的服务部署包括了容量管理、预算管理、服务部署;到了维护环节 , 有一些监控告警、数据备份、故障演练等操作;业务运行过程种可能有些数据的变更或者数据导出等操作;还有服务的优化 , 比如服务升级、配置变更、扩缩容;后面的数据回复包括 , 单实例/Schema恢复、从零恢复;最后的下线回收 , 这就是整个的环节 。
4、数据库服务产品设计思路
前面我们分析了用户、场景、产品使用的环节 , 本质来讲是在做需求分析 。这些分析完之后我们需要做产品的目标定位以及思考产品的建设思路 。
最后我们的产品的愿景定义如下:
  1. 打造交互便捷、体验良好、功能完备的智能存储管理平台


    推荐阅读