摘要: 装载数据仓库过程中,不管作业是实时执行还是批处理方式执行,其调度时间,执行顺序和执行环境都是关键点。本章描述创建一个ETL操作策略,来保证数据仓库的数据即时可用。ETL执行策略分为两种:1 调度 2 支持(为了确保etl过程运行完成,数据仓库必须能够被监控活动情况,并且必须有人专门支持)调度工具:任何企业数据仓库都必须拥有一个健壮的企业级ETL调度机制。主流的ETL供应商都提供其核心的ETL引擎提供打包的调度器ETL调度器必须的功能:1 令牌识别(ETL如何知道外部源的数据文件已经达到并开始其处理过程?ETL系统必须能够识别文件已经在文件系统中存在,并自动开始执行,这个过程叫做令牌识别)令牌是 阅读全文
posted @ 2012-10-23 14:09 honkcal 阅读(747) 评论(0) 推荐(0) 编辑
摘要: 要进入开发阶段,了解不同的ETL产品。整个ETL系统中,时间或更精确的,吞吐量是主要关心的内容。这种转换处理任务设计的主要目的归根结底是使得数据装载到展现表中最快并使得最终用户能快速的从这些表中得到响应。推或者拉:推,是源系统主动把文件推向ETL服务器,拉是ETL服务器主动从文件服务器上抽取文件。无论是推拉都得保证数据没有错误,传输完成,确保传输完全的一个简单的标志是使用标志(信号)文件。标志仅仅表示它相关的文件的可读性。预装载中的数据排序源数据在数据库中的时候,排序很容易通过数据库,查询数据的order by来实现,但是如果源数据来自平面文件,那么开始ETL处理之前需要一个排序的程序:在主机 阅读全文
posted @ 2012-10-12 23:12 honkcal 阅读(827) 评论(0) 推荐(0) 编辑
摘要: (下面是转发)数据库表A有十万条记录,查询速度本来还可以,但导入一千条数据后,问题出现了。当选择的数据在原十万条记录之间时,速度还是挺快的;但当选择的数据在这一千条数据之间时,速度变得奇慢。凭经验,这是索引碎片问题。检查索引碎片DBCC SHOWCONTIG(表),得到如下结果:DBCC SHOWCONTIG 正在扫描 'A' 表...表: 'A'(884198200);索引 ID: 1,数据库 ID: 13已执行 TABLE 级别的扫描。- 扫描页数.....................................: 3127- 扫描扩展盘区数.... 阅读全文
posted @ 2012-10-12 16:38 honkcal 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 查看 sql server 连接数的指令为:sp_who 、 sp_who active 、sp_who2 和 sp_who2 active,至于其中的区别,请大家search一下,这里不再解释了(附带的转发东西)由于公司最近两个Web站点做了负载均衡,但是缓存机制仍然是 Asp.Net 自带的缓存,这样就导致了每台Web 服务器内存中都有一份缓存,直接导致了多次请求DB数据库,造成了DB连接数过高。由于是两个较大的站点两台服务器做负载均衡(负载平衡),所以,DB 的连接数也飙升,几乎翻了3倍。公司DB服务器用的是 Sql Server 2008 R2 ,并且DB服务器配置是相当的强悍的,连接 阅读全文
posted @ 2012-10-12 16:02 honkcal 阅读(611) 评论(0) 推荐(0) 编辑
摘要: 今天早晨遇到问题,一个表有数据,查询能出来,插入怎么都插入不进去,update也是失败,delete也是失败。最后突然好了,也没找到原因,郁闷死。估计就是思索等问题导致,于是查了一下。下面的是复制的。转发的。Sys.SysProcesses 系统表是一个很重要的系统视图,主要用来定位与解决Sql Server的阻塞和死锁。MSDN:包含正在 SQL Server 实例上运行的进程的相关信息。这些进程可以是客户端进程或系统进程。视图中主要的字段:1. Spid:Sql Servr 会话ID2. Kpid:Windows 线程ID3. Blocked:正在阻塞求情的会话 ID。如果此列为 Null 阅读全文
posted @ 2012-10-12 15:58 honkcal 阅读(3375) 评论(0) 推荐(0) 编辑
摘要: 实事表的基本结构每一个事实表通过表的粒度来定义。粒度必须按照现实的,物理的意义来定义,然后考虑纬度和事实表中的其他字段等因素。所有的事实表包含了一组关联到维表的外建,而这些维表提供了事实表度量的上下文。如果设计的时候没有给与足够的注意,那么就有可能违反事实表上主见的假设,可能在同一时段两个同样的度量事件会发生,但是数据仓库团队没有意识到这一点,显然,每个事实表应该拥有一个主建,即使仅仅是出于管理的需要也应该在事实表上设立主见。如果没有主键完整性,那么事实表中有可能存在两个或者更多一样的记录,而且没有办法按照独立的量测事件来区分他们。确保参照完整性在维度模型中可能有两种情况会导致违反参照完整性: 阅读全文
posted @ 2012-10-10 13:42 honkcal 阅读(842) 评论(0) 推荐(0) 编辑
摘要: 维度的基础框架主键是指包含一个无意义的,唯一标识数字的字段,数据仓库拥有这些代理键值但并不把他赋给任何实体。维度的主键主要用于连接事实表。因为所有事实表必须保持表的参照完整性,因此维表中的主键连接的字段就称为事实表的外键。(大多数关系型数据库维表和事实表通过单一字段连接获得最大性能,当外键是数字类型的时候事实表是最为紧凑的)维表将其他的一个或者多个字段组成维表的自然键(natural key),自然键是源系统抽取的有意义的字段。比如employeeID。当维表是静态的,不随时间而变化,那么代理键和自然键就是一一对应的关系。后续有缓慢变化的维度,那么每个自然键就有多个代理键,以记录维度信息的历史 阅读全文
posted @ 2012-10-06 00:46 honkcal 阅读(1593) 评论(0) 推荐(0) 编辑
摘要: 清洗和规范化实际上真正的改变了数据,并对数据能否用于预期的目标起到决定作用。会有三个表:数据评估报告,错误事件事实表,审计维。清洗和规范化步骤中产生元数据。四个部分:1 设计目标 2 清洗提交 3 快照及其度量 4 规范化提交清洗和规范化过程中关注的更多的是约束关系与控制而不是数据上的内容。提交阶段,主要会介绍清洗子系统的主要结构:错误事件表和审计维定义数据质量:正确的,明确的,一致的,完整的(每个实例定义了特定的值和描述,要确保总数量是完整的)有两个里程碑:1 是在数据抽取完毕之后 2 是在数据清理和规范化之后1 设计目标 参与者: 数据仓库管理员(日常决策),信息驾驶员(定义信息策略,.. 阅读全文
posted @ 2012-09-29 00:11 honkcal 阅读(1155) 评论(0) 推荐(0) 编辑
摘要: Hash表(这篇文章转发,感觉还凑合,但是很不完全,有代码,凑合着看) Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。1.Hash表的设计思想 对于一般的线性表,比如链表,如果要存储联系人信息: 张三 13980593357李四 15828662334王五 13409821234张帅 13890583472 ... 阅读全文
posted @ 2012-09-28 15:05 honkcal 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 初始化加载数据,捕获源数据中的数据内容的变化不重要。但是加载完成后,捕获源系统中的数据变化立即变成非常重要的任务。要提前规划这个任务。必须制定相应的策略来在项目中捕获源数据中不断增长的变化。几种捕获源数据变化的方法:使用审计列:审计列示附在每个表的最后用来存储记录增加或者修改的日期或者时间,审计列一般通过数据库触发器产生,当插入或更新记录的时候自动生成(有时候为了提升性能,这些列由前端产生)。确认审计列是可靠的,则需要制定策略来利用他们,比如:比较每个记录最后修改的日期和时间与上次加载后的最后的日期和时间,取他们中较晚的值。由于事实表和维表可以来源于许多不同的表和系统,并且由于事实表只包含外建 阅读全文
posted @ 2012-09-21 13:26 honkcal 阅读(838) 评论(0) 推荐(0) 编辑
摘要: 数据不同形式,可以通过ODBC连接不同的数据源,ODBC灵活性是以性能为代价的。对于那些通过ODBC处理数据的ETL过程,在ETL系统和后台数据库之间增加了两层:ODBC管理器,ODBC驱动程序主机数据源:有特定的结构加强外围设备通道来处理输入输出,CPU可以专注处理数据,比如计算和均衡。如果源数据在主机系统上,则ETL工具具有从EBCDIC到ASCII的数据转换功能是很重要,如果可能,最好是在主机上进行转换以避免发生任何教小数值的和压缩数字的损失,如果通过磁带或者其他的介质获取,则这种转换必须由非主机环境中的ETL工具来实现。(具体不详细说了,这块接触的不多)平面文件:使用平面文件的原因 1 阅读全文
posted @ 2012-09-21 00:20 honkcal 阅读(1162) 评论(0) 推荐(0) 编辑
摘要: 在开始创建抽取系统之前,需要一份逻辑数据映射,它描述了那些提交到前台的表中原始字段和最终目标字段之间的关系。该文档贯穿ETL系统物理之前设计逻辑:1 有一个规划 2确定候选的数据源 3使用数据评估分析工具分析源系统 4 接受数据线和业务规则的遍历 5充分理解数据仓库数据模型 6 验证计算和公式的有效性逻辑数据映射的组成:目标表名称,表类型,SCD(缓慢变化维度),源数据库,源表名称,源列名称,转换。这个表必须清洗的描述在转换的过程中包含的流程,不能有任何疑问的地方。表类型给了我们数据加载过程执行的次序--》先是维表,然后是事实表。与表类型一起,加载维表过程SCD类型很重要,开发之前需要理解哪些 阅读全文
posted @ 2012-09-19 22:15 honkcal 阅读(1251) 评论(0) 推荐(0) 编辑
摘要: 数据仓库的后台部分经常被称为:集结区(StagingArea)。数据集结主要是指写入磁盘。并且建议ETL的四个主要检查点都要有数据集结。是将数据存储在物理集结区还是在内存中直接处理,这个问题是ETL架构中的最根本的选择之一。开发的ETL处理的效率很大程度上取决于能否很好的均衡物理IO与内存处理。能够在把数据写入集结表和保持在内存两种方法取得理想的均衡是个很大的挑战,也是优化处理过程中必须考虑的问题。最终目标:将数据以最快的速度从数据源获取到最终目标;在处理的过程发生错误的时候,能够进行恢复而无需从头开始。如果计划在内存中处理所有的ETL数据处理,不要忘记任何一种数据仓库,无论其架构和运行环境如 阅读全文
posted @ 2012-09-16 19:03 honkcal 阅读(1177) 评论(0) 推荐(0) 编辑
摘要: ETL系统能够:消除数据错误并纠正缺失数据;提供对于数据可信度的文档化衡量;为保护数据获取相互作用的数据流程;把多个源数据整合到一起;将数据进行结构化供最终用户使用。抽取转换加载==〉抽取,清洗,规格化,提交。创建ETL系统的时候,头脑里并存的两条主线:规划&设计主线 和 数据流主线规划&设计主线 :需求和实现===〉架构===〉系统实施===〉测试和发布数据流主线 :抽取===〉清洗====〉规格化====〉提交架构的时候,我们必须作出关于创建ETL系统创建方法的主要的决定,其中包括:1 手工编码还是使用ETL工具 2批处理还是流数据处理 3水平任务依赖还是垂直任务依赖4自动 阅读全文
posted @ 2012-09-11 09:30 honkcal 阅读(893) 评论(0) 推荐(0) 编辑
摘要: MDX中的脚本可以看作是Analysis Services中已有计算单元功能的一个升级版本,但是它并不能完全取代计算单元。MDX脚本:就是一串能够对SSAS2005多维数据集中数据产生影响的命令。使用这些命令可以创建计算成员,命名集,计算单元以及本书中其他地方所处理的所有主体。MDX脚本中的每条命令都必须以分号结尾。一个多维数据集可以拥有0个一个或者多个与之关联的MDX脚本,如果某个多维数据集中没有MDX脚本,那么服务器将会假设他拥有一个仅包含单条CALCULATE()语句的空脚本。当一个多维数据集中包含多个MDX脚本的时候,在任何时刻都只能有一个处于活跃状态。处于活跃状态的MDX脚本是多维数 阅读全文
posted @ 2012-08-15 14:31 honkcal 阅读(1773) 评论(0) 推荐(0) 编辑