柔情似水 发表于 2015-1-16 22:46:33

MYSQL网站制作之数据堆栈之我见 (计划篇)

你会发现实际上MySQL可以更少地占用资金,前者的每CPU许可费用一般从4000美元到25000美元不等,而MySQL企业版的支持和维护成本就更低了。计划|数据制作数据堆栈要做些甚么?
一样平常说来,制作数据堆栈次要两个方面:

1.与操纵性数据库的接口计划。

2.数据堆栈自己的计划。

看上往仿佛很复杂,但现实并不是就这么墨守成规,假定我是一个数据库计划师,我完整能够不论三七二十一,先载进一部分数据,让DSS剖析员(还没忘吧,就是谁人给计划数据堆栈的人请求的)剖析往吧,等他先给点定见出来,我们在下手也不迟。

上面,我将依照提出成绩、办理成绩的按次来上一堂学前班。


制作数据堆栈的次要难点是甚么?
起首改正一个普遍存在的毛病熟悉:制作数据堆栈的历程就是从操纵性数据中提取数据的历程,之以是说这是错的,次要是由于:操纵性数据多数长短集成的(有谁见过一个计费程序能够把几年的账单条目统计一遍的),你不成能抽掏出你真正必要的器材,比方这个月的均匀消费,马磊在这个月的加班日等等,不必我说,你也晓得:操纵性数据次要是为使用程序服务,而每一个体系或使用程序都有其独有的“自力性”,在开辟的时分,谁会想到今后还要翻宿帐呢?

好了,换一个新的视角看成绩:假如不单单是抽取的话,那另有些甚么成绩呢?以下:

第一个成绩:体系集成。当做百上千张表放在一同,必要你来统计的时分,你敢一定这个表的某一字段和另外一张表的同名字段是一个寄义么?大概反过去说:你敢一定这个表的某一字段和另外一张表的不不异的字段必定是毫有关系的么?这些成绩能够回结成一个成绩:体系缺少集成性!办理这个成绩的办法除更好的计划你的数据库,只要靠你的耐烦了。另有就是字段的转换成绩,看上面这个例子:性别(sex)在数据库中有良多表达情势,能够写成m/f,也能够写成0/1来暗示男/女,等等……怎样办?为了包管传唤到数据堆栈的数据准确,我们必需创建分歧的映照(Sorry,复杂的说是:将下面提到的那种性子不异,暗示的分歧的数据用统一种情势表达出来),这也是一件必要耐烦的事情!

第二个成绩:存取现存体系的数据的效力。这很一般,当有良多表格和文件必要扫描的时分,谁能切实的晓得一个文件被扫描过?假如,现存体系存在大批的数据,你为了失掉个中某一些数据,而把全部数据库扫描一次,这件是一场喜剧。信任谁也不想这类事产生,详细的办理办法鄙人面的提出。

弄请”howto制止这些成绩”,先弄分明从操纵型情况到数据堆栈大概要做那些装载事情(你会选那一项呢?)

l装载档案数据。(遐想一下充满尘土的宿帐本就晓得甚么是档案了)

l装载在操纵性体系中今朝已有的数据。(就在体系中的数据,还没有备份的)

l将自数据库前次革新以来在操纵性情况中不休产生的变更(数据库的更新)装载到数据堆栈中。

关于第一个选项很复杂,翻帐本谁不会阿?以是难度很小,但作为一个DSS剖析员,放着现有的数据,你会乐意往剖析十年前的数据么,很多企业发明,在良多情况下,利用旧的数据得失相当。

关于第二个选项来讲,由于只必要装载一次,以是做起来也不难。一般我们能够依据操纵型情况写一个下载的按次文件,利用这个按次文件,能够在不损坏联机情况的条件下下载到数据堆栈中。(仿佛挺不错的)

第三个选项可就有点庞大了,由于,就再你装载数据的时分,数据库正产生着变更,要无效的捕获到那些变更不是一件简单的事。以是,扫描已有的文件(大概表格)成了数据堆栈系统布局计划者的次要困难。怎样办,怎样办……实在办法良多――有五种。

1.扫描偶然戳的数据,你能够分明的晓得:那些必要的数据是比来更新了的,最少我们能够无效避开工夫不符的数据。(不幸的是:没有几数占有时戳)

2.扫描增量文件,(甚么是增量文件,我也不晓得,但能够一定的是,它是由使用程序天生的,仅仅记录产生改动的数据),不幸的事,没有几程序有增量文件。L

3.扫描审计文件和日记文件,这两个文件实质上和增量文件是一样的,除年夜了一点,无用数据多了一点,接口程序难做一点,没其余害处J。

4.修正使用程序代码,(这仿佛太过了一点,为了计划数据堆栈,竟然让他人从写本人的使用程序),这其实不经常使用,应为一个用程序的代码陈腐并且不容易修正。L

5.第五种办法就是没无方法!开顽笑。包含本书的一切材料都劝慰我们不要如许做,以是,我只任意说两句:定时间做一些映像文件,对照他们的不同。但最比如用,我也以为着办法不但贫苦、庞大,并且必要各类资本。以是不到万不得已不必!J

第三个成绩:时基变更,难以掌控。现存的操纵型数据一般是以后值,精度可控,能够更新,但数据堆栈中的数据是不克不及更新的,以是这些数据必需附带工夫元素,实践操纵的时分,从操纵型体系传送到数据堆栈时,必需在数据中举行较年夜局限的改动。这时候,你就必需思索数据的稀释了,没举措,数据随工夫总在变,数据堆栈的空间无限阿!

到此为止,我们触及了三个成绩,和他们的办理办法,但这还不敷以使我们建一个本人的数据堆栈,应为我们还没有学详细办法。上面一节的内容将……!
数据/历程模子和系统布局计划办法
起首先容两个观点:历程建模和数据建模,复杂的说,历程建模就像我们在编程之前画的流程图!有入手下手and停止。数据建模就像是给你白菜,萝卜、醋、食盐等,然后问你能做出甚么菜,然后你很天然的回覆:醋溜白菜&萝卜汤一样。没无为甚么要如许做,应为只能如许做。J

历程建模是相对不克不及用在数据堆栈的计划上的,由于历程建模是基于需求的,它假定在细节计划之初就已晓得了需求,但在一点在建立数据从谁人库的时分其实不满意!

数据模子就好很多,它双方都符合!(嘻嘻,像全能胶)制作数据模子的时分不必要思索现存的、操纵型体系与数据堆栈之间的不同。要做的事变看上往仿佛很复杂:建一个企业数据模子,再建一个数据堆栈模子,最好再来一个操纵数据模子,能够如许了解:

企业模子à操纵模子à数据堆栈模子

三个方面都很主要,并且互不不异。(有点像鸡和蛋的干系)

任意聊聊数据模子吧,分三个条理的建模:高层建模(实体模子RED)、两头层建模(数据项集DIS)和底层建模(物理层)。制作的按次是由上向下,就仿佛人人坐在一同,会商出来一个大致的架构,入手下手两头层的计划事情(由于RED必要的数据不成能复杂的抽取到,必要必定的综合办法),然后依据两头层计划底层模子,(底层模子的数据是能够从操纵型数据中失掉的)。

呵呵,我仍是不深切会商了,给你留一点内容能够本人揣摩一下(并且本书也不是专门讲建模的课本)。

是否是有点晕了,甚么数据建模、甚么三个条理,别急,等你带着这些成绩往看书的时分,成绩很快就没有了,我之是倡议你能记录一下本人的成绩,不至于在看书的时分,连成绩都忘了。J

数据建模同时也是一个拼积木的历程,每次计划的了局都是一块共同积木,这有在凑够一切的积木以后,才能够完成一幅拼图。(一个义务)

以上先容的是数据堆栈的计划办法――数据建模。上面来谈一谈计划数据堆栈的几个细节成绩:(这大概会很单调)
标准化/反标准化
这类操纵的目标是削减体系的I/O操纵工夫。详细的办法能够归结为两句话:为了削减I/O操纵所用的工夫,将一些表兼并(标准化),大概引进冗余数据(反标准化)。


数据堆栈的快照
快照是一个事务的具体记录。举例:你用了一年夜笔钱买了一件亲爱的器材的时分,俄然发明下半个月的米饭钱没有了,这就是谁人事务,而发生的快照以下:

工夫|键码|地址金额物品……购置时的心境|账户余额……购置后的心境|

1234

不丢脸出:第三段数据是团圆的原始数据,第四段是事务产生后的因果数据(是接洽的、可选的)总结一把,快呼应该是对一个事务的实在纪录,他应当包括以下内容:

l键码。

l工夫单位。

l只和键码联系关系的初始数据。

l快照产生后所捕捉的二次数据,和后面无间接的干系。


元数据
关于(利用)数据的(汗青)数据,比方说数据堆栈导进的第一次工夫、第二次工夫。源数据在Where,数据布局是what,抽取的汗青记录等等。






数据堆栈中的办理参照表
数据堆栈中的参考数据(起数据年鉴感化),数据堆栈存在目标也就是为了供应参考根据,以是按期的发生参照数据能够削减数据堆栈中的数据量。这也不难了解:有了参照数据,天然就没需要保存那些陈年宿帐了。

创建参照数据表有两种办法:

1.每隔一个特定的工夫,就做一个参考表的一个快照。

2.一个快照就是一张参考表(合而为一),然后,针对每次修正做记录。


数据周期
所谓数据周期是指从操纵型情况数据产生改动,到这个变更在数据堆栈中表现出来所用的工夫。比方某位银行用户搬场,他的新地点被增加在操纵型数据中,数据堆栈发觉到后,立即把本人的数据更新。这就是一个数据周期。

成绩来了,这类调剂应当甚么工夫举行一次呢?准绳上是年夜于或即是24小时。这是为了数据的不乱和价值成绩。


转换和集成的庞大性
这里有良多良多的内容,恰恰他们都很琐屑,象是在先容履历一样,仍是留给你一点研讨吧。(我要偷懒啦)这就是建数据库的办法。


触发数据堆栈记录
触发数据堆栈必要一个事务,而这个事务应当是一主要举动,主要的以致于不克不及疏忽它的存在,呵呵,复杂点就像点了一个按钮,弹出了一个对话框一样。当捕捉到这个事务的时分,在数据堆栈中增加这个事务的快照。很复杂,不是么?大概你会想晓得,甚么事务,怎样触发?举个例子,你的一个主要的客户,打德律风关照你,修正交货地址,OK!你的反响生怕是先找到这条发货记录和客户记录(这是快照),修正个中的交货地址(二次数据),写进数据堆栈中。分明了?


办理数据堆栈
办理的目标是为了让数据该走的走,该留的留,该统计的就统计,不要让过了期的数据占用可贵的空间,呵呵,说着简单做着难,每人晓得用户那一天会发狂似的翻陈年宿帐,万一出了不对,会好事的哦。以是准确的处置办法就是:・#¥%…!・#。没看懂?啊哈,欠好意义,这是外语,嘻嘻,总结一下有两点:

1.利用复杂记录体例,归纳综合、综合数据。这里有一个综合标准的成绩,不要一次就把数据综合究竟,不要一次就丢失落数据的一切细节。让复杂记录的第一遍为第二遍供应根据。

2.同时创建数据备份。这是最保险的办法,找张光盘阿,磁带阿之类的,写出来丢到保险箱里就完事了。甚么?花钱费时,我以为挺好啊,用户查的时分,能够收她的费么。还赚了一笔J



依据以上诸多的叙述,你是否是已创建了一个大致的框架?晓得甚么才算是数据堆栈,如何的表布局才算是切合数据堆栈的?说句厚道话,我如今也没能分明数据模子究竟是个甚么器材?是相似c++里的工具,仍是相似数据布局里的布局体?我从中学到的是:数据堆栈在计划的时分就必需思索甚么,而不是如何做。以是,你必定要把这个器材弄分明,近期是不成能的。只能经由过程不休的理论,只应当是一个履历堆集的历程,能够说还没有一个完整可行,能够照搬的办法来计划数据堆栈。J是否是挺扫兴的,不妨,这原本就是一个必要重复的历程,%50的乐成率就算是不错的了,以是没需要忧虑:P

好吧,假定我们在思索了一切的情形后,建了一个非常完善的数据堆栈(有点恬不知耻,xixi),入手下手会见吧,你必需切记如许一个现实,数据堆栈必定有你所必要的数据,不然就必需举行二次补钉开辟。你入手下手统计、抽取、盘算等等,没有能不克不及,只要要不要!

摹拟一下,你是一个银行雇员,在收到了一个用户的假贷哀求,那你就必需想办法断定这个用户的信誉值和团体资产和事情情形,来判别是不是给这团体存款。这里有一个十分庞大的程序在背景做这件事变。并且数据堆栈中也为这类哀求筹办了响应的数据。这类考核是综合的也长短常快的。这时候,必需思索:

1.了偿汗青。

2.公有产业。

3.财政办理。

4.净值。

5.全体支出。

6.全体开支。

7.别的的有形资产。

……

在经由庞大的盘算后,才干失掉考核的最初了局,但这个历程所需的良多数据都是数据堆栈收拾出来的。Ok,你是否是分明了数据堆栈仍是挺有效的。

但让我们思索一下这类数据的存在情势吧,……,有无发明最初的数据是一个综合了良多情形的分解数据。良多良多的内容,像一个年夜锅腊八粥,但里边的配料来在分歧的中央。嘻嘻,实在这是数据堆栈中一定的征象,称之为星型连接。哦――,实在这些部分都是着名字的,两头的综合的是“现实表”,周边的是维表。并且这里边另有一个征象:现实表中包括了维表的主键。你大概没有反响过去,但现实就是如许。

这里遍包含了数据堆栈的会见技能。

好好想一想吧,想分明了最好能教一下我J。













在分明了触及数据堆栈的几大体素以后,OK!Let’sgoon.上面的成绩将很深切的会商相似于计划细节和办理细节的话题。看过以后必要深切的思索,这才干从中意会作者的本意。次要缘故原由也包含翻译成绩。

来看看第一个成绩:
数据堆栈的粒度
数据堆栈中的粒度是指数据的具体水平,一样为了形貌一个情形,我能够用良多的数据,但一样我也能够只用必须的数据。而这起决于存储器。假如有很年夜的硬盘,那就没有我们不克不及存的事变。以是,估量一年内中表中的最年夜行数和最小行数,是计划者的最年夜成绩。这里牵涉到了一个观点:高低限推想的办法。(别问我,我也不懂)

然后经由过程复杂的盘算能够晓得数据库也许的情形,然后能够调剂我们的战略。说的细心一点,我们能够接纳两重粒度大概单一粒度的举措。

两重粒度是下降数据量的最好办法。并且,年夜多半公司都接纳这类办法。上面来一个剖析:

两重粒度包含:低细节级和高细节级。要晓得:在很低的细节级上创建轻度汇总数据是没成心义的。反过去,在太高的细节级创建汇总数据也是没有效的。以是,必定要举行数据粒度的评价,然后才干得出最好的汇总计划。而好笑的是,这基本都是推测出来的,没有准确性的包管,嘿嘿,没举措,谁让我们原本就是在做一件不晓得前提,指晓得了局的方程式呢,但你能够把你的了局给终极用户看,让她来评价这个优劣,别期望%100的经由过程,%50就很不错了:)

这里有一些反应技能和一个例子,在90页,你能够参考一下。

假如说,数据粒度教你建数据堆栈的话,下一个话题就是教你办理啦!
数据堆栈和手艺
这里有很多多少我看不懂的办理手艺,嘻嘻,好比说:经由过程寻址,经由过程检索,经由过程数据内涵,经由过程无效的溢出办理……这里的办理包含:办理大批数据库的才能和能办理好数据堆栈的才能。任何天生撑持数据堆栈的手艺都要满意才能于效力的请求。

你要能办理多介质,主存、扩大内存、高速缓存、DSAD(如硬盘)、光盘、磁带……

数据堆栈的魂灵就在于天真性和对数据的不成展望性的会见,看不懂么?所的复杂点,就是它能对以往一切的数据举行评价,供应剖析根据。数据堆栈假如不克不及便利无效的使用索引,那末数据堆栈的创建就是不乐成的。多使用一些二级索引、静态索引、一时索引等等。

多种手艺接口,这我不必再注释了吧,这你应当分明的。

对数据寄存地位的把持,就像一入手下手讲的,必需使数据堆栈有一整套完美的数据寄存机制。并且最好是主动的噢!

数据的并行存储和办理,假定对数据的会见都是等几率的,则功能的进步与数据所散布的物理设备的几成反比。

元数据的办理,记着这个现实吧,再好的屋子,假如没有钥匙你也没举措!!以是,办理元数据的主要性乃至凌驾了办理数据堆栈中的数据。这包含表的布局,表的属性,源数据(记录体系),映照干系,数据模子申明,抽取日记,共用例路程序。

言语接口,SQL言语接口,就是你要做一个前台把持程序,能够拔出、删除……。

数据的高效装进,本人想吧,(甚么,先生偷懒,我就偷懒,怎样)这里没有甚么好说的,你必要依据分歧的情况做分歧的处置。

高效索引的使用、数据紧缩、复合键码、变长数据、加锁办理、疾速恢复。我就不再多说了,这你比我还分明。
DBMS范例和数据堆栈,
多维数据库办理体系(俗称”数据集市”),供应了一种信息体系布局使得对数据库的会见十分天真。假如我没了解毛病的话,数据集市供应了一种数据的办理、考查计划,以是它是赶过于数据堆栈之上的,以是数据堆栈的数据,是数据集市的次要数据来历,能够这么说,二者的不同就在于数据粒度的分歧,数据堆栈中的粒度很小,DBMS的数据粒度很年夜。固然,如许做是有目标的,这不但是为了使贮存的工夫更长,也能够数据更会合!

这里另有良多其他的感化:

比方:

ü撑持数据的静态毗连。

ü可以撑持通用的数据更新处置。

ü干系布局明晰了然。

那它是否是就完善了呢?实在否则!实在也有很多弊端必要克制。

数据量不如干系数据库撑持的那末多。

¨不撑持通用的更新手艺。

¨张如工夫长。

¨布局不天真。

¨静态撑持另有成绩。



这是我看完数据堆栈后的一点感觉,拿出来人人一同研讨、研讨,哈哈……
应用程序需要使用数据库,数据库本身需要设计、开发和部署。还有MySQL学习教程,客户怎样实施混合系统,或者需要帮助管理多个云服务?

爱飞 发表于 2015-1-18 19:50:24

这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?

飘灵儿 发表于 2015-1-23 06:37:29

你可以简单地认为适合的就是好,不适合就是不好。

深爱那片海 发表于 2015-1-31 15:06:07

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

小女巫 发表于 2015-2-6 19:51:45

总感觉自己还是不会SQL

admin 发表于 2015-2-18 11:42:50

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

海妖 发表于 2015-3-6 05:27:11

需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。

若天明 发表于 2015-3-12 21:04:16

你可以简单地认为适合的就是好,不适合就是不好。

谁可相欹 发表于 2015-3-20 02:41:41

原来公司用过MYSQL自己也只是建个表写个SQL
页: [1]
查看完整版本: MYSQL网站制作之数据堆栈之我见 (计划篇)