pȝ刚开始的时候,因ؓ(f)pȝ刚上U,用户不多Q那个时候,所有的数据都放在了(jin)同一个数据库中,q个时候因为用户少压力,一个数据库完全可以应付? ?jin),但是随着q营那些哥们辛苦的呐喊和拼命的推q以后,H然有一天发玎ͼoh,god,用户数量H然变多?jin)v来,随之而来的就是数据库q哥们受不了(jin)Q它l? 于在某一天大安和惬意的时候挂掉啦。此Ӟ׃搞技术的哥们Q就ȝ看究竟是啥原因,我们查了(jin)查以后,发现原来是数据库d压力太大?jin),此时׃都清? 是到?jin)读写分ȝ时候,q个时候我们会(x)配置一个server为master节点Q然后配几个salve节点Q这样以来通过d分离Q得读取数据的压力? 摊到?jin)不同的salve节点上面Q系l终于又恢复?jin)正常,开始正常运行了(jin)。但是好景还是不长,有一天我们发现masterq哥们撑不住?jin),它负载老高?jin)? 汗流背Q随旉有翘掉的风险Q这个时候就需要咱们垂直分区啦Q也是所谓的分库Q,比如商品信息,用户信息Q交易信息分别存储到不同的数据库中,同时 q可以针对商品信息的库采用masterQsalve模式QOKQ通过分库以后Q各个按照功能拆分的数据库写压力被分担到?jin)不同的server上面Q这? 数据库的压力l于有恢复到正常状态。但是是不是q样Q我们就可以高枕无忧?jin)呢QNO,q个NOQ不是我说的Q是前辈们通过l验ȝ出来的,随着用户量的? 断增加,你会(x)发现pȝ中的某些表会(x)变的异常庞大Q比如好友关p表Q店铺的参数配置表等Q这个时候无论是写入q是dq些表的数据Q对数据库来说都是一个很 耗费_֊的事情,因此此时需要我们进行“水q_区”了(jin)Q这是俗话说的分表Q或者说shardingQ?/p>
上面说了(jin)很多Q无非就是告诉大家一个事实“数据库是系l中最不容易scale out的一层”,一个大型的互联|应用必然会(x)l过一个从单一DB server,到Master/salve,再到垂直分区Q分库)(j)Q然后再到水q_区(分表QshardingQ的q程Q而在q个q程中,Master /salve 以及(qing)垂直分区相对比较Ҏ(gu)Q对应用的媄(jing)响也不是很大Q但是分表会(x)引v一些棘手的问题Q比如不能跨多个分区join查询数据Q如何^衡各个shards? 负蝲{等Q这个时候就需要一个通用的DAL框架来屏蔽底层数据存储对应用逻辑的媄(jing)响,使得底层数据的访问对应用透明化?/p>
又拍|架构中的分库设?/a>
truelyg的设计定义:(x)设计的过E就是将事务处理抽象成计机模型的过E?
1. 首先要明白设计远比编E重要?
2. qx注重训练自己的思维严}性和从全局考虑问题的能力。徏立冷?rn)思考问题的处事态度?
3. 设计Ӟ其是数据库设计Ӟ(j)不要完全被规矩约束,设计好比作诗Q懂得韵律是对的Q但完全被韵 律所束缚(x)Q就作不出好诗了(jin)?
4. 多做设计Q经常ȝ自己的不之处和成功之处Q向他hh?
5. 专门L别h设计的漏z和不Q也是提高自p计水q的重要手段?
Q记住:(x)q个好方法不要顺便外传,自己知道p?jin),d-:Q?
6. l验是重要的Q但如果观念老化而不善于ȝ提高Q所谓的l验成为束~自p步的枷锁?
7. 学好数学特别是理论数学如数学分析、运{学、数学模型等。多玩策略性经营游戏也是有益的。推?《帝国时代》和《模拟首?000》以?qing)《大富翁4》。(但不要沉陷在里面Q?
8. Ҏ(gu)目情况和开发^台工L(fng)特点定最佳的设计Ҏ(gu)。模块化设计Ҏ(gu)和面向对象设计。两U设 计方法的l合使用?
9. 复杂无序的q程用模块化的方法进行分解,但要注重事务间的联系Qƈ且用开攄眼光去设计?
10. 设计时对严}性、灵zL、开发效率、客戯求四个方面做衡量取舍?
11. 设计时还要根据整个工E的q度安排和客户对软g的要求而决定是否设计得_灉|和严谨?
12. 复杂而无条理是最p的设计Q简单实用ƈ不一定是最好的Q但一定不是最坏的。(不要说我h哟)(j)
13. 训练自己良好的表达能力,能用清晰明确而且单的描述表达?gu)q基本思\?
14. 在一个项目中建立l一的系l分析模式和文档模板Q同Ӟ一个项目中必须臛_有一个hҎ(gu)个系l?设计q行(g)查和q行全局的考虑?
再谈如何成ؓ(f)一个好的系l分析员Q?
bylsfboy
pȝ分析员基本功Q?
好的pȝ分析员都是从优秀的程序员中生的Q坚实的~程功底、丰富的l验是今后做pȝ分析的基?
没有对系l本w进行过透彻剖析q,很难领会(x)到其中一些难以言q的_֍。但q不{于好的E序员就能够 成ؓ(f)好的pȝ分析员?
?
理的知识l构。语a能力、文字表达能力、技术的全面性等是对pȝ分析员的基本要求。比如说c/s?
层开发,如果仅仅对netscape公司的品熟(zhn)还不够Q还需要了(jin)解比如微软等产品Qƈ且要?jin)解他们中?
生历?发展思\Q技术优劣,以应付各U穷q猛打的提问。但更重要的是,q是你ؓ(f)应用定制技术要?的前提?
pȝ分析员思想Q?
?
局观念是系l分析员必须具备的观c(din)如果系l分析员设计时太注重l节Q往往?x)陷入在某个问题上?
~不清的泥潭。(93q_(d)我论文指D师的一席话影响?jin)我随后几年对Y件开发的理解----今后计算Z(x)
来快Q多写几行代码少写代码无关紧要,最重要的是整体Q一开始就错了(jin)Q某个部份编得再好,也是 没有用的Q?
d隑ֺ的预能?
p?
l分析员要具备快速的d隑ֺ预测能力以及(qing)具备快速确定开发小lh员构成和d划分的能力。(?
这条归为思想Q而不是能力)(j)昆虫自然?x)长出翅膀Q而思想却需要长期的润。要做到q点Q需要大?
的思考、学?fn)。设计远比编E重要。当今Y件业的发展,各种开发工L(fng)出现Q编E已l不是什么问题,
E序员的工作某种E度上讲是将别h现成的东西拼凑堆砌v来。系l分析员要清楚的认识刎ͼ现在大多?
E序员没有学?x)怎么L体的?jin)解一个系l,有些甚至不了(jin)解编E(q不是说他们不会(x)写代码)(j)。可视化
的开发工具加五花八门的控ӞE序员可以偷Ҏ(gu)?jin)。(q可不是夸大Q我好几q的理工作Q接触过?
量的E序员)(j)Z技术,跛_框架。基于现有技术结合用户需求思考问题,设计时蟩出框架?
pȝ分析员思想Q?
pȝ分析
员要有面向用L(fng)思想。系l分析员应当有能力将自己扮演成用P来了(jin)解要交付的项目看h
想什么样式,感觉想什么,从而了(jin)解用L(fng)xq挑选出合理部䆾d发。从q个意义上说Q系l分析员
才能获得有意义的见解dg的开发组成员。系l分析员头脑中要寚w目结局有一个清楚的认识Qƈ?
证项目不偏离方向。系l分析员要有Ҏ(gu)于技术,高于技术思考问题的思想。纯_的E序员通常Ҏ(gu)l结
果考虑的不是很多,当一U新的技术在?jng)场上出现时Q他们对能否按时交付的考虑比较少Q而强烈希?
他们的计划能够徏立在新的技术之上。因此,pȝ分析员的x和行动要象一个用P又要能够站在技?的高度,成ؓ(f)真正的用戗程序员之间的代a人?
pȝ分析员的关键
获得信Q。系l分析员最重要的素质是获得信QQ这是成ZUpȝ分析员的关键。成熟最为关键。成?可以为整个项目组提供正确的支?能够理解技术怎样才能解决用户的需求?
pȝ分析员的准备工作
l?
一的各U文档模式,q其中包括今后Y件变量、字D命名规则。我推荐用pb制定的规则做基础Q通过?
造成为适合自n实用的标准。统一的文档管理。统一的分析Y件。比如说roseQuml太规范,国内的Y?
理水^Ҏ(gu)用不上,只不q尽量应用,你自己对pȝ分析的理解有好处Q?
Ҏ(gu)是思想的放映,在具体方法上׃多说?jin)。我托h从u$a弄到几本书,用于面向对象pȝ开发的?
用》、《面向对象的分析》、《项目管理》等都是很不错的Q推荐大家看看?
我在拙作"在中国没有h懂计机"里发?jin)点牢?d)Q听说挨?jin)部份hQ习(fn)惯性的Q骂。其实,bbs本来是 发泄的地方,在这里从来就|有有内容的文章?
?
?l纳?登陆深圳后,大家更着g从宏观看中国的it业了(jin)。中国itq棵树(wi)Q说实在的,长到今天
实在是不Ҏ(gu)。一些h提出?反对微Y霸权"的口P不少人呼唤中?谷"的出现。微软的成功不是技
术的成功Q更多的是商业运作的成功。中国itq棵?wi)能长多高,取决于他所植根于的土壤。而现在的事实是,q片土壤实在是太贫瘠?jin)!如果按我们现在的思\?
搞法Q是长不成大?wi),更别指望能结???Q?谷"q样丰硕的果实。如果说Q我们的软g技术落后美国十q_(d)我们的硬件制造技术则落后国
二十q_(d)我们的管理水q后美国至三十年。而最l决定发展速率的恰恰是我们的死I──低劣的管?
水^。低劣的理水^的Ş成的原因有着深厚的背景和多方面的原因?
pȝ分析工作是解决一个问题的工作,目标是将一个对计算机应用系l的需求{化成实际的物理实?其中 复杂复杂在实际的面太多.在系l分析过E之中注意问以下的问?可能?x)所q行的系l分析设计工作有 帮助.
1)(zhn)所完成的系l目的是什?注意不是功能要求,而是目的.也就是ؓ(f)什么要、ؓ(f)什么要C?
2Q?zhn)所完成的系l有哪些斚w参与Q各斚w的初h什么?那些人可能在pȝ中v重要作用Q他??x)采取什么样的态度Q你对他们有多少影响力?
3Q?zhn)的系l是否有一个明的评h(hun)标准Q最好从参与的各斚w都进行考虑?
4Q你的系l设计思想是什么?是否能够得到各方面的认可?
5Q你对参与系l设计开发的人员?jin)解吗?他们的特长在哪里Q是否愿意与你合作,Z么?你对他们?_的媄(jing)响力吗?
6Q你的系l开发计划是否完善?你的计划表有明确的阶D吗QQ何一阶段都应该怎样完成Q如何对q一 阶段完成的情况进行评P
7Q你Ҏ(gu)采用的系l开发方法以?qing)工h否熟(zhn)?你的夥伴是否熟?zhn)Q?
8Q你所完成的系l是否有原型Q计机的或者物理的?
以上的几个问题都是在pȝ分析以及(qing)pȝ规划时涉?qing)到的,供各位参考?
pȝ分析工作是解决一个问题的工作,目标是将一个对计算机应用系l的需求{化成实际的物理实?其中 复杂复杂在实际的面太多.在系l分析过E之中注意问以下的问?可能?x)所q行的系l分析设计工作有帮助
1)(zhn)所完成的系l目的是什?注意不是功能要求,而是目的.也就是ؓ(f)什么要、ؓ(f)什么要C。在考虑pȝ目的Ӟ我更多的侧重于系l的最l目标考虑Q因Z个系l不可能一下子完美Qؓ(f)pȝ留些 余地?
2Q?
(zhn)所完成的系l有哪些斚w参与Q各斚w的初h什么?那些人可能在pȝ中v重要作用Q他?
?x)采取什么样的态度Q你对他们有多少影响力?中国it行业的失败之一是?太年?Q一定要有领导的
支持Q否则完蛋。不要认己对他们?x)有多少影响力,即便有,也要可能的认?f)是决{者再影响?
们。在中国Q一个技术员Q你老几Q说到这里我很?zhn)哀。哪些h在系l中起重要作用ƈ弄清楚他们的?度,q点十分关键?
3Q?zhn)的系l是否有一个明的评h(hun)标准Q最好从参与的各斚w都进行考虑。不知道q样说对不对Q在p?l徏设之前,对你的程序员、对你的领导要有臛_不同的两U评仗?
4Q你的系l设计思想是什么?是否能够得到各方面的认可。如果高明,寚w对{对E序员都采用引导Q?得到认可的最好办法,是让他们认可他们自qx。(我力图这样做Q但做得不好Q系l分析员有一 点要学会(x)韬光LQ忍Q?
5Q你对参与系l设计开发的人员?jin)解吗?他们的特长在哪里Q是否愿意与你合作,Z么?你对他们?_的媄(jing)响力吗?软g发展C定的E度Q不是编E,不是数学Q而是理?
6Q你的系l开发计划是否完善?你的计划表有明确的阶D吗QQ何一阶段都应该怎样完成Q如何对q一 阶段完成的情况进行评P
7Q?
你对所采用的系l开发方法以?qing)工h否熟(zhn)?你的夥伴是否熟?zhn)Q事实上Q不是每U好的工具都?
使用Q也q不一定都要他们熟l掌握。提醒诸位一句,当你方案做得可以不依赖某个E序员,你在E序
员面前就无信daQ因Z此程序员受到更大的生存压力。我坚决不在公司使用rose?
8Q你所完成的系l是否有原型Q计机的或者物理的?
以上的几个问题都是在pȝ分析以及(qing)pȝ规划时涉?qing)到的,供各位参考?
q文章很好,我的话是Q?需求分析实际应该是问题分析"。含义是pȝ要解决的是问题。而不是用h?的需求。经常发现系l完成后Q客戯"我的问题q没有解?。可是,需求分析稿上的目标都搞定了(jin)?
既然是问题分析,所以,熟?zhn)目标pȝ的知识就是必要的。甚臻I可以_(d)一个好的系l分析员也应该是 好的业务专家?
?
很高兴在q里遇到许多分析高手Q可以交分析中的问题。我赞同从来的观炏V在中国作分析重要的?
人气Q因Z国的企业U信息系l的在很大程度上可以说ƈ非确有需求,而是q于某种压力。用户在
很多时候考虑的不是系l的长远发展Q而只是短期的成果Q要求开发单位在很短的时间内完成一个很大的
pȝ的开发,没有旉对系l进行周密的分析Q在q种情况下,很多开发商׃(x)_分析,_设计,快q?
入编码阶D,q样的系l的生命周期肯定不会(x)很长。说?jin)这么多Q只是想_(d)pȝ分析员确实应是业务和
理专家Qƈ且需要有很好的语al织能力Q他需要根据问题域中存在的问题d力说服用P引导用户
需求,毕竟Q我们是专家Q如果让用户늝d赎ͼpȝ不会(x)是成功的pȝ。(当然?jin),q要建立在用?是可引导的前提下Q本人拙见?
在理解和分析用户的需求时Q应说服用户明白Q徏立计机应用pȝq不是简单地用计机代替手工?
作,它更应该是管理思想的一ơ革命,是现用户模式的一ơ升华和提高。如果系l不能高于现实,开发的pȝ长期陷入需求的反复修改Q其软g的生命周期也短了(jin)?
针对我对(zhn)的问题的理?试着作如下一般?理论性的回复:
需求分?(zhn)可以采用usecasedriven的方法进行需求分?在明需求分析的基础?定需要采用的pȝ分析Ҏ(gu)(l构?面向对象/构g?应用(zhn)的开发团队所定采用的分?设计Ҏ(gu),q行pȝ分析.Ҏ(gu)(zhn)所采用的分析方?依次或反复进行系l设?建模.
http://www.sawin.cn/doc/SA/SATech/NetReptile14.htm
1、系l分析是什么?
pȝ分析工作是解决一个问题的工作,目标是将一个对计算机应用系l的需求{化成实际的物理实?其中复杂复杂在实际的面太多.在系l分析过E之中注意问以下的问?可能?x)所q行的系l分析设计工作有帮助?br />
1Q?zhn)所完成的系l目的是什?注意不是功能要求,而是目的.也就是ؓ(f)什么要、ؓ(f)什么要C?
2Q?zhn)所完成的系l有哪些斚w参与Q各斚w的初h什么?那些人可能在pȝ中v重要作用Q他们会(x)采取什么样的态度Q你对他们有多少影响力?
3Q?zhn)的系l是否有一个明的评h(hun)标准Q最好从参与的各斚w都进行考虑?
4Q你的系l设计思想是什么?是否能够得到各方面的认可?
5Q你对参与系l设计开发的人员?jin)解吗?他们的特长在哪里Q是否愿意与你合作,Z么?你对他们有够的影响力吗Q?
6Q你的系l开发计划是否完善?你的计划表有明确的阶D吗QQ何一阶段都应该怎样完成Q如何对q一阶段完成的情况进行评P
7Q你Ҏ(gu)采用的系l开发方法以?qing)工h否熟(zhn)?你的伙伴是否熟?zhn)Q?
8Q你所完成的系l是否有原型Q计机的或者物理的?
以上的几个问题都是在pȝ分析以及(qing)pȝ规划时涉?qing)到的,供各位参考?/font>
“需求分析实际应该是问题分析”。我们的软gpȝ要解决的是问题。而不是用h出的需求。经常发现系l完成后Q客戯“我的问题还没有解决“。可是,需求分析稿上的目标都搞定了(jin)?
既然是问题分析,所以,熟?zhn)目标pȝ的知识就是必要的。甚臻I可以_(d)一个好的系l分析员也应该是好的业务专家?
在中国作分析重要的是人气Q因Z国的企业U信息系l的在很大程度上可以说ƈ非确有需求,而是q于某种压力。用户在很多时候? 虑的不是pȝ的长q发展,而只是短期的成果Q要求开发单位在很短的时间内完成一个很大的pȝ的开发,没有旉对系l进行周密的分析Q在q种情况下,很多开 发商׃(x)_分析,_设计,快q入~码阶段Q这L(fng)pȝ的生命周期肯定不?x)很ѝ说?jin)这么多Q只是想_(d)pȝ分析员确实应是业务和理专家Qƈ且需要有? 好的语言l织能力Q他需要根据问题域中存在的问题d力说服用P引导用户需求,毕竟Q我们是专家Q如果让用户늝d赎ͼpȝ不会(x)是成功的pȝ。(当然 ?jin),q要建立在用h可引导的前提下)(j)
2、基本素?/strong>
a、系l分析员基本?/font>
好的pȝ分析员都是从优秀的程序员中生的Q坚实的~程功底、丰富的l验是今后做pȝ分析的基?
没有对系l本w进行过透彻剖析q,很难领会(x)到其中一些难以言q的_֍。但q不{于好的E序员就能够成ؓ(f)好的pȝ分析员?
合理的知识结构。语a能力、文字表达能力、技术的全面性等是对pȝ分析员的基本要求。比如说c/s?层开发,如果仅仅?
netscape公司的品熟(zhn)还不够Q还需要了(jin)解比如微软等产品Qƈ且要?jin)解他们中生历?发展思\Q技术优劣,以应付各U穷q猛打的提问。但更重?
的是Q这是你为应用定制技术要求的前提?
b、Q务难度的预测能力
pȝ分析员要具备快速的d隑ֺ预测能力以及(qing)具备快速确定开发小lh员构成和d划分的能力。(我将q条归ؓ(f)思想Q而不是能力)(j)? 虫自然会(x)长出膀Q而思想却需要长期的润。要做到q点Q需要大量的思考、学?fn)。设计远比编E重要。当今Y件业的发展,各种开发工L(fng)出现Q编E已l不? 什么问题,
E序员的工作某种E度上讲是将别h现成的东西拼凑堆砌v来。系l分析员要清楚的认识刎ͼ现在大多数程序员没有学会(x)怎么L体的?jin)? 一个系l,有些甚至不了(jin)解编E(q不是说他们不会(x)写代码)(j)。可视化的开发工具加五花八门的控ӞE序员可以偷Ҏ(gu)?jin)。(q可不是夸大Q我好几q的理? 作,接触q大量的E序员)(j)Z技术,跛_框架。基于现有技术结合用户需求思考问题,设计时蟩出框架。?
c、系l分析员思想
pȝ分析员要有面向用L(fng)思想。系l分析员应当有能力将自己扮演成用P来了(jin)解要交付的项目看h想什么样式,感觉想什么,从而了(jin)
解用L(fng)xq挑选出合理部䆾d发。从q个意义上说Q系l分析员才能获得有意义的见解dg的开发组成员。系l分析员头脑中要寚w目结局有一个清楚的
认识Qƈ保证目不偏L向。系l分析员要有Ҏ(gu)于技术,高于技术思考问题的思想。纯_的E序员通常Ҏ(gu)l结果考虑的不是很多,当一U新的技术在?jng)场上?
现时Q他们对能否按时交付的考虑比较少Q而强烈希望他们的计划能够建立在新的技术之上。因此,pȝ分析员的x和行动要象一个用P又要能够站在技术的
高度Q成为真正的用户、程序员之间的代a人?br />
d、系l分析员的关?/font>
获得信Q。系l分析员最重要的素质是获得信QQ这是成ZUpȝ分析员的关键。成熟最为关键。成熟可以ؓ(f)整个目l提供正的支持,能够理解技术怎样才能解决用户的需求?/font>
3、葵花宝?
设计的过E就是将事务处理抽象成计机模型的过E?/strong>
1. 首先要明白设计远比编E重要?
2. qx注重训练自己的思维严}性和从全局考虑问题的能力。徏立冷?rn)思考问题的处事态度?
3. 设计Ӟ其是数据库设计Ӟ(j)不要完全被规矩约束,设计好比作诗Q懂得韵律是对的Q但完全被韵律所束缚(x)Q就作不出好诗了(jin)?
4. 多做设计Q经常ȝ自己的不之处和成功之处Q向他hh?
5. 专门L别h设计的漏z和不Q也是提高自p计水q的重要手段?/font>
6. l验是重要的Q但如果观念老化而不善于ȝ提高Q所谓的l验成为束~自p步的枷锁?
7. 学好数学特别是理论数学如数学分析、运{学、数学模型等。多玩策略性经营游戏也是有益的。推荐《帝国时代》和《模拟首?000》以?qing)《大富翁》。(但不要沉陷在里面Q?
8. Ҏ(gu)目情况和开发^台工L(fng)特点定最佳的设计Ҏ(gu)。模块化设计Ҏ(gu)和面向对象设计。两U设计方法的l合使用?
9. 复杂无序的q程用模块化的方法进行分解,但要注重事务间的联系Qƈ且用开攄眼光去设计?
10. 设计时对严}性、灵zL、开发效率、客戯求四个方面做衡量取舍?
11. 设计时还要根据整个工E的q度安排和客户对软g的要求而决定是否设计得_灉|和严谨?
12. 复杂而无条理是最p的设计Q简单实用ƈ不一定是最好的Q但一定不是最坏的?
13. 训练自己良好的表达能力,能用清晰明确而且单的描述表达?gu)q基本思\?
14. 在一个项目中建立l一的系l分析模式和文档模板Q这其中包括今后软g变量、字D命名规则等。同Ӟ一个项目中必须臛_有一个hҎ(gu)个系l设计进行检查和q行全局的考虑?/font>
http://www.sawin.cn/doc/SA/SATech/blueski1178.htm
区别Q?br />pd比架构更贴近用户一点,主要是需求分析,业务分析?br />架构比系分更贴近技术一点,是技术专家、资深技术h员?br />
联系Q?br />都是高抽象U别Q同作ؓ(f)软g高职称资格Q是E序员和软g设计师的领导者和技术顾问。两个联pd于区别,一般系l分析师l和架构师组合作Q共同制定一个基技术框架?
pȝ架构偏向于技术方?包括设计
pȝ分析偏向业务,包括需求分?br />
它们也有共同之处和联p?两个职位要相互配合的.