系统分析过程到底该做什么,仅仅是产出一份系统分析文档吗?个人认为,系统分析的最重要的产出之一就是确定关键技术方案的可行性。
对于一些关键技术的选择,首先肯定是先选择已成熟的方案,避免重复发明轮子,但要注意的是,没有一种技术是适合 所有场景的,成熟的方案不一定适合解决当前的需求。如果在系统分析阶段不把这个问题确定,到编码阶段突然发现之前分析设计的方案不可行,那么就会造成设计变更,增大开发和测试的工作量,给项目会带来巨大的风险。
下面以最近做的一个需求为例来阐述:
现有有一个短信网关系统,该系统是CP与各运营商交互的中介,所有的下行和上行短信都必须经过该系统。 由于该系统产生的短信流水的量很大,亿级别,所以之前已经对DB进行了分库,分为三个库,每个库一张流水表,采用随机入库的算法。即使进行了分库,现在每张表的数据量仍然达到了亿级,而且还只保留最近三个月的数据,三个月前的数据由DBA的定时脚本进行清理。在后台专门有一个查询页面,供客服小二根据手机号和时间来查询短信流水。
由于业务的需要,客服小二提了一个查询需求,需要查询6个月内的短信流水。有人可能会问,这种查询需求为什么不交给数据仓库去做?原因是依赖数据仓库查询的过程太慢了,想一下这个场景:当一个客户打电话 给小二,咨询是否给他发过短信,但小二无法自己去查数据仓库,所以他需要走流程,提需求给数据仓库的人,运气好,数据仓库的技术人员会马上帮你查,运气不好,可能要搁很长时间,此时客户不骂你才怪呢。所以,数据仓库查询是不适合这种马上需要知道结果的查询场景,它一般适合用来做离线的批量统计对账。
所以,现在DB就需要保存6个月的数据(原来只保留3个月),意味着每张表的数据量会翻一倍,那么这个查询肯定会非常慢,有必要进行分表了。目前公司已经有了一个成熟的分库分表框架,只要配置分库分表的规则就可以直接采用,好像这就是最佳解决方案,当时需求到我这边的时候,定的方案确实就是采用这个。但大家没有弄清该系统存在这么一个现状,该短信流水已经采用了随机分库的规则,而且流水的生成是放在一个事务中的,该事务已经关联一个datasource,而如果采用该分库分表的框架,则需要将该流水对应的DAO关联到另一个datasource上,现在矛盾就出现了:两个不同的datasource是无法放在同一个事务里的(不考虑分布式事务,因为仅仅为了一个后台查询而采用这种方案,会大大增加系统复杂度),而且原来随机分库的规则是不可能更改的(因为随机分库可以提高可用性,譬如一个手机号对应流水如果插入某个库失败,则可以随机选择另外一个库插入。而如果采用某种规则进行分库(譬如根据手机号分库),那么该手机号对应的流水就永远插入不成功,影响可用性)。所以这个方案是不可行的,需要寻找新的解决方案。
新的方案就是仍采用原来的随机分库规则,只进行分表,所以datasource保持不变,不影响原来的事务逻辑。原来是每个库里一张表,现在按月份分成12张表,那么每张表的数据量相比于之前就会缩小3倍(原来是3个月的数据存储在一张表里,现在是3个月的数据存储在3张表中),而且即使将来有需求要保留12个月的数据,每张表的数据量仍然不会增加。 所以是满足查询需求的,当然该方案的分表规则就需要应用系统自己实现了,其实是很简单的,采用ibatis的动态表名技术就可以了。
还有一点需要提的是,原来的查询是直接从主库查询的,这样导致的后果是如果查询使得DB抖动,则会影响其他的主业务流程,因此本次决定改造为从备库中查询。
记流水帐似的写了这么多,其实就想说明一点:系统分析过程中最重要的产出就是确定关键技术的可行性,切勿把这种不确定性留到编码阶段。
分享到:
相关推荐
- **技术可行性**:分析了新技术方案的可行性,包括技术难度、开发周期等因素。 - **经济可行性**:从财务角度评估新系统的投资回报率、投资回收期等指标。 - **社会因素可行性**:考察了新系统在法律、用户接受度等...
### 小型图书馆管理系统可行性分析报告关键知识点 #### 1. 引言 - **编写目的**:报告旨在分析小型图书馆管理系统开发的可行性,并为后续的系统开发提供指导。项目由哈尔滨工程大学软件工程专业092012班第2开发...
### 学生选课系统可行性研究报告关键知识点解析 #### 一、引言 **1.1 编写目的** - **重要性分析**: 学生选课系统在学校的日常运营中扮演着至关重要的角色,它直接影响到教学计划的制定、教学资源的合理分配以及...
可行性分析是软件开发的早期阶段,其目标是确定一个项目是否值得进行,是否在技术、经济、法律、操作和时间上可行。以下是对这些方面的一般性解释: 1. **技术可行性**:评估现有的技术资源和能力,确保项目的技术...
此外,报告还对比了多种可能采用的技术方案,并详细阐述了推荐方案的理由。 **1.2 背景** - **提出者与交付单位**: 明确项目的发起方和项目的接收方。 - **提出经过**: 描述项目启动的过程,包括立项的原因、背景...
【系统可行性分析报告格式】是软件开发过程中必不可少的文档,其主要目的是评估和确定一个软件系统开发项目的可能性和合理性。报告通常包含以下关键部分: 1. **引言**: - **编写目的**:明确报告的意图,指出...
本报告针对银行计算机储蓄系统进行了详细的可行性分析,以确定该项目的实施是否合理,是否符合当前的技术发展趋势和市场需求。 1.1 编写目的 该报告的首要目标是规范软件开发流程,增强项目的可见性和可管理性。它...
- **编写目的**:明确可行性分析报告的目的在于评估项目的技术可行性、经济可行性和社会可行性,从而为项目决策提供科学依据。 - **项目背景**:介绍项目的来源、提出的原因以及项目的预期目标等基本信息,有助于...
在软件开发过程中,可行性报告是项目启动阶段的关键文档,它评估了项目的可能性,特别是从技术角度来探讨是否能够成功实施。本文档将深入解析标题为"技术可行性报告_v1.0"的文件,以了解其主要内容、目的和流程。 #...
### 公文流转系统可行性分析报告关键知识点 #### 一、引言 - **编写目的**:本报告旨在探讨开发一套“公文流转系统”的可行性,以解决当前手动办公中存在的效率低下、不便等问题。该系统的目标是实现网上办公自动化...
1.1 编写目的:报告的核心目标是评估开发酒店订房系统的可行性,通过分析现有操作流程的不足,提出改进方案,并预测新系统可能带来的经济效益和社会效益。 1.2 项目背景:酒店行业竞争激烈,传统的订房方式往往存在...
在需求分析部分,报告首先明确了其目的,即通过对酒店客房管理的需求进行深入研究,以确定系统开发的可行性。范围定义了系统将覆盖酒店客房的预订、入住、退房、房间状态更新、账单管理等多个关键环节。同时,报告也...
- **文档概述**:本文档详细阐述了系统开发的可行性分析结果,包括需求分析、技术方案选择、经济效益评估等内容,为项目的进一步实施提供决策支持。 #### 二、可行性分析的前提 - **项目的要求**: - 主要功能:...
本模板提供了一个详细的可行性分析报告的结构和内容,涵盖了项目的背景、技术背景、市场情况、技术方案、实施进度计划、投资估算、人员及培训计划、不确定性分析、经济和社会效益预测与评价、可行性研究结论与建议等...
总的来说,软件工程课程设计管理系统的可行性分析是一个全面的过程,涉及到需求、技术、经济和社会等多个层面。通过这样的分析,可以确保项目在满足教学需求、优化管理效率的同时,也能在有限的资源下实现可持续发展...
技术可行性分析指出,该系统可以在Windows XP环境下运行,采用Microsoft Visual Studio 2008作为开发工具,SQL Server 2000作为数据库管理系统。在限定的技术条件和时间内,开发是可行的。系统建议的使用寿命至少为...
仓库管理系统可行性报告是对仓库管理系统项目的可行性研究报告,旨在确定项目是否值得开发,关键技术难点是什么,问题能否得到解决,怎样达到目的。该报告通过对项目的详细调查研究,初步拟定了系统实现报告,对软件...
学籍管理系统软件可行性分析报告是针对西电软件工程经济学课程设计的一份重要文档,其目的是评估和确定构建一个学生成绩管理系统是否实际可行。报告详细阐述了系统的需求、预期功能、性能要求、安全措施以及经济和...
这份"可行性分析报告说明文档"详细阐述了如何进行有效的可行性研究,旨在帮助项目团队和管理者理解并执行这一关键步骤。 首先,我们需要理解可行性分析的含义。可行性分析是软件工程中的一个阶段,它的目的是评估一...