作为业务研发,我们在做技术设计的时候不仅要关注到功能需求,同样也需要关注到非功能需求,在非功能需求中,常见的需要考虑的点有可靠性、可用性、性能、可修改性、可变性、安全性、成本。制约这些非功能需求一个很重要的组件就是数据库系统。下面我们就我就来来聊聊怎样来保证这些非功能需求。
一、数据库的可用性可靠性需求
我们接到需求后,我们首先要进行业务需求分析,然后分解到数据库的需求,我们首先要根据业务场景和数据库的特点来选择数据库的类型,满足功能、可用性、可靠性的诉求,下面我们就先介绍一些数据类型和一般所处理的场景。
1、1数据类型
关系型数据库主要有MySQL、Oracle、Microsoft SQL Server和PostgreSQL等,使用表中的行来存储数据,关系型数据库适用于事务处理和需要强大的数据一致性、完整性和安全性的应用,如企业应用、电子商务、金融系统等。
非关系型数据库(NoSQL)主要有MongoDB、Cassandra、Redis和Elasticsearch等,他们是采用键值对、文档、列族或图形等方式来存储数据,它们具有更灵活的数据模型和可扩展性。非关系型数据库适用于需要高可扩展性、灵活的数据模型和快速读写访问的应用,如大数据、实时分析、内容管理和社交网络等。
内存数据库主要有Redis、Memcached,他们是将数据存储在内存中,以提供快速的读写访问速度。通常用于对读取操作要求非常高、需要快速响应的应用场景,如实时数据分析、高频交易系统等。
图数据库主要有Neo4j,专门用于存储和处理图形数据结构,如节点和边。它们适用于需要进行复杂的关系分析和图形遍历的应用,如社交网络分析、推荐系统、网络关系图等。
时间序列数据库主要有InfluxDB、Prometheus和OpenTSDB,专门用于存储和处理按时间顺序排列的数据,它们提供了高效的时间序列数据存储和查询功能,适用于实时监控、物联网、日志分析和金融领域等。一些时间序列数据库包括InfluxDB、Prometheus和OpenTSDB等。
在使用以上数据类型的时候我们要考虑好数据、索引、压缩文件的容量问题。
1、2数据容量和增长量速度
我们要和业务人员核对清楚业务的增长模型和背景,根据历史数据增长趋势和同行数据做好数据量预测和数据增长速度,通常我们需要关注以下几个要素:
业务增长预测:根据业务发展趋势,预测未来数据量增长
数据类型分析:分析不同类型的数据,预测数据量增长
数据存储需求:根据数据存储需求,预测数据量增长
数据处理需求:根据数据处理需求,预测数据量增长
数据备份需求:根据数据备份需求,预测数据量增长
只有充分考虑了这些要素,才能确保数据库容量能够满足未来的需求。
二、数据库的性能需求
在满足基本的功能后,我们要考虑到性能的问题,数据库性能方面我们主要考虑响应时间、吞吐量和并发处理能力。
2、1响应时间
响应时间方面,我们要综合考虑查询速度、事务处理速度、数据加载速度、并发处理能力以及延迟。这些要素共同决定了数据库的性能和效率,我们需要充分考虑业务场景下的这些依赖要素,以确保响应时间达到预期。
2、2吞吐量
吞吐量是指单位时间内数据库能够处理的事务数量,其影响因素包括硬件配置、数据库设计和查询优化等。我们可以通过压力测试、基准测试等方法来评估数据库的吞吐量,并采用增加硬件资源、优化数据库结构和优化查询语句等方法来进行优化。
2、3并发处理能力
并发处理能力方面我们需要关注以下几个方面:并发处理能力、事务处理速度、吞吐量、并发用户数、响应时间以及资源利用率。
三、数据库可修改性等需求
在业务快速增长的情况下,我们也需要考虑到数据库的可修改性、可变性、安全性,在这方面我们主要从升级路径、兼容性和备份方案几方面考虑。
4、1升级路径
升级方面可以从硬件、软件、数据库架构、数据库分片和备份与恢复等方面进行考虑,通过升级硬件、软件、采用分布式数据库架构数据分片、定期备份数据等方式,可以提高数据库的性能和安全性。
4、2兼容性
兼容性包括数据库类型、版本、操作系统的平台、接口、功能以及性能等,这些因素都会对数据库的容量产生影响,因此在选择数据库时需要充分考虑这些因素。
4、3备份方案
容灾备份方案,包括备份策略、备份位置、备份介质和备份恢复等方面。此外,定期进行容灾演练,可以检验备份方案的有效性。
备份策略:定期备份、实时备份、增量备份等
备份位置:本地备份、异地备份、云备份等
备份介质:硬盘、光盘、磁带等
备份恢复:数据恢复、系统恢复等
容灾演练:定期进行容灾演练,检验备份方案的有效性
四、数据库成本需求
在做业务需求时,一般都会计算roi,其中在现在降本增效的大背景下,现在也出现了finops这样的理念,所以我们在做数据库需要的时候也要考虑数据库的成本,数据库的成本主要由硬件、软件、人力三方面成本构成。
3、1硬件成本
在选择数据库硬件时,我们需要考虑以下几个方面:服务器类型和配置;存储设备的选择,如硬盘、SSD等,以满足数据库数据量需求;网络设备的选择,确保网络带宽足够,以满足数据库数据传输需求;电源和冷却系统的稳定性和高效性;容错和冗余的需求,为了保证可用性和可靠性,可能需要做容错和冗余,以保证数据库正常运行。
3、2软件成本
软件成本我们需要综合考虑软件成本、许可证费用、维护费用、升级费用、培训费用以及定制开发费用等,以确保数据库系统的高效运行和可持续发展。
3、3人力成本
人力考虑要素包括:招聘和培训数据库管理员的成本,维护和升级数据库系统的成本,解决数据库性能问题的成本,以及确保数据安全和合规性的成本。
以上就是我们在做业务需求中关于数据库方面的非功能需求的考虑点,在做一些需求的时候,我们可能因为精力排期有限,不能考虑的很全面,但是有了上面这个分享的蓝图,我们在回头看的时候,会记录好当时留下的技术债,以便后期排期在合适的时机解决。