三、数据库设计

三、数据库设计

数据库作为存放数据的仓库,是干部网络教育培训平台信息技术的核心和基础,承载着越来越多的学习数据,极其重要且敏感,称得上是最具有战略性的数字资产。数据库的安全稳定运行,直接决定着网络培训平台的可用性、可靠性和稳定性。因此,评估选用“正确的”数据库,维持稳健的“心脏供血”,对干部网络教育培训平台来说至关重要。

数据库通常分为层次数据库、网络数据库和关系数据库三种,不同的数据库是按不同的数据结构来联系和组织的。当今互联网应用中,最常见的数据库模型主要分为两种,即关系型数据库和非关系型数据库。关系型数据库模型是把复杂的数据结构归结为简单的二元关系,即二维表格形式,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的社交网络纯动态网站时已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。非关系型的数据库又分为键值存储数据库、列存储数据库、面向文档数据库、图形数据库和搜索引擎存储数据库等几大类。

面对品类繁多的数据库,正确的评估、选用和数据库技术本身同样重要。除了考虑开发要求、部署环境、安全性能和运维成本等因素外,还要适应干部网络教育培训平台的发展规模。一般而言,平台注册人数达到几万人,同时在线访问人数将维持数千人,选用成熟与主流的关系数据库,并有针对性地优化数据表,可以在一定时间内保证干部学员的在线学习需求。当平台注册人数规模超过10万人,或同时在线访问人数达到2万人甚至更多时,比较好的解决方案是将报表数据从主数据库中分离出来,部署非关系型的缓存数据库,必要时应用主从复制、读写分离、分库分表等数据库技术。

1.选型关系型数据库。经过近40年的发展和变革,关系型数据库有着丰富和完善的管理工具,成熟性和稳定性远远超过非关系型数据库。对于增、删、改、查等基本操作,两者的性能开销基本一致,而非关系型数据库的缺陷在于无法支持动态连接查询、分组和统计操作,即SQL中的JOIN、GROUP、COUNT、SUM和AVG等语法,这直接导致程序代码的可读性和健壮性非常低。因此,干部网络教育培训平台的主要数据库建议选用关系型数据库。

DB-Engines排名每月更新一次(见图8-1),涵盖350多种数据库系统,并按人气进行排名。排名的依据包含5个不同的指标,即:Google以及Bing搜索引擎的关键字搜索数量;Google Trends的搜索数量;Indeed网站中的职位搜索量;LinkedIn中提到关键字的个人资料数;Stackoverflow上相关的问题和关注者数量。

图示

图8-1 2020年2月DB-Engines数据库排行(https://www.daowen.com)

(来源:https://db-engines.com/en/ranking)

目前,三大主流的关系数据库分别是Oracle、MySQL和Microsoft SQL Server(见表8-1)。其中,Oracle是甲骨文公司的一款关系数据库管理系统,支持UNIX、Linux和Windows等主流操作系统,完全支持所有工业标准,获得最高认证级别的ISO标准认证。由于其诞生早,具有结构严谨、高可用、高性能等特点,广泛应用在金融、通信、能源、运输、零售、制造等各个行业,并在数据库领域一直处于霸主地位。其缺点是对硬件系统的要求高,价格昂贵,管理维护麻烦,操作比较复杂,对技术要求较高。MySQL是瑞典MySQL AB公司开发的一个关系数据库管理系统,目前属于Oracle公司。与Oracle相比较,MySQL属于中小型数据库,其优势在于体积小、速度快、总体拥有成本低、开放源码。而缺点是安全系统复杂且非标准,不支持热备份,不支持事务处理,没有视图,没有存储过程和触发器,伴随平台和安装方式的变化,使用第三方的解决方案需要支付许可费用。Microsoft SQL Server是微软公司推出的关系数据库管理系统,具有使用方便、可伸缩性好、与相关软件集成程度高等优点,广泛应用于金融、保险、电力、行政管理等行业。相对来说,Microsoft SQL Server在并发性能、安全性、安装管理和运行维护等方面都要优于MySQL。

表8-1 三大主流的关系数据库对比表

图示

2.缓存数据库。在干部教育培训网络平台中,有些短生命期数据是频繁读取,却不经常修改,且不一定非得放在关系型数据库中的,例如平台访问的实时数据、课程资源的统计信息等,使用非关系型数据库缓存这些数据可以达到更好的性能。部署Redis作为辅助缓存数据库,是一个很好的解决方案。Redis由C语言编写,是一个基于内存读取的、高性能的键值存储数据库,官方提供的数据显示每秒内查询次数可以高达100000次。Redis支持主从服务器同步,支持数据持久化,也就是周期性地把更新的数据写入磁盘文件,支持对数据设置过期时间,不必担心数据过期或丢失的问题。

3.优化数据库。随着干部学员规模的不断增加,数据库将是干部网络教育培训平台最大的瓶颈,改善数据库性能最常用的手段便是进行读写分离以及分库分表。读写分离,顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分。水平切换则是对一个数据库特大的表进行拆分,例如选课记录表、学习记录表等。垂直切分则是根据业务模块不同来切换,如文章资讯、学员信息、课程信息等不同主题的数据放在不同的数据库中。另一个比较好的做法是将一个大的数据表拆分为当天操作表和历史记录表,当天操作表只保留正在操作的数据,完成后转入历史记录表,如此可大大地提升数据库的执行效率。

数据库作为数据仓库,内部数据表较多,业务关系复杂,数据量会急剧膨胀增大,重要性不容置疑,安全性更不容小觑,数据备份尤为重要。当前,数据库面临的主要威胁有:SQL注入、身份验证不足、访问权限过高或滥用、日志记录不完善、备份数据暴露等。干部网络教育培训平台上线运行后,平台运营者应提供安全准入、访问控制、数据审计、加密备份等安全机制,规范业务操作流程,实施由内到外的层层防护,最大可能地保证数据库的安全。