仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 595|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL编程:数据堆栈计划的21条准绳[DMResearch.ne...

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:33:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
MyISAMMysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务计划|数据
[为便利本人浏览以是搜集收拾此处,www.DMResearch.net]



数据堆栈计划的21条准绳

--7个步骤,7个忌讳和7种思绪



高效完成数据堆栈的七个步骤

数据堆栈和我们罕见的RDBMS体系有些亲缘干系,但它又有所分歧。假如你没有实行过数据堆栈,那末从设定方针到给出计划,从创立数据布局到编写数据剖析程序,再到面临抉剔的用户的评价,全部历程城市带给你一种与以往的项目完整分歧的体验。一句话,假如你试图以旧有的体例创立数据堆栈,那你所面临的不是预算超支就是所创建的数据堆栈没法优秀运作。

在处置一个数据堆栈项目时必要注重的成绩良多,但同时也有良多有建立性的参考能够匡助你更顺遂的完成义务。开放头脑,不休实验新的路子,关于找到一种可行的数据堆栈完成办法来讲也是必须的。

1.装备一个全职的项目司理或你本人周全卖力项目办理
在一般情形下,项目司理城市同时卖力多个项目标实行。这么做完整是出于资金和IT资本方面的思索。可是关于数据堆栈项目标办理,相对不克不及呈现一人身兼数个项目标情形。因为你所处的范畴是你和你的团队之前没有进进过的范畴,有关数据堆栈的统统-数据剖析、计划、编程、测试、修正、保护-全都是极新的,因而你大概你指派的项目司理假如能经心投进,关于项目标乐成会有很年夜匡助。

2.将项目办理职责推给其余项目司理
因为数据堆栈完成历程其实是太坚苦了,为了不自虐,你能够在以后阶段的项目完成后就将项目办理职责推给其余项目司理。固然,这个新的项目司理必定要复合第一条所说的具有全职性。为何要这么做呢?起首,从项目司理的角度看,数据堆栈实行历程的任何一个阶段都足以让人身心怠倦。从物理存储设备的开辟到Extract-Transform-Load的完成,从计划开辟模子到OLAP,一切阶段都分明的比之前打仗的项目加倍坚苦。每一个阶段不仅必要新的处置办法、新的办理办法,还必要立异性的概念。以是将办理职责推给其余项目司理不仅不会对项目有伤害,还能够起到匡助感化。

3.与用户举行相同
这里所讲的内容远比一篇文章自己要主要的多。你必需分明,在数据堆栈的计划阶段,那些潜伏用户本人也不分明他们究竟必要数据堆栈为他们做甚么。他们在不休的探究和发明本人的需求,而你的开辟团队也在和客户的打仗中做着一样的事变。加倍频仍的与客户打仗,多做纪录,并让你的团队更存眷于项目需求会商的了局而不是会商的历程自己。

既然你和客户的交换是为了懂得存储的数据是何品种型和怎样无效存储数据,你大概必要(和你的用户一同)接纳一种新的办法察看数据,而不是间接处置数据。你能够实验从中找出埋没的信息,好比在一段时代内的数字涨落等。不要试图寻找项目需求的谜底,而是要让谜底找上门来。

4.以手艺/信息库作为向导
因为数据堆栈实行的各个阶段都有很年夜分歧,因而你必要有人能起到保持全部项目标一连举行的感化,不外这个职责其实不必要那种全职性。项目实行有三个主要方面:架构、手艺和营业。将架构作为重点能够包管在全部项目中,数据堆栈的架构从物理层往上,城市遭到优秀的保护。而我们应当将手艺作为重点,由于开辟团队和关头用户都在利用他们之前从未用过的工具,必需有人监视开辟历程和工具利用的分歧性。

最初,在数据堆栈的使用过程当中出现出来的营业需求必需被具体剖析和纪录,以促机开辟历程延续下往。假如用户不克不及很好的开辟职员和别的用户相同,那末数据剖析和器度方面的开辟历程就会延期,以是必需有人存眷营业方面的开辟,推进开辟进进更初级别。

5.跳出重复修正程序的圈套
第一次完成的数据堆栈一定不会是终极托付的版本。为何呢?实践上在真正见到产物前,你没法断定的晓得本人的方针是甚么。大概说,终极用户只要在利用数据堆栈产物一段工夫后,才干明白告知你这个产物是否是他所但愿的。与你以往处置的项目分歧,营业智能还处于开展的早期,每一个公司对营业智能都有分歧的注释,因而你的项目决不会一次乐成。

为了以准确的格局取得数据,你必要在不休变更的情况中探索行进。BI具有很强的本性,分歧的情况、分歧的市场和分歧的企业都有分歧的BI。这又代表甚么呢?这暗示你必要把数据库办理员放在一个动静绝对关闭的情况中,不要让他晓得数据堆栈的数据布局和ETL程序在不休的改动。对此没有其余举措。如许能够加重你和DBA所接受的压力。

6.对大批的前端资本举行数据源剖析
在数据堆栈完成过程当中,你不能不在旧有的数据中困难跋涉,这些数据来自老的数据库、老的磁带机和远程的数据。它们中的年夜部分都混乱不胜,而且难以猎取。你要对这些数据举行大批处置,而且还要计划ETL程序来寻觅个中的有效信息。假如你但愿全部项目做起来对照顺遂,而且找到一种办法可以一次乐成,那就必要你的开辟职员必需消费充足的工夫来充实研讨这些旧无数据,将混乱的数据划定规矩化,并全力计划和完成健壮的数据收罗和转换历程。数据堆栈的ETL部分会占用全部项目资本的百分之八十,以是必定要断定你的资本都用在刀刃上了。

7.将人际干系处置放在首位
在数据堆栈完成过程当中真实的天堂不是来自手艺大概开辟方面,而是来自你四周的人。你大概会碰到一个对项目其实不悲观而又没工夫听你报告的向导。你大概会碰到一些开辟职员将进度稽延太长工夫还埋怨为何不克不及用老办法实行。你大概还会碰到一些抱有不实在际的梦想的用户,他们但愿轻点鼠标就可以完成设想中的功效,但却不肯在他们何处多做些智力投资,更好的培训他们本人的员工。而你也已筋疲力竭,勉励投资,和在开辟团队和用户(乃至老板)中推行新的开辟技能。

总之你要坚持浅笑。当统统弄定,你的懊恼也就一网打尽了,笑到最初才笑得最轻松。



数据堆栈开辟过程当中的七个忌讳

已往我们一向利用的OLTP手艺大概埋没着很多严峻的缺点。数据堆栈的完成并非一个复杂的义务,你会发明之前堆集上去的丰厚履历,其实不合适处置每一个数据堆栈的共同需求。

上面列出的条目是你在完成数据堆栈过程当中必定会晤对的成绩,个中一些看起来并没有设想中那末严峻,可是你仍是应当只管制止呈现相似成绩。数据堆栈并非一个事件处置体系,它没有必定的尺度也不会完成某个特定的使用,但它实质上长短常有构造性的。总之,每一个公司所创建的数据堆栈都是独一的,而且每次数据堆栈的完成办法都不是刻舟求剑的。在完成数据堆栈时必要注重的不但是"应当怎样作",更要注重"不应怎样做"。上面就是我们总结的七点"不应怎样作"。

1.不要编写本人没法疾速修正的代码
你所要编写的程序次要用于数据剖析,而不是处置事件。而你的用户也其实不真正晓得他们本人真正想要一个甚么样的程序。因而你不能不重复修正代码好几回,才会分明用户究竟必要一个甚么样的程序。假如你编写的程序具有优秀的布局和天真性,就算必要修正也不会太华侈力量。反之,你会被本人累逝世。

2.不要利用没法修正的数据库会见API
在已往,你的数据库能够为大批的客户供应不乱的数据查询服务。而现在,你的程序必需可以对付更多的数据查询。这使得从头改写程序以使得每一个查询哀求能失掉最年夜的数据量成为势在必行的事情,而一样平常来讲这类代码修正都不会一次乐成,以是只要选择符合的能够修正的API,才干使程序尽快顺应新的需求。

3.不要计划任何没法扩大的器材
在联机处置历程(OLTP)使用中,数据剖析并非一个真实的使用程序。实践上,数据剖析的关头是猎取大批旧的数据,从中提取数据模子,并以此模子揣度出新的信息。而你所编写的会见潜伏信息的代码应当具有可扩大性,能够附加新的数据。万万别在撑持数据剖析的代码中假定命据都是流动格局的。

4.不要附加不用要的功效
一个堆栈要做的是恰如其分的服务,用户走进堆栈,从货架上获得本人所需得信息,仅此罢了。因为营业智能、剖析和纪律性的成绩都有各自的处置程序,因而你的客户独一的必要就是猎取信息。他们必要一种使用情况,可让他们疾速的从数据堆栈中获得剖析历程所需的数据,而不管这个数据是甚么模样的。大概你想匡助他们精华精辟一下取得的数据,但最好不要这么做。必定要记着,不要给客户的数据剖析程序增加任何会影响数据会见功能的功效。

5.不要简化数据扫除和数据源剖析的步骤
在完成数据堆栈过程当中最应当注重的中央就是为Extract-Transform-Load机制剖析数据源,和为优化负载而扫除数据。平安的做法是假定项目司理在这个阶段会必要全部项目资本的一半以上。相反,假如你在这方面举行了简化,稍后一定会忏悔。以是就算体系事情迟缓,也不要简化清算旧的数据的历程。

6.不要制止颗粒度和分区成绩
在数据堆栈计划过程当中有两个最年夜的数据存储成绩,第一是怎样给转换数据定位一个得当的颗粒度品级,第二是怎样将数据相对的分区。为何这两点成绩云云主要呢?由于全部数据堆栈的呼应才能受颗粒度影响,而且数据会见的效力间接与数据分区功能有关。因而这是具有关头性的事情,不要试图制止面临这些成绩。

7.不要在没思索营业成绩前就利用OLAP
用户在亲目击到程序前一般都不晓得本人究竟想要个甚么样的程序。因而他们的概念有很多毛病,好比他们但愿剖析了局会忠厚反响功能器度,大概但愿程序会使他们部门或公司的营业事情有所分歧。而你必需跳出本人的职责局限,从IT办理者的角度思索用户部门直至全部企业的运转体例,才干在开辟过程当中制止这类成绩。在一般的OLTP开辟中,你能够对照便利的了解营业流程。而在联机剖析处置(OLAP)范畴,任何事变都必要亲身考查,而在你四周事情的人大概其实不会发明你对营业方面存在的曲解。因而,不要自觉得已懂得了充足的信息。不休的扣问才干使你真正懂得"营业智能"中的"营业"究竟是甚么模样的


顺遂开辟数据堆栈的七种思绪


关于年夜多半IT参谋来讲,完成一个数据堆栈的难度比之前做过的任何项目难度都要年夜。思索到分歧的数据布局、用处和使用程序开辟办法,之前所堆集的履历和技能年夜部分都无用武之地了。可是只需在你的行进路途上略加修改,你就会发明完成一个数据堆栈并非难事,就算你是第一次完成数据堆栈也没成绩。

上面列出了数据堆栈实行历程必要思索的步骤,有一些你大概历来没无意识到,而另外一些大概已在实行过程当中利用到了,可是从头思索一番大概你会有更多的意会。开放头脑,不休实验新的路子,找到一种可行的数据堆栈完成办法。

1.再三思索使用程序的完成办法
数据堆栈其实不触及事件处置,而且在报表方面也仅占一小部分。而数据堆栈使用程序的实质是剖析,特别是针对营业智能的剖析。BI并非一般所说的数据:它是一种从旧无数据中,模子化失掉的新的数据。那末怎样才干从旧无数据中挖出这些新数据呢?现实上,这个事情不是让你来完成的,而是你的客户所要完成的。从项目主管的角度看,应当有一个履历丰厚的数据表格计划师与你互助,进而决意怎样将各种程序交融在一同。个中所碰到的最次要的应战将是怎样用新的办法察看数据,这也是你的客户正在试图利用的办法。

2.创立笼统的、优秀部署的数据库会见组件
在已往你打仗过的数据库项目和如今的数据堆栈之间,有一点相对分歧,那就是:在OnlineTransactionProcessing(OLTP)情况中,用户数目十分年夜,但利用到的数据却对照少;而在OnlineAnalyticalProcessing(OLAP)情况中情形却恰好相反,大批的用户在利用大批的数据。而你的事情就是编写一个使用程序来优化这类分歧。这里有一个线索:在你一切的剖析程序中,都要能抓取一连的数据项,如许在今后创建和会见的数据布局中才干寄存与原数据物理布局相似的数据。详细怎样完成呢?起首不要规格化数据。第二将其放进数组中最小化读取哀求数。依照这类办法,DBA会很愿意与你互助。

3.坚持松懈
如今转头看看第一步,你应当能够了解界说一个剖析程序不是件复杂事了,并且一样平常情形下,很难在第一次就完成切合请求的终极产物。而在你将要举行剖析的数据布局上一样存在这类成绩。一句话,完成历程会有良多变数,你必要不休的修改你的程序。一般我们都但愿将修改次数降到最低。在一个数据堆栈完成过程当中,实质是要剖析历程毫无不对,这也必要DBA的介入。不要逝世捉住你的程序计划、代码、框图,或你创建的别的甚么器材不撒手,要依据这类变更而不休举行调剂。

4.将办理放在首位
在剖析数据源方面你做的怎样呢?你是不是以为清算渣滓数据的事情十分坚苦?并非只要你一团体如许想,做过相似事情的人都有这类意见。在一个一样平常范围的机构中,作为数据堆栈完成历程的一部分,会有大批的旧无数据必需举行分歧性处置。以是剖析数据源并消费数个小时编写转换程序将旧无数据导进数据堆栈是全部数据堆栈完成过程当中最困难的一部分。而且这也是全部项目中最主要的一环,能够占到全部项目周期和预算的四分之三。以是必定要当心看待。

5.从字里行间发明成绩
与用户交换是个很贫苦的事变,为何这么说呢?由于良多用户在见到终极产物前都不晓得本人想要甚么样的产物。界说数据堆栈使用程序是一个探究的历程,并且这个历程要重复举行。记着所谓的"营业智能"是用户本人界说的,他们依照本人的了解来处置营业流程。因而这些用户就是毗连数据和营业处置历程间的桥梁。他们所要的并非数据自己,而是埋没在数据前面的智能性。你可让他们会商、思索并给出建立性的定见。但万万不要让他们办理或让他们恣意设想和宣布那些"有大概"的概念。最初,必定要随时寄望用户得出的结论。

6.坚持抢先
数据堆栈看起来没有传统的OLTP形式根深蒂固,现实云云。固然良多人投身数据堆栈的开辟中,但因为其框架与之前的体系天差地别,因而在入手下手的一段工夫数据堆栈的完成看上往相称凌乱。可是保持下往是很主要的。它具有两方面主要的感化。

第一,手艺的抢先性。它能够跟踪项目中任何阶段的软件工具的部署和准确利用,和开辟历程。假如这复合你的背景,你能够对此多加寄望。

第二,系统布局的抢先性。它使得项目在各个阶段转换时,数据堆栈和它所撑持的体系的物理和逻辑架构都具有延续性,不会产生改动。这也是你能供应的。

7.收回告诫
最初你要记着,你并非独一登上新年夜陆的人。你四周的每个人城市有上面一点或几点成绩:不实际的希冀、对手艺的曲解、旧习气或坏习气、合作举动,或缺少对项目标信托度。固然交换相同等义务应当是项目司理卖力的,但实践上你也要担当起不异的义务。那末作为手艺总监你该怎样作呢?起首固然是要朴拙的看待四周的人,但必定要直立威望,得当的收回告诫。当你发明项目进度迟缓、资本流掉,大概员工得到方针,就要开门见山的说出来。疾速明白的赐与告诫在年夜部分情形下都是明智之举。匆仓促下马的数据堆栈项目大概会出轨,但不要让失利的项目把你拉上马。
Mysql的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。
9#
发表于 2015-3-20 21:19:52 | 只看该作者
如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
谁可相欹 该用户已被删除
8#
发表于 2015-3-13 23:08:24 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
小女巫 该用户已被删除
7#
发表于 2015-3-7 00:07:02 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-22 09:55:41 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
兰色精灵 该用户已被删除
5#
发表于 2015-2-7 15:00:01 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
透明 该用户已被删除
地板
发表于 2015-2-1 19:35:15 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
admin 该用户已被删除
板凳
发表于 2015-1-24 15:27:04 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
山那边是海 该用户已被删除
沙发
发表于 2015-1-19 16:26:46 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 09:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表