精华内容
下载资源
问答
  • 企业信息化是当前社会热门的话题之一,随着社会发展,人类的生产、生活越来越离不开信息。谁拥有了更多更有效的...这其中可能有众多原因,导致信息系统运行的效果,未能达到前期设计时的目标,其中,有组织的数据质量
  • 本文将ARIMA模型运用于研究雾霾的影响因素,旨在对PMl0PM2.5浓度的滞后项的波动给出合理的分析,具有一定的研究意义。然后,本文从S0。、C0、N0。出发分别简单对治理雾霾提出建议。最后,本文针对实证研究结果做...
  • 影响数据检索效率的几个因素

    千次阅读 2015-06-09 19:32:44
    数据检索有两种主要形态。第一种是纯数据库型的。典型的结构是一个关系型数据,比如 mysql。用户通过 SQL 表达出所需要的数据,mysql 把 SQL 翻译成物理的数据检索动作返回结果。第二种形态是现在越来越流行的大数据...

    数据检索有两种主要形态。第一种是纯数据库型的。典型的结构是一个关系型数据,比如 mysql。用户通过 SQL 表达出所需要的数据,mysql 把 SQL 翻译成物理的数据检索动作返回结果。第二种形态是现在越来越流行的大数据玩家的玩法。典型的结构是有一个分区的数据存储,最初这种存储就是原始的 HDFS,后来开逐步有人在 HDFS 上加上索引的支持,或者干脆用 Elasticsearc 这样的数据存储。然后在存储之上有一个分布式的实时计算层,比如 Hive 或者 Spark SQL。用户用 Hive SQL 提交给计算层,计算层从存储里拉取出数据,进行计算之后返回给用户。这种大数据的玩法起初是因为 SQL 有很多 ad-hoc 查询是满足不了的,干脆让用户自己写 map/reduce 想怎么算都可以了。但是后来玩大了之后,越来越多的人觉得这些 Hive 之类的方案查询效率怎么那么低下啊。于是一个又一个项目开始去优化这些大数据计算框架的查询性能。这些优化手段和经典的数据库优化到今天的手段是没有什么两样的,很多公司打着搞计算引擎的旗号干着重新发明数据库的活。所以,回归本质,影响数据检索效率的就那么几个因素。我们不妨来看一看。

    数据检索干的是什么事情

    定位 => 加载 => 变换

    找到所需要的数据,把数据从远程或者磁盘加载到内存中。按照规则进行变换,比如按某个字段group by,取另外一个字段的sum之类的计算。

    影响效率的四个因素

    • 读取更少的数据
    • 数据本地化,充分遵循底层硬件的限制设计架构
    • 更多的机器
    • 更高效率的计算和计算的物理实现

    原则上的四点描述是非常抽象的。我们具体来看这些点映射到实际的数据库中都是一些什么样的优化措施。

    读取更少的数据

    数据越少,检索需要的时间当然越少了。在考虑所有技术手段之前,最有效果的恐怕是从业务的角度审视一下我们是否需要从那么多的数据中检索出结果来。有没有可能用更少的数据达到同样的效果。减少的数据量的两个手段,聚合和抽样。如果在入库之前把数据就做了聚合或者抽样,是不是可以极大地减少查询所需要的时间,同时效果上并无多少差异呢?极端情况下,如果需要的是一天的总访问量,比如有1个亿。查询的时候去数1亿行肯定快不了。但是如果统计好了一天的总访问量,查询的时候只需要取得一条记录就可以知道今天有1个亿的人访问了。

    索引是一种非常常见的减少数据读取量的策略了。一般的按行存储的关系型数据库都会有一个主键。用这个主键可以非常快速的查找到对应的行。KV存储也是这样,按照Key可以快速地找到对应的Value。可以理解为一个Hashmap。但是一旦查询的时候不是用主键,而是另外一个字段。那么最糟糕的情况就是进行一次全表的扫描了,也就是把所有的数据都读取出来,然后看要的数据到底在哪里,这就不可能快了。减少数据读取量的最佳方案就是,建立一个类似字典一样的查找表,当我们找 username=wentao 的时候,可以列举出所有有 wentao 作为用户名的行的主键。然后拿这些主键去行存储(就是那个hashmap)里捞数据,就一捞一个准了。

    谈到索引就不得不谈一下一个查询使用了两个字段,如何使用两个索引的问题。mysql的行为可以代表大部分主流数据库的处理方式:
    https://www.percona.com/blog/2012/12/14/the-optimization-that-often-is
    https://www.percona.com/blog/2014/01/03/multiple-column-index-vs-multi
    基本上来说,经验表明有多个单字段的索引,最后数据库会选一最优的来使用。其余字段的过滤仍然是通过数据读取到内存之后,用predicate去判断的。也就是无法减少数据的读取量。
    在这个方面基于inverted index的数据就非常有特点。一个是Elasticsearch为代表的lucene系的数据库。另外一个是新锐的druid数据库。
    https://www.found.no/foundation/elasticsearch-from-the-bottom-up/
    http://druid.io/blog/2012/09/21/druid-bitmap-compression.html
    效果就是,这些数据库可以把单字段的filter结果缓存起来。多个字段的查询可以把之前缓存的结果直接拿过来做 AND 或者 OR 操作。

    索引存在的必要是因为主存储没有提供直接的快速定位的能力。如果访问的就是数据库的主键,那么需要读取的数据也就非常少了。另外一个变种就是支持遍历的主键,比如hbase的rowkey。如果查询的是一个基于rowkey的范围,那么像hbase这样的数据库就可以支持只读取到这个范围内的数据,而不用读取不再这个范围内的额外数据,从而提高速度。这种加速的方式就是利用了主存储自身的物理分布的特性。另外一个更常见的场景就是 partition。比如 mysql 或者 postgresql 都支持分区表的概念。当我们建立了分区表之后,查找的条件如果可以过滤出分区,那么可以大幅减少需要读取的数据量。比 partition 更细粒度一些的是 clustered index。它其实不是一个索引(二级索引),它是改变了数据在主存储内的排列方式,让相同clustered key的数据彼此紧挨着放在一起,从而在查询的时候避免扫描到无关的数据。比 partition 更粗一些的是分库分表分文件。比如我们可以一天建立一张表,查询的时候先定位到表,再执行 SQL。比如 graphite 给每个 metric 创建一个文件存放采集来的 data point,查询的时候给定metric 就可以定位到一个文件,然后只读取这个文件的数据。

    另外还有一点就是按行存储和按列存储的区别。按列存储的时候,每个列是一个独立的文件。查询用到了哪几个列就打开哪几个列的文件,没有用到的列的数据碰都不会碰到。反观按行存储,一张中的所有字段是彼此紧挨在磁盘上的。一个表如果有100个字段,哪怕只选取其中的一个字段,在扫描磁盘的时候其余99个字段的数据仍然会被扫描到的。

    考虑一个具体的案例,时间序列数据。如何使用读取更少的数据的策略来提高检索的效率呢?首先,我们可以保证入库的时间粒度,维度粒度是正好是查询所需要的。如果查询需要的是5分钟数据,但是入库的是1分钟的,那么就可以先聚合成5分钟的再存入数据库。对于主存储的物理布局选择,如果查询总是针对一个时间范围的。那么把 timestamp 做为 hbase 的 rowkey,或者 mysql 的 clustered index 是合适。这样我们按时间过滤的时候,选择到的是一堆连续的数据,不用读取之后再过滤掉不符合条件的数据。但是如果在一个时间范围内有很多中数据,比如1万个IP,那么即便是查1个IP的数据也需要把1万个IP的数据都读取出来。所以可以把 IP 维度也编码到 rowkey 或者 clustered index 中。但是假如另外还有一个维度是 OS,那么查询的时候 IP 维度的 rowkey 是没有帮助的,仍然是要把所有的数据都查出来。这就是仅依靠主存储是无法满足各种查询条件下都能够读取更少的数据的原因。所以,二级索引是必要的。我们可以把时间序列中的所有维度都拿出来建立索引,然后查询的时候如果指定了维度,就可以用二级索引把真正需要读取的数据过滤出来。但是实践中,很多数据库并不因为使用了索引使得查询变快了,有的时候反而变得更慢了。对于 mysql 来说,存储时间序列的最佳方式是按时间做 partition,不对维度建立任何索引。查询的时候只过滤出对应的 partition,然后进行全 partition 扫描,这样会快过于使用二级索引定位到行之后再去读取主存储的查询方式。究其原因,就是数据本地化的问题了。

    数据本地化

    数据本地化的实质是软件工程师们要充分尊重和理解底层硬件的限制,并且用各种手段规避问题最大化利用手里的硬件资源。本地化有很多种形态

    • 最常见的最好理解的本地化问题是网络问题。我们都知道网络带宽不是无限的,比本地磁盘慢多了。如果可能尽量不要通过网络去访问数据。即便要访问,也应该一次抓取多一些数据,而不是一次搞一点,然后搞很多次。因为网络连接和来回的开销是非常高的。这就是 data locality 的问题。我们要把计算尽可能的靠近数据,减少网络上传输的数据量。
    • 这种带宽引起的本地化问题,还有很多。网络比硬盘慢,硬盘比内存慢,内存比L2缓存慢。做到极致的数据库可以让计算完全发生在 L2 缓存内,尽可能地避免频繁地在内存和L2之间倒腾数据。
    • 另外一种形态的问题化问题是磁盘的顺序读和随机读的问题。当数据彼此靠近地物理存放在磁盘上的时候,顺序读取一批是非常快的。如果需要随机读取多个不连续的硬盘位置,磁头就要来回移动从而使得读取速度快速下降。即便是 SSD 硬盘,顺序读也是要比随机读快的。

    基于尽可能让数据读取本地化的原则,检索应该尽可能地使用顺序读而不是随机读。如果可以的话,把主存储的row key或者clustered index设计为和查询提交一样的。时间序列如果都是按时间查,那么按时间做的row key可以非常高效地以顺序读的方式把数据拉取出来。类似地,按列存储的数据如果要把一个列的数据都取出来加和的话,可以非常快地用顺序读的方式加载出来。

    二级索引的访问方式典型的随机读。当查询条件经过了二级索引查找之后得到一堆的主存储的 key,那么就需要对每个 key 进行一次随机读。即便彼此仅靠的key可以用顺序读做一些优化,总体上来说仍然是随机读的模式。这也就是为什么时间序列数据在 mysql 里建立了索引反而比没有建索引还要慢的原因。

    为了尽可能的利用顺序读,人们就开始想各种办法了。前面提到了 mysql 里的一行数据的多个列是彼此紧靠地物理存放的。那么如果我们把所需要的数据建成多个列,那么一次查询就可以批量获得更多的数据,减少随机读取的次数。也就是把之前的一些行变为列的方式来存放,减少行的数量。这种做法的经典案例就是时间序列数据,比如可以一分钟存一行数据,每一秒的值变成一个列。那么行的数量可以变成之前的1/60。

    但是这种行变列的做法在按列存储的数据库里就不能直接照搬了,有些列式数据库有column family的概念,不同的设置在物理上存放可能是在一起的也可能是分开的。对于 Elasticsearch 来说,要想减少行的数量,让一行多pack一些数据进去,一种做法就是利用 nested document。内部 Elasticsearch 可以保证一个 document 下的所有的 nested document是物理上靠在一起放在同一个 lucene 的 segment 内。

    网络的data locality就比较为人熟知了。map reduce的大数据计算模式就是利用map在数据节点的本地把数据先做一次计算,往往计算的结果可以比原数据小很多。然后再通过网络传输汇总后做 reduce 计算。这样就节省了大量网络传输数据的时间浪费和资源消耗。现在 Elasticsearch 就支持在每个 data node 上部署 spark。由 spark 在每个 data node 上做计算。而不用把数据都查询出来,用网络传输到 spark 集群里再去计算。这种数据库和计算集群的混合部署是高性能的关键。类似的还有 storm 和 kafka 之间的关系。

    网络的data locality还有一个老大难问题就是分布式大数据下的多表join问题。如果只是查询一个分布式表,那么把计算用 map reduce 表达就没有多大问题了。但是如果需要同时查询两个表,就意味着两个表可能不是在物理上同样均匀分布的。一种最简单的策略就是找出两张表中最小的那张,然后把表的内容广播到每个节点上,再做join。复杂一些的是对两个单表做 map reduce,然后按照相同的 key 把部分计算的结果汇集在一起。第三种策略是保证数据分布的方式,让两张表查询的时候需要用到的数据总在一起。没有完美的方案,也不大可能有完美的方案。除非有一天网络带宽可以大到忽略不计的地步。

    更多的机器

    这个就没有什么好说的了。多一倍的机器就多一倍的 CPU,可以同时计算更多的数据。多一倍的机器就多一倍的磁头,可以同时扫描更多的字节数。很多大数据框架的故事就是讲如何如何通过 scale out 解决无限大的问题。但是值得注意的是,集群可以无限大,数据可以无限多,但是口袋里的银子不会无限多的。堆机器解决问题比升级大型机是要便宜,但是机器堆多了也是非常昂贵的。特别是 Hive 这些从一开始就是分布式多机的检索方案,刚开始的时候效率并不高。堆机器是一个乘数,当数据库本来单机性能不高的时候,乘数大并不能起到决定性的作用。

    更高效的计算和计算实现

    检索的过程不仅仅是磁盘扫描,它还包括一个可简单可复杂的变换过程。使用 hyperloglog,count min-sketch等有损算法可以极大地提高统计计算的性能。数据库的join也是一个经常有算法创新的地方。
    计算实现就是算法是用C++实现的还是用java,还是python实现的。用java是用大Integer实现的,还是小int实现的。不同的语言的实现方式会有一些固定的开销。不是说快就一定要C++,但是 python 写 for 循环是显然没有指望的。任何数据检索的环节只要包含 python/ruby 这些语言的逐条 for 循环就一定快不起来了。

    结论

    希望这四点可以被记住,成为一种指导性的优化数据检索效率的思维框架。无论你是设计一个mysql表结构,还是优化一个spark sql的应用。从这四个角度想想,都有哪些环节是在拖后腿的,手上的工具有什么样的参数可以调整,让随机读变成顺序读,表结构怎么样设计可以最小化数据读取的量。要做到这一点,你必须非常非常了解工具的底层实现。而不是盲目的相信,xx数据库是最好的数据库,所以它一定很快之类的。如果你不了解你手上的数据库或者计算引擎,当它快的时候你不知道为何快,当它慢的时候你就更加无从优化了。

    转自:影响数据检索效率的几个因素

    展开全文
  • 任何一个项目或多或少都会遇到某些环节的...对于项目进度计划安排是否合理影响因素主要应该从以下几个方面进行分析考虑。 1、估算是否准确 对于估算是否准确是对项目进度计划安排影响最大的一个因素,估算不准.


    任何一个项目或多或少都会遇到某些环节的进度被延迟的情况,所以如何确保项目按计划计划进行,成为了项目过程中的一个重点。

    当项目进度延期我们要搞清楚项目是因为什么原因延期的,一般项目延期主要是因为项目进度本身制定不合理,另一方面是来自于项目团队人员方面的,


    一、项目进度本身不合理


    对于进度延迟时候应该首先分析项目进度计划安排本身是否合理?对于项目进度计划安排是否合理影响因素主要应该从以下几个方面进行分析和考虑。

    1、估算是否准确


    对于估算是否准确是对项目进度计划安排影响最大的一个因素,估算不准确的原因很多,主要的两个方面是确实有经验的估算专家和项目缺少历史数据的收集。当然还要考虑其他因素的影响。

    2、关键资源和关键路径的安排是否合理


    在进度计划安排中,是否优先保证了项目关键路径上的资源,是否对项目关键资源进行分析和安排,是否对关键资源进行了保护。在进度计划安排上适当多留时间,这样在项目遇到突发事件时候才能够有时间处理。


    3、技术达不到要求


    选择的技术不成熟,或者不适合当前的项目,导致在项目初期缺乏足够的预估,没有识别到潜在的风险。
    信心满满地出发,项目进行到一定阶段时,各种技术性故障频发而缺少有效的解决方案和解决资源,最终项目烂尾。或者勉强上线后,因为技术存在瓶颈,使得产品的体验性,可扩展性非常差。

    4、项目资源是否充分利用


    由于存在关键路径和岗位角色矩阵,所以项目中人力资源往往并不能充分利用起来。在中小型软件项目中为了充分利用相关资源,项目更应该采用敏捷和迭代的开发方法,需求阶段开发人员可以先熟悉需求和进行公有组件的开发,而测试阶段我们的需求人员也可以介入测试。


    二、团队和人的问题


      有的项目是人和团队的因素对项目影响很大,需要花费一定的时间学习,新成员才可能真正达到项目要求的生产率。对于这方面影响因素主要分析如下:

    1、人员技能未达到要求


      项目中成员间的能力存在一定差异,可能给项目进度造成影响。所以在项目开始之初应该对项目成员的技能进行评估,对于大家欠缺的技能应该安排统一的培训,后续还需要对培训的效果进行跟踪,使其技能能够尽快达到要求。

    2、项目成员责任心不强


    项目过程中,经常出现由于项目成员责任心不强,导致产出的工件质量较差,引起大量返工的情况。在这种情况下项目应该加强项目规范的建设,同这些成员的单独沟通,加强项目的团队建设和集体荣誉感。


    3、项目沟通问题


      项目中,保证各种角色之间的沟通是很重要的,如何建立起快捷顺畅的沟通渠道,采用最佳的沟通方式来解决问题必须在项目中经常强调。

    4、项目人员流失


    项目人员特别是项目关键成员在项目进行过程中的流失对项目影响很大,对于这种情况应该在项目开始之初中就作为专门的风险进行跟踪,并考虑具体的应对措施。
    如何避免项目延期?


    我们可以借助项目管理工具

    可视化工具:如看板、燃尽图、甘特图等,帮助团队所有成员直观了解项目进度情况,任务状态、负责人、已完成项和剩余工时等一目了然、清晰可见。
    在线的团队知识库:共享项目计划和文件,文档资源及时共享,帮助不同角色职能快速找到答案和可用经验。
    项目沟通流程规范和会议制度:尤其是跨团队沟通的流程和规范,团队所有成员都按照统一的标准和规范执行,降低沟通成本。
    营造团队合作的良好氛围:多多促进成员之间的日常交流让他们更亲近,从而在工作中更容易合作。
    5、合理规划项目进度,根据项目特点和具体情境,选择合适的进度计划。可以借助甘特图合理规划项目进度。

    展开全文
  • 1.项目进度本身不合理 项目管理者联盟文章,深入...对于估算是否准确是对项目进度计划安排影响最大的一个因素,估算不准确的原因很多,主要的两 个方面是确实有经验的估算专家项目缺少历史数据的收集,对于这两点

    1.项目进度本身不合理 项目管理者联盟文章,深入探讨。

    本着多从自身找原因的准则,对于进度延迟时候应该首先分析项目进度计划安排本身是否合理?对于项目进度计划安排是否合理影响因素主要应该从以下几个方面进行分析和考虑。

    估算是否准确

    对于估算是否准确是对项目进度计划安排影响最大的一个因素,估算不准确的原因很多,主要的两 个方面是确实有经验的估算专家和项目缺少历史数据的收集,对于这两点只有通过项目多个版本的积累才可能得以改善,而没有捷径。另外估算过程中还需要考虑一 些特殊因素的影响,如项目新进了几名新员工可能会降低项目的平均生产率,项目过程中需要采用某种新技术而需要投入额外的预研时间等。 项目管理者联盟文章,深入探讨。

    关键资源和关键路径的安排是否合理

    在进度计划安排中是否优先保证了项目关键路径上的资源,是否通过人员技能矩阵对项目关键资源 进行分析和安排。在我们任务安排过程中是否对关键资源进行了保护(尽量减少关键资源上非关键任务的安排)。另外我们在进度计划安排上应该适当安排 10%-15%的余量,这样在项目遇到突发事件,或项目风险转变为实际问题时候才能够有人员和时间进行处理。

    项目中的资源是否充分利用

    由于存在关键路径和岗位角色矩阵,所以项目中人力资源往往并不能充分利用起来。在中小型项目 中为了充分利用相关资源,项目更应该采用敏捷和迭代的开发方法,需求阶段开发人员可以先熟悉需求和进行公有组件的开发,而测试阶段我们的需求人员也可以介 入测试。所以对一个软件项目而言,需要保证到项目成员的整体利用程度在70%以上,否则就应该考虑采用新的开发模式和生命周期模型。

    2.团队和人的问题

    软件项目跟其它工程项目最大的不同就是人和团队的因素对项目影响很大,软件项目中的编码人员 也是重复的创造性的非简单重复的劳动。软件工厂在短时间内是无法实现的,所以更必须承认项目中各个成员的价值。工程建设中走了一个泥水工可能马上就能找到 替代人手,而软件项目中人员流失及时很快找到了新成员,也需要花费不定长的培训和学习时间,新成员才可能真正达到项目要求的生产率。对于这方面影响因素主 要分析如下:

    人员技能未达到要求

    在项目开始之初我们假设项目成员都能够达到组织级的要求,但往往并不是每个成员都能够达到要 求。而且项目中每个成员的生产率差异可能很大,也给项目进度安排造成影响。所以在项目开始之初应该对项目成员的技能进行一次总体的评估,对于大家都欠缺的 技能应该安排统一的培训,后续还需要对培训的效果进行跟踪;对于个别人员技能欠缺的应该单独预留自我学习时间或通过以师带徒的方式进行培养,使其技能能够 尽快达到要求;对于项目新员工的工作和任务应该加强评审和Review,保证输出不出现大的偏差而导致后续大量的返工。

    项目成员责任心不强

    态度决定一切,细节决定成败。对于项目过程中的各项任务,经常出现由于项目成员责任心不强而 敷衍了事,导致产出的工件质量较差,引起大量返工的情况。在这种情况下项目更应该加强项目规范的建设,项目经理应加强同这些成员的单独沟通,加强项目的团 队建设和集体荣誉感。让项目成员感觉到做的系统是他们自己的产品,而不是公司的项目,项目经理的项目。

    项目沟通问题

    在软件项目中,保证项目各种角色和成员中的高效沟通是很重要的,如何建立起快捷顺畅的沟通渠 道,采用最佳的沟通方式来解决问题必须在项目中经常强调。一周的项目任务花在实际做事情上只有2天,而花在沟通上占有了3天,如果出现这种情况必须及时分 析和总结原因。沟通最重要的就是要在最短的时间里面,采用可以采用的各种方法或工具使交流双方或多方达成一致。

    项目人员流失

    项目人员特别是项目关键成员在项目进行过程中的流失对项目影响很大,对于这种情况应该在项目开始之初中就做为专门的风险进行跟踪,并考虑具体的应对措施。

    3.质量因素的制约

    项目管理者联盟文章,深入探讨。

    时间和质量是项目中两个重要因素,在保证项目进度的情况下我们往往会牺牲了项目的质量。而由 于软件项目中测试环节的引入,项目的最终产出又需要保证我们的最终产品满足一定的质量规范。所有项目中经常出现项目后期测试问题太多,BUG修改和回归测 试等花费了大量的时间而导致项目的延迟。对于项目质量因素的制约主要分析为:

    磨刀误了砍柴工

    由于项目本身进度紧张,往往在项目进行过程中忽略了对项目各阶段产出物的质量的评审和 Review。导致到项目后期测试时候问题全部暴露出来,而这时候如果是需求引起的缺陷则往往会耗费到前期评审的5-20倍的工作量来进行弥补。所以在软 件项目中应该注重项目各阶段的评审和Review工作,提早发现问题并解决问题,避免项目后期大量返工。

    4.项目的风险管理工作没有做好

    项目管理就是对项目中各种风险和突发事件的管理,管理住了项目的风险项目就成功了一半。如果 项目经理没有风险管理意识,对项目可能发生的问题或潜在的不利因素都不能预测到,也没有提前采取相关的应急措施,则在项目进行过程中风险真正转化为问题后 就会导致项目很被动。如前期没有分析出项目核心成员流失的风险,而在项目进行过程中该核心成员要离职,项目短期无法招到合适新成员,项目中也没有合适的技 能替代成员,这样对项目的打击将是致命的。

    另外项目还应该形成一套突发事件的应对机制,保证有突发事件时候能够通过积累的各种方法,工具,预备的资源余量进行跟踪和处理。

    5.项目范围出现大变动

    项目范围出现大变动,新增加了大量功能的时候往往会直接导致项目延期,在这个时候特别已经是在项目后期时候增加人员往往会使项目进度变的更糟糕。在这种时候往往没有很好的应对办法,加班赶进度往往成为了最常用的措施。

    需求变更多也往往导致项目范围的变动而影响项目进度,因此在项目管理过程中应该对变更的管理形成一套完善的管理,分析和控制机制,成立变更控制委员会专门对变更进行分析,调查和处理。

    6.项目开发模式和选用工具技术是否有问题

    这个时候做这个分析已经不可能对当前项目有任何作用,而更多的会总结为相关的经验教训避免重 犯错误。项目开发模式,生命周期选择,选择的开发语言,开发环境,相关工具和技术都直接或间接的影响到项目成员的生产率,这些我们在项目估算中可能会做相 关考虑,但可能并不能从根本上解决问题,当我们预知客户的进度要求的时候,更应该通过进度要求去约束我们工具和技术的选择和使用。

    7.系统架构的原因

    对于大中型系统总统设计和架构设计更显重要。架构设计不仅仅要考虑满足业务的功能性需求,而 进行子系统,接口,组件等的设计和划分;同时架构设计更需要考虑满足系统的健壮性,可扩展性,性能,安全性,可维护性等非功能性需求。架构人员应该通过架 构设计屏蔽整个系统的复杂性,而向模块设计和开发人员提供一套简单,高效的开发规程和模式,这样才能够真正提高后续设计开发的效率和质量。

    对于一个新项目,更应该对项目的总体设计和架构设计预备充足的时间,架构不稳定和成熟代表根基不稳定,这样的话修再高的楼都会倒塌。要设计一个成熟的架构,架构人员不仅仅要是技术方面的专家,也需要充分理解业务需求,这样才能够做出好的架构来。

    展开全文
  • 数据质量管理的流程

    千次阅读 2018-07-27 13:47:38
    明确数据质量管理的重点、时机目标,来指导整个项目期间的所有工作。 目标: 1.明确信息环境-数据、流程、人员、组织以及与业务情况相关的技术。 2.按顺序排列并最终确定项目重点关注的业务问题。 输入: ...

    1定义业务需求和方法

    明确数据质量管理的重点、时机和目标,来指导整个项目期间的所有工作。
    

    目标:

    1.明确信息环境-数据、流程、人员、组织以及与业务情况相关的技术。
    
    2.按顺序排列并最终确定项目重点关注的业务问题。
    

    输入:

    1.亟需解决的数据质量业务需求和时机
    
    2.已知现存的数据质量问题
    
    3.企业的需求(以及任何对当前信息环境有帮助的资料,如数据模型、软件架构、组织结构图)
    

    工具和技术:

    1.实地调研
    
    2.过往实践经验
    
    3.组织结构图
    
    4.费效矩阵
    
    5.优先级排序技术
    

    输出:
    1.待解决问题的明确描述,以及它们与数据质量的关系。

    2.信息环境的明确描述。
    
    3.初步沟通方案。
    
    4.项目方案:项目章程、背景图、工作分解结构、实践安排表、预计所需的资源。
    

    2.分析信息环境

    收集、整理并分析与数据质量相关的信息环境。明确信息生命周期,确保相关数据得以评估。设计数据获取与评估方案。
    

    目标:

    1.收集、整理和分析当前需求、数据及规范、流程、人员、组织以及业务问题相关技术细节。
    
    2.提供信息生命周期的文件资料。
    
    3.制定数据获取和评估的初步方案。
    

    输入:

    来自步骤1的输出:
    
    1.待解决问题的明确描述,以及它们与数据质量的关系。
    
    2.信息环境的明确描述。
    
    3.初步沟通方案。
    
    4.项目方案:项目章程、背景图、工作分解结构、实践安排表、预计所需的资源。
    
    其他输入:与业务问题和信息环境有关的资料
    
    1.需求和约束:业务、技术、法律、合同、规划、内部政策、安全要求、保密性。
    
    2.数据规范。
    
    3.业务流程。
    
    4.工作角色和职责。
    
    5.技术体系结构和数据模型。
    

    工具和技术:
    1.信息质量框架。

    2.信息生命周期。
    
    3.信息生命周期方法。
    
    4.数据捕获。
    
    5.结果分析。
    
    6.数据质量工具。
    

    输出:

    1.数据生命周期。
    
    2.数据获取和评估方案。
    
    3.分析信息环境的结果:历史文档资料,影响数据质量的潜在因素及根本原因和解决建议。
    
    4.确定最终需求。
    
    5.详细的数据列表和数据规范。
    
    6.数据模型:包含了解数据结构和数据关系所需的细节。
    
    7.技术背景。
    
    8.流程细节。
    
    9.组织结构、角色和职责。
    

    3.评估数据质量

    针对适用于这一问题的数据质量维度,评估数据质量。评估结果用来确定数据质量问题的根本原因、需要改进的地方。
    

    目标:

    1.评估适用于业务问题的数据质量为度。
    

    输入:

    1.来自步骤2的输出:
    

    方法和技术:

    1.适用于维度的技术。
    
    2.适合进行评估的工具:数据剖析工具、报表工具或SQL、数据清洗工具以及其他数据质量相关工具
    

    输出:

    1.数据质量评估结果。
    
    2.对业务的潜在影响和根本原因。
    
    3.初步行动建议。
    

    4.评估业务影响

    使用各种技术来评估劣质数据对业务的影响。该步骤为业务改进、确定适当的资源投资提供依据。
    

    目标:

    1.使用定性及定量方法确定数据质量问题对业务的影响。
    

    输入:

    1.来自步骤1-3的输出。
    

    工具和技术:

    1.适用于特定业务影响技术的方法,如各类调查模版。
    

    输出:

    1.业务影响评估结果。
    
    2.基于影响结果的行动建议。
    

    5.确定数据质量问题原因

    确定引起数据质量问题的根本原因,并区分优先次序,以及为解决这些问题的具体建议。
    

    目标:

    1.确定数据质量问题的根本原因,并对其优先级进行划分。
    
    2.制定建议。
    

    输入:

    1.历史经验以及步骤2-4中获得的输出。
    

    工具与技术:

    1.适用于特定根本原因的技术,如因果图、鱼骨图。
    
    2.回报矩阵。
    

    输出:

    1.解决数据质量问题的根本原因的具体建议。
    
    2.基于业务影响结果的具体建议。
    

    6.制定提高方案

    确定最终具体解决方案。
    

    目标:
    基于数据质量或业务影响评估结果,制定行动方案。

    输入:

    数据质量:
    
    1.高优先级问题、根本原因以及解决问题的具体建议列表。
    
    2.数据质量评估结果的输出。   
    
    业务影响:
    
    1.业务影响评估结果以及基于评估的行动建议。
    
    2.优先级划分:费效矩阵。
    
    3.熟悉的规划方法。
    

    输出:

    1.解决根本原因、预防数据质量问题和纠正数据错误的具体行动方法。
    
    2.受方案影响的人员。
    

    7.预防未来数据错误

    实施解决引起数据质量问题的根本原因的解决方案。
    

    目标:

    1.通过处理数据错误发生的原因来预防未来发生数据错误。
    
    2.实施适当的提高方案。
    
    3.确保用于处理数据错误处理的投资不浪费。
    

    输入:

    1.来自步骤6的输出。
    

    工具和技术:

    1.为修正每一类问题的数据错误适用的工具和技术。
    
    2.将数据剖析和数据清洗工具的功能作为标准流程的一部分。
    

    输出:

    1.解决根本原因和预防未来数据错误的方案。
    
    2.活动实施而给当前业务带来的变更。
    
    3.受业务变更影响的人员。
    

    8.纠正当前数据错误

    实施数据纠正步骤。
    

    目标:

    实施纠正现有数据错误的解决方案。

    输入:

    1.步骤3、步骤6的输出。
    
    2.实施变更的小规模试点。
    
    3.受影响的人员。
    

    工具和技术:

    1.数据清洗工具。
    
    2.可以大规模更新数据的应用软件。
    
    3.与现有应用软件相关的标准接口。
    

    输出:

    1.依据规范纠正的数据。
    

    9.实施控制

    监控和核实所进行的改进。通过标准化、归档和对改进进行持续监测,维护结果。
    

    目标:

    1.实施持续的监测和度量。
    
    2.监测和确认已实施的改进措施。
    
    3.确定包含数据质量控制的新解决方案。
    

    输入:

    1.步骤6-8中的输出。
    

    工具与技术:
    1.取决于所实施的控制措施。

    输出:

    1.所实施的控制措施。
    

    10.沟通行动和结果

    归档和沟通质量管理效果、所做的改进和改进的结果。其中沟通非常重要。
    

    目标:

    1.在项目期间,对结果和进展情况进行适当的沟通。
    

    输入:

    1.来自任何步骤的结果。
    

    工具和技术:

    1.沟通方案模版。
    
    2.RACI。
    
    3.其他沟通与表达技术。
    

    输出:
    1.沟通方案和时间表。

    2.表达和培训材料。
    
    3.根据时间表和沟通方案完成沟通。
    
    展开全文
  • 数据质量管理十步流程

    千次阅读 2016-12-30 17:21:18
     明确数据质量管理的重点、时机目标,来指导整个项目期间的所有工作。 目标:  1.明确信息环境-数据、流程、人员、组织以及与业务情况相关的技术。  2.按顺序排列并最终确定项目重点关注的业务问题。 输入...
  • 软件开发质量管理控制措施

    千次阅读 2012-05-11 14:54:22
    其中,技术层次方面又细化为对数据质量、编程质量、文档质量三个方面的管理控制。利用人工比对、程序比对、统计分析等手段来保证数据质量的完整性全面性等。通过检查源码的逻辑、属性、对象命名标准、语言代码布局...
  • 数据质量管理的一些思考

    千次阅读 2018-07-11 11:55:11
    当我们拿到数据开始进行一些初步探索的时候,发现导入平台的数据质量存在一定的问题:例如一些用于数据分析的关键字段的值为空、一些本应该有主从关系的数据对应不上、数据分类混乱等。这些问题直接影响到了对...
  • 数据质量管理

    千次阅读 2019-04-13 21:09:25
    大数据已经从由刚刚的只关注集群安装部署使用的基础层级,逐步演化关注性能,稳定性,监控及自动故障处理。正所谓饱暖思质量,平台业务稳定之后,开始以盈利为目的的商业化。在这过程...
  • 数据采集系统的抗干扰措施

    万次阅读 2019-07-06 11:43:43
    目录 1. 引言: 2.干扰的主要来源 3.系统抗干扰的硬件措施 ...随着计算机技术、电磁兼容技术、传感器技术信息技术的飞速发展普及,数据采集与处理系统也越来越得到了广泛的应用。在生产过程中,应用这一系...
  • 结合近几年莱钢7号、8号焦炉实际生产情况,尤其是由于不确定性因素打破正常生产秩序,导致结焦时间延长或缩短的相关数据,在对数据汇总分析的基础上,从结焦时间对焦炭质量影响、对焦炉能耗的影响以及对焦炉温度稳定性...
  • 十步法原则解决数据质量问题

    千次阅读 2019-08-21 14:06:38
    1.1 数据质量 数据的一组固有属性满足数据消费者要求的程度。 1)数据固有属性 真实性:即数据是客观世界的真实反映 及时性:即数据是随着变化及时更新的 相关性:即数据是数据消费者关注需要的 2)高质量数据...
  • 大数据环境下的数据质量管理策略

    千次阅读 2018-09-07 16:04:00
    信息时代,数据已经慢慢成为一种资产,...提出一种数据质量策略,从建立数据质量评价体系、落实质量信息的采集分析与监控、建立持续改进的工作机制完善元数据管理4个方面,多方位优化改进,最终形成一套完善...
  • 空气污染对生态环境人类健康危害巨大,通过对“两尘四气”(PM2.5、PM10、CO、NO2、SO2、O3)浓度的实时监测可以及时掌握空气质量,对污染源采取相应措施。虽然国家监测控制站点(国控点)对“两尘四气”有监测...
  • 数据治理系列5:浅谈数据质量管理

    万次阅读 多人点赞 2019-08-10 16:31:51
    本文原创地址:...本着对专业知识技术的敬畏以及对文章主题的聚焦,笔者认为文章的开篇是非常有必要先把概念或定义交待清楚的。 另外,写公号、写博客目的是对自己临...
  • 第二篇第三篇从动静分离热点数据两个维度,介绍了如何有针对性地对数据进行区分优化处理; 第四篇介绍了在保证实现基本业务功能的前提下,尽量减少过滤一些无效请求的思路。 这几篇文章既是在讲...
  • 大气污染PM2.5 影响因素

    千次阅读 2019-09-11 20:26:00
    从气象条件的改善减排措施两方面进行探讨分析, 并结合数值模式数据挖掘技术实现气象排放对大气贡献率的定量化研究 研究结果: 利用 WRF-CHEM 对霾污染频发的 12 月进行模拟发现,气象要素的改变导致 ...
  •  要有效地进行进度控制,必须对影响进度的因素进行分析,事先或及时采取必要的措施,尽量缩小计划进度与实际进度的偏差,实现对项目的主动控制。软件开发项目中影响进度的因素很多,如人为因素、技术因素、资金因素...
  • 数据质量6西格玛

    千次阅读 2010-01-19 01:02:00
    6σ管理法是一种统计评估法,核心是追求零缺陷生产,防范产品责任风险,降低成本,提高生产率市场占有率,提高顾客满意度忠诚度。6σ管理既着眼于产品、服务质量,又关注过程的改进。“σ”是希腊文的一个字母,...
  • 前言在企业经营到一定规模后,经营中涉及到的各类数据由于名称不一致,编码不统一,应用范围不同等客观存在的因素,对经营时业务沟通的流畅性造成一定的负面影响,即企业面临着建设主数据标准统一管理、分发、应用...
  • 数据中心不进行任何修改肯定是一件很有把握的事情。随着虚拟化成为新的翻新的企业系统中的永久的成分,...随着更多的企业完成了自己的测试和质量保证计划,这些企业正在把虚拟化技术应用到生产中,无论这种虚拟化
  • 消费者对认证农产品的支付意愿及其影响因素--基于广州市消费者行为的实证分析,余建斌,乔娟,质量认证作为保障农产品质量安全的重要措施逐渐受到社会各界的重视,消费者对认证农产品的支付意愿对农产品生产经营者...
  • 然后,将调查数据用于测试电子商店服务质量和电子商店客户忠诚度的模型,并评估它们之间的关系。 测试了六个确定基于性能的电子商店服务质量的有效性可靠性。 这些决定因素是“易于使用”。 “同情”,“商品”,...
  • 网页打开速度是影响用户体验的首要因素。 硬件因素包括:服务器端、客户端网速。服务器端主要包括:服务器的地 域,是否双线,处理能力等等;客户端的因素主要包括:用户的硬件配置、用户使用的浏览器、是否有...
  • 数据仓库基本知识

    万次阅读 多人点赞 2017-10-31 17:35:04
    数据仓库是什么 根据统计,每个企业的数据量每2~3年时间就会成倍增长,这些...于是,企业如何通过各种技术手段,并把数据转换为信息、知识避免各种无知状态瞎猜行为,已经成了提高其核心竞争力的主要瓶颈。 ...
  • 结合开发应用技术环境、安全保障措施以剖析包括平台层、数据采集层、管理支持层、决策分析层的系统架构,系统功能模块设计包涵煤炭检测作业流程、资源管理、样品管理、质量控制管理、质量体系管理等方面,并结合系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,730
精华内容 9,492
关键字:

影响数据质量的因素和措施