精华内容
下载资源
问答
  • 汇编语言中,DSBX有何区别?怎么搭配使用?(BX是通用寄存器)
    千次阅读
    2019-09-22 19:21:45

    首先注意:BX是一个通用寄存器,里面存放的不一定就是一个基地址,也可以放偏移量或者其他临时数据。
    通用寄存器:A/B/C/D X 4个,SP,BP,SI,DI 4个
    专用寄存器:SP,IP和FLAGS 3个16位寄存器。

    问:既然DS存放的就是数据段的基地址,为何BX还要存放基地址?
    答:DS是段寄存器 一般放的是数据段的段地址
    至于BX 是一个灵活的寄存器 可以用它来做许多事情 当然也可以用来当指针 楼主所谓数据段的基地址是这个段的起始地址 要说他是基地址也没有错 但是bx里放的是某个字节或字的地址用[bx]来访问。DS放段地址,BX是通用寄存器.

    疑问:SP到底是通用寄存器还是专用寄存器?
    答:好像都可以,Intel为什么把SP设计成通用寄存器,这样我也觉得有些奇怪。
    SP除了作栈顶指针外,你还可以用SP来完成加减乘除等算术和逻辑操作。
    当然这样做的前提是这些操作过程中不会用到堆栈。
    通常不会用到SP的通用功能。不过我倒是见到过,就是在一些加密用的壳里这样用,
    来达到反跟踪效果

    问:bx寄存器与ds段寄存器的区别. 为什么说,用BX做基地址的指令,默认采用ds段寄存器指向的数据段?

    答:ds与bx配合,es与dx配合,cx作为计数器。这既是cpu硬件设计使然,也是软件设计的标准用法,就如围棋中的定式,你必须这么用。bx是提供偏移地址。

    问:汇编语言中[bx],和(bx)的区别
    (bx)是仅仅指bx寄存器的内容,书写好看明了;
    [bx]是指偏移地址,指的是以寄存器BX的内容为偏移的路径大小,[bx]:也就是BX的内容为偏移地址,可以加上16d*ds,得到内存地址去内存中取数据。
    [bx]是指偏移地址,默认段地址为ds
    (bx)是描述语句(这样写是为了解释方便,指令当中可不能这样写)是指bx中的内容,

    部分整理自百度知道

    更多相关内容
  • 数据仓库数据湖之间有何区别

    千次阅读 2019-03-19 17:09:00
    另一方面是为了传统关系型数据库的二维表区别开来,于是就了数据立方体的称呼(见下图)。 OLAP的操作是以查询——也就是数据库的SELECT操作为主,但是查询可以很复杂,比如基于关系数据库的查询可以多表...

     

    数据仓库是一种具有正式架构的成熟的、安全的技术。它们存储经过全面处理的结构化数据,以便完成数据治理流程。数据仓库将数据组合为一种聚合、摘要形式,以在企业范围内使用,并在执行数据写入操作时写入元数据和模式定义。数据仓库通常拥有固定的配置;它们是高度结构化的,因此不太灵活和敏捷。数据仓库成本与在存储前处理所有数据相关,而且大容量存储的费用相对较高。

    相较而言,数据湖是较新的技术,拥有不断演变的架构。数据湖存储任何形式(包括结构化和非结构化)和任何格式(包括文本、音频、视频和图像)的原始数据。根据定义,数据湖不会接受数据治理,但专家们都认为良好的数据管理对预防数据湖转变为数据沼泽不可或缺。数据湖在数据读取期间创建模式。与数据仓库相比,数据湖缺乏结构性,而且更灵活;它们还提供了更高的敏捷性。在检索数据之前无需执行任何处理,而且数据湖特意使用了便宜的存储。

    尽管有这些优势,但数据湖在安全、治理和管理方面仍需要完善。但是,它还有一个重要优势,这也是一个富有吸引力的驱动因素。

    机器学习和深度学习都是驱动因素

    在采用数据湖的原因中,讨论最少但或许最有吸引力的是数据挖掘和分析中越来越多地开始采用机器学习和深度学习技术。传统搜索和分析方面的软件审核是一个成熟领域,但用于数据挖掘和分析的机器学习和深度学习技术的软件审核还处于起步阶段。

    语音转录、光学字符识别、图像和视频识别等等,现在经常使用机器学习或深度学习技术。数据科学家需要访问原始的非结构化数据来训练这些系统,以便执行系统验证,并确保审计跟踪。类似地,深度学习执行数据挖掘等任务来查找维度与时序数据之间的模式和关系。

    另一种深度学习应用是提取以前无法访问的、无法通过查询来检索的数据。这些数据称为暗数据,是本系列下一期的主题。在数据挖掘和分析应用中,机器学习和深度学习的出现是迁移到数据湖架构的一个非常有吸引力的理由。

    数据湖的优势

    数据湖有众多优势:

    • 轻松地收集和摄入数据:企业中的所有数据源都可以送入数据湖中。因此,数据湖成为了存储在企业内部服务器或云服务器中的结构化和非结构化数据的无缝访问点。通过数据分析工具可以轻松地获得整个无孤岛的数据集合。此外,数据湖可以用多种文件格式存储多种格式的数据,比如文本、音频、视频和图像。这种灵活性简化了旧有数据存储的集成。
    • 支持实时数据源:数据湖支持对实时和高速数据流执行 ETL 功能,这有助于将来自 IoT 设备的传感器数据与其他数据源一起融合到数据湖中。
    • 更快地准备数据:分析师和数据科学家不需要花时间直接访问多个来源,可以更轻松地搜索、查找和访问数据,这加速了数据准备和重用流程。数据湖还会跟踪和确认数据血统,这有助于确保数据值得信任,还会快速生成可用于数据驱动的决策的 BI。
    • 更好的可扩展性和敏捷性:数据湖可以利用分布式文件系统来存储数据,因此具有很高的扩展能力。开源技术的使用还降低了存储成本。数据湖的结构没那么严格,因此天生具有更高的灵活性,从而提高了敏捷性。数据科学家可以在数据湖内创建沙箱来开发和测试新的分析模型。
    • 具有人工智能的高级分析:访问原始数据,创建沙箱的能力,以及重新配置的灵活性,这些使得数据湖成为了一个快速开发和使用高级分析模型的强大平台。数据湖非常适合使用机器学习和深度学习来执行各种任务,比如数据挖掘和数据分析,以及提取非结构化数据。

    数据湖的演变

    与其说数据湖在演变,不如说是一种技术融合。数据仓库是从其前身(关系数据库)演化而来,迈出了革命性的一步,但对于数据湖和数据仓库,我们不能这么说。

    数据湖汇集了各种技术,包括数据仓库、实时和高速数据流技术、数据挖掘、深度学习、分布式存储和其他技术。但是,人们感觉数据湖在专业数据科学家或分析师中拥有有限的用户群。另一种常见的误解是,将数据湖概念与一种特定的支持技术(比如 Hadoop)联系起来。

    数据湖概念拥有比任何一种基础技术更大的潜力,而且还在不断演化,供应商也在不断在添加特性和功能。潜在的增长领域包括:

    • 架构标准化和互操作性
    • 数据治理、管理和综合处理
    • 整体数据安全性

    与大部分不断演化的技术一样,供应商之间的竞争和业务驱动因素扩大了应用边界。数据湖在诸多数据存储技术中获得广泛接受只是时间问题。

    数据湖的应用

    数据湖的一些特性使它们非常适合某些应用。本节将解释其中两种应用。

    医疗和生命科学

    数据湖可以帮助解决电子医疗记录 (EMR) 的互操作性问题。联邦任务的意图是,通过使用 EMR,让医生能够访问跨多个系统的患者医疗记录,并在各个医院之间轻松地交接患者护理。在实际中,许多记录(包括保险索赔和临床数据)要么无法互操作,要么具有机器不可读的数据格式。在检索前,数据湖会存储任何格式的记录。所以,患者记录可能也包含医生手写的笔记、医学图像等。随着医疗领域中越来越多地开始使用医学设备遥测和 IoT,数据湖还能够从实时数据流中提取和存储数据。

    银行和金融

    银行和金融业通常会处理多个数据源。它也会处理高速的交易数据(从股票市场到信用卡)和其他银行交易。银行和金融机构经常存储法律和其他文档,以满足合规性和审核需求。数据湖非常适合存储这些混合数据格式,并以数字方式存储旧有数据,以方便检索。数据湖充当着一个敏捷平台来摄入多个数据流,以供这个行业垂直领域中的大量分析工具进行使用。

    结束语

    只要正确地设计和实现,数据湖是存储大量的多格式数据而不需要孤岛的一种强大方法。它们减少了数据摄取和转换的时间和成本,从而使用户可以及时获得数据。它们还允许使用更低成本的分布式存储。数据湖在架构上还不成熟,而且各个供应商产品之间目前缺乏标准化。数据湖仍在不断演化和增添新的功能,以改善访问控制、安全性、数据管理、综合处理等特性。随着用于数据挖掘和分析的机器学习和深度学习技术的出现,需要引入一个平台,提供对原始数据的轻松访问,以便训练这些系统,从而实现系统验证,并确保审计跟踪。数据湖是这一需求的巧妙解决方案。深度学习还支持访问以前摄入到数据湖中的旧有数据,这些数据无法通过标准查询机制进行访问。这种所谓的“暗数据”是本系列第 3 部分介绍的主题。

     

    01

    数据仓库历史沿革

    1970年,关系数据库的研究原型System R 和INGRES开始出现,这两个系统的设计目标都是面向on-line transaction processing (OLTP)的应用。关系数据库的真正可用产品直到1980年才出现,分别是DB2 和INGRES。

    其他的数据库,包括Sybase, Oracle, 和Informix都遵从了相同的数据库基本模型。关系数据库的特点是按照行存储关系表,使用B树或衍生的树结构作为索引和基于代价的优化器,提供ACID的属性保证。

    到1990年,一个新的趋势开始出现:企业为了商业智能的目的,需要把多个操作数据库中数据收集到一个数据仓库中。尽管投资巨大且功能有限,投资数据仓库的企业还是获得了不错的投资回报率。

    从此,数据仓库开始支撑各大企业的商业决策过程。数据仓库的关键技术包括数据建模,ETL技术,OLAP技术和报表技术等。

    目前主要的数据仓库产品供应商包括Oracle、IBM、Microsoft、SAS、Teradata、Sybase、Business Objects(已被SAP收购)等。

    电信行业是最早采用数据仓库技术的行业之一。由于电信公司运行在一个快速变化和高速竞争的环境,拥有大量的客户基础,从而产生和存储海量的高质量数据。

    电信公司利用数据挖掘技术降低营销成本,识别欺诈,并更好地管理其电信网络。

    02

    数据仓库概念

    数据仓库之父Bill Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。

    这是一个偏向学术的定义,却非常准确的界定了数据仓库与其他数据库系统的本质区别。

    “A data warehouseis a subject-oriented, integrated, time-variant, and nonvolatile collection ofdata in support of management’s decision-making process.” —W. H. Inmon

    要理解数据仓库的概念,需要从与数据库的系统的对比来看。

    数据库是作为“所有处理的单一数据源”出现和定义的。

    数据库的出现有两个驱动因素,第一是70年代以前大量应用程序和主文件的分散存放导致一片混乱和大量冗余数据。第二是直接存取存储设备的出现使得按记录寻址成为可能。基于DBMS的在线事务处理为商业发展开辟全新的视野。

    数据库系统的设计目标是事务处理。数据库系统是为记录更新和事务处理而设计,数据的访问的特点是基于主键,大量原子,隔离的小事务,并发和可恢复是关键属性,最大事务吞吐量是关键指标,因此数据库的设计都反映了这些需求。

    数据仓库的设计目标是决策支持。历史的,摘要的,聚合的数据比原始的记录重要的多。查询负载主要集中在即席查询和包含连接,聚合等操作的复杂查询。

    相对于数据库系统来说,查询吞吐量和响应时间比事务处理吞吐量重要的多。

    数据仓库和数据库系统的区别,一言蔽之:OLAP和OLTP的区别。数据库支持是OLTP,数据仓库支持的是OLAP。

    1620

    对 OLTP 和OLAP 的区别还可以有一个维度,就是及时性需求。OLTP对事务的及时性需求较高,而OLAP 则不然。 ——曹洪伟

    数据仓库一般基于数据库实现,但是为部署和维护上是分离的。数据仓库可以是基于关系数据库实现的,这样的数据仓库被称为ROLAP。数据仓库也可以是基于多维数据结构实现的,这样的数据仓库被称为MOLAP。

    03

    数据仓库架构

    数据仓库是一种体系结构,而不是一种技术。数据仓库最为核心的内容分类两部分:

    1. 基于关系数据库的多维建模(RDBMS-based dimensional modeling)
    2. 基于数据立方体的OLAP查询(cube-based OLAP)

    1620

    数据仓库体系结构包含了从外部数据源或者数据库抽取数据的ETL工具。ETL还负责数据的转换,清洗,然后加载到数据仓库的存储中。一般来说,数据都会加载到存取速度较慢的存储中,以原始数据的方式保存下来。

    为了提高查询效率,原始数据会按主题分类,以聚合的方式存储到数据集市中,称之为聚合数据。

    参见下图,原始数据往往有多条聚合路径,时间维度是一个最基本的内置聚合路径,行政级别划分也是一种常见的聚合路径,产品属性也是常见的聚合路径。

    1620

    数据仓库体系结构中还包括前端的查询工具,报表工具和数据挖掘工具,被称为front-end。

    最后也是最重要的是,数据仓库体系结构中都会包含一个构建数据仓库的元数据仓库。

    元数据仓库包括数据库schema,view,用于ETL的metadata,用于数据聚合的metadata,用于报表呈现的metadata和SQL模板等。数据仓库往往采用meta data driven的架构设计,这个元数据仓库就至关重要。

    上文中提到的维度的概念。维度(dimension)是观察事物的角度,也是数据库事实表中用来描述数据分类的层次结构。维度在数据中就是表示为列,在SQL中用作过滤和分组。

    像上图这样对数据进行多个维度的抽象并借助于数据库的select,group by等基本操作形成的OLAP多维数据操作(roll up,drill down,slice and dice,pivot)被称为多维数据模型。

    为了方便复杂分析和可视化呈现,数据仓库中数据往往以多维模型建模。每一个维度被称为一个层级,三个维度构成一个数据立方体。维度也通常用来过滤和分组,所以数据立方体称之为group by的并。

    OLAP也被称为在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。

    04

    数据立方体

    数据立方体只是多维模型的一个形象的说法。立方体其本身只有三维,但多维模型不仅限于三维模型,可以组合更多的维度。

    但一方面是出于更方便地解释和描述,同时也是给思维成像和想象的空间;另一方面是为了与传统关系型数据库的二维表区别开来,于是就有了数据立方体的称呼(见下图)。

    1620

    OLAP的操作是以查询——也就是数据库的SELECT操作为主,但是查询可以很复杂,比如基于关系数据库的查询可以多表关联,可以使用COUNT、SUM、AVG等聚合函数。

    OLAP的多维分析操作包括:钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(Pivot),逐一解释如下:

    Roll up (drill-up): summarize data by climbing up hierarchy or by dimension reduction Drill down (roll down): reverse of roll-up,from higher level summary to lower level summary or detailed data, or introducing new dimensions Slice and dice: project and select Pivot (rotate): reorient the cube, visualization, 3D to series of 2D planes

    看了上图中数据立方体的各种操作,有人觉得还是很抽象。下面给一个SQL的例子,说明数据立方体的具体操作。

    select//公式必须配合group by使用 tmp.time, tmp.id1, tmp.id2, SUM(counter1) counter1, SUM(counter2) counter2 from//双层SQL,实现聚合路径 ( select//trunc实现时间维度的变化 trunc( p.time, 'min' ) time, "country".country_id id1, "city".city_id id2, SUM(p.counter1) counter1, SUM(p.counter2) counter2 from table "country", table "city", table p where//选择计算的城市 "city".city_id in ( '北京','上海','广州' ) and time >= to_date('2016/01/01 00:00:00', 'yyyy/mm/dd hh24:mi:ss') and time < to_date('2017/01/01 00:00:00', 'yyyy/mm/dd hh24:mi:ss') group by//改变行政维度 trunc( p.period_start_time, 'mi' ), "country".country_id, "city".city_id ) tmp group by//行政维度可以不变 tmp.time, tmp.id1, tmp.id2

    OLAP的优势是基于数据仓库面向主题、集成的、保留历史及不可变更的数据存储,以及多维模型多视角多层次的数据组织形式,如果脱离的这两点,OLAP将不复存在,也就没有优势可言。

    基于多维模型的数据组织让数据的展示更加直观,它就像是我们平常看待各种事物的方式,可以从多个角度多个层面去发现事物的不同特性,而OLAP正是将这种寻常的思维模型应用到了数据分析上。

    05

    数据库建模

    如果把多维数据模型映射到关系数据库和SQL查询上(ROLAP),数据库该如何设计呢?

    大多数数据仓库都采用“星型模型”来表示多维数据模型。在星型模型中,只有一个事实表,并且每一个维度有一个单独的表。

    事实表中的每一个元组都是一个外键指向维度表的主键。每一个维度表的列是组成这个维度的所有属性。如下图所示。

    1620

    另外一个常见的数据库设计方法是“雪花模型”。雪花模型通过定义单独的维度表,改进了星型模型中没有明确提供维度层级的问题。是谓维度表的正则化,如下图。但星型模型更适合浏览维度层级。

    1620

    除了事实表和维度表,数据仓库还需要创建pre-aggregation 表用于存储挑选的摘要数据。

    06

    大数据架构

    1010data公司高级软件工程师ADAM JACOBS博士在ACM通讯发表的《大数据病理学》指出大数据的病理在于分析而不在于存储——我们期望从成年累月积累的数据中在几分钟或者几秒内获得分析结果!

    其实作者指出了关系数据库的在大数据时代的病理,如下图所示一个数据仓库分析操作的SQL在数据量超过100万条记录时的性能表现。

    The pathologies of big data are primarily those of analysis.

    1620

    因此,数据仓库被认为是对数据库查询性能问题的一个解决方案。在90年代,人们已经都面临一个数据爆炸的挑战,为了解决那个时代的“大数据”问题,数据仓库应运而生。

    在1980s早期,大数据是指数据集超出了磁带机的处理能力。 在1990s,大数据是指数据集超出了Microsoft Excel或者桌面PC的处理能力。 今天,大数据是指数据集超出了关系数据库的处理能力。

    站在大数据时代回望数据架构的发展历史,然后从技术的角度思考大数据的定义:

    当前流行的技术处理不了的数据,都是大数据。

    数据仓库的本质是把数据变小,一般有两个方法:

    第一是通过抽取,转换,加载,清洗。

    第二是通过pre-aggregation获得数据的一份单独拷贝。因此数据仓库被定义为:

    为了方便查询分析,把数据从关系数据库中单独拷贝一份出来,然后通过ETL或者ELT转换。

    对于大数据,仅仅简单构建一个数据仓库是不够的。数据应该如何结构化才能更便于分析?数据库和分析工具应该如何设计才能更高效的处理大数据?

    意识到大数据固有的时间属性和空间属性,是我们理解关系数据库处理大数据时存在性能问题的重要前提。

    如果说数据是我对世界的观察记录的话,大数据是我们对世界在时间和/或空间维度的重复观察。这就是大数据的时空特点,也是数据仓库多维模型的构建原理。

    当今的主流数据库模型是关系数据库,并且该模型显式地忽略表中的行的顺序。这将不可避免导致应用以非顺序的方式查询数据。

    在这种情况下,传统的数据架构可以通过引入缓存的方式缓解性能问题,而大数据则会大大放大了次优访问模式对性能的影响。

    如下图所示随机访问和顺序访问的差别。

    1620

    因此我们要引入,也是我们要推导的结论:逆正则化(逆规范化)和顺序存储,不可更改数据集(append only,immutable data set)。顺着存储栈往下走,直到数据存储格式。

    是时候放弃关系数据库了。

    简单解释一下逆正则化(逆规范化)。经典关系数据库介绍的所有范式指导思想都是正则化,减少重复数据,如果重复,则单独创建一个表,使用外键关联,目的是节省存储空间(那个时候存储很昂贵)。

    逆正则化则是允许列之间的重复。如下图所示。

    1620

    我有一个看法,NoSQL的键值存储即是用极简的非结构化来实现结构化存储的逆规范化。

    键值存储是极简的结构化,也是极简的非结构化。

    关于顺序存储,不可更改数据集,可以参考Pat Helland《Immutability Changes Everything》,和我上面的介绍是一致的。

    关于传统关系数据库的讨论还有数据库知名专家,2015年图灵奖得主Michael Stonebraker撰写的《One Size Fits All》,分别从数据仓库和流处理两个方面探讨了数据库25年来一招不变的灵丹妙药已经不再适合现在的业务发展。

    文章的中心思想和Pat Helland提出lambda架构也有异曲同工之妙。

    1620

    speed layer (i) compensates for the high latency of updates to the serving layer (ii) deals with recent data only serving layer (i) indexes the batch views (ii) Can be queried in low-latency, ad-hoc way batch layer (i) managing the master dataset (an immutable, append-only set of raw data), (ii) pre-compute the batch views

    Lambda架构统一了传统数据仓库时代的半实时在线查询,刚刚兴起的实时流处理(Online ),和批处理数据分析(Offline),给数据架构的设计人员提供了一个全面的参考。

    再结合半结构化,结构化数据存储,SQL and No-SQL混合,我们可以得到下面一个典型的数据架构:

    1620

    上面的讨论是架构的微观考虑,让我们回到大数据架构的宏观指导上来。

    目前业界对大数据的一个共识的定义是5个V。如下图所示。

    1620

    从技术的角度需要专注于其中的三个V,通过阅读大量文献,我得到下面一个范型:

    1. 借力开源软件处理数据多样性挑战
    2. 使用分布式技术解决数据容量问题
    3. 使用实时流处理技术解决数据速度问题

    1620

    传统的OLAP 而言,实时性需求不明显,实时分析的强需求是导致大数据技术的一个原因。 ——曹洪伟

    基于此,我个人推荐的大数据架构是BDAS, the Berkeley Data Analytics Stack。这个架构中不仅包含上面提到的三个思考维度,还提供了整个大数据架构blueprint。内容很多,使用时各个击破,在此不赘述。

    1620

    谈了那么多,总结一下大数据架构的几个要点:

    • 分布式计算
    • 实时流处理
    • Online和Offline
    • SQL和No-SQL:混合架构也是演进路径之一
    • 逆正则化(逆规范化)和顺序存储,不可更改数据集

    07

    数据湖架构

    Pentaho的CTO James Dixon 在2011年提出了“Data Lake”的概念。在面对大数据挑战时,他声称:不要想着数据的“仓库”概念,想想数据 的“湖”概念。数据“仓库”概念和数据湖概念的重大区别是:数据仓库中数据在进入仓库之前需要是事先归类,以便于未来的分析。这在OLAP时代很常见,但是对于离线分析却没有任何意义,不如把大量的原始数据线保存下来,而现在廉价的存储提供了这个可能。

    Nearly unlimited potential for operational insight and data discovery. As data volumes, data variety, and metadata richness grow, so does the benefit.

    形象的来看,如下图所示,数据湖架构保证了多个数据源的集成,并且不限制schema,保证了数据的精确度。数据湖可以满足实时分析的需要,同时也可以作为数据仓库满足批处理数据挖掘的需要。数据湖还为数据科学家从数据中发现更多的灵感提供了可能。

    1620

    和数据仓库对比来看,数据仓库是高度结构化的架构,数据在转换之前是无法加载到数据仓库的,用户可以直接获得分析数据。而在数据湖中,数据直接加载到数据湖中,然后根据分析的需要再转换数据。

    1620

    下面我整理了数据仓库和数据湖在多个维度的详细对比。

    1620

    总结起来,数据湖架构有一下几个显著的特点:

    1. 数据存储:大容量低成本
    2. 数据保真度:数据湖以原始的格式保存数据
    3. 数据使用:数据湖中的数据可以方便的被使用
    4. 延迟绑定:数据湖提供灵活的,面向任务的数据绑定,不需要提前定义数据模型

    1620

    当然,对于数据湖架构的批评也是不绝于耳。有人批评说,汇集各种杂乱的数据,应该就是数据沼泽。Martin Fowler也对数据湖中数据的安全性和私密性提出了质疑。

    08

    电信运营大数据特点

    电信运营大数据对应于TMN/FCAPS模型中的电信设备管理数据。如下图所示。

     

    • Fault Management
    • Configuration Management
    • Accounting Management
    • Performance Management
    • Security Management

    1620

    电信运营数据的特点是数据多样化要求不高,大多数数据是结构化数据,数据容量要求不是特别高,数据的实时处理要求最高。

    1620

    电信运行数据架构强调演进。步步为营,向前兼容,不是一蹴而就的。

    1620

    09

    演进路径实践

    现在的架构是一个典型的数据仓库架构。如下图所示。现在的架构设计有以下几个要点:

    • ROLAP:基于Oracle数据库,但并没有用Oracle的数据仓库,单独构建数据仓库。
    • Meta Data Driven的架构设计:Meta Data覆盖整个数据pipe。当新的数据需要集成,只需要编辑新的Meta Data,系统不需要做任何改变。
    • Schema设计:主要有两类表:原始数据表和聚合表; 每类表都有三层结构:表,用作聚合的视图,用作报表的视图。不同的应用使用不同的视图来操作数据。当原始的数据表结构变化时,可以根据需要更改不同层次的视图。
    • Schema的演化。这是一个比较大的主题,关系数据是schema on write的,任何列的增加都需要alter表结构,这会带来客户系统很长时间的downtime。因此原始表采用1000列的设计(Oracle支持的最大列数),并且列只增加,不减少,避免了数据库schema的变化,降低不同release之间migration的成本。
    • 数据存储:定期清除原始数据,只保留聚合数据。

    1620

    为什么现在的架构需要演进呢?

    首先当前架构面临扩展性的挑战。数据库扩展性主要依赖于Oracle RAC解决方案,Oracle RAC不是一个线性的扩展方案,同时也增加了很多管理和维护成本。并且由于硬件的限制,垂直性扩展不是一个长期的解决方案。

    其次,当前的存储成本太昂贵,因此去IOE成为目标。

    第三,实时处理需求也是驱动架构演进的重要因素。

    然后,架构变成了这样子:

    1620

    传统 SQL 基于云平台重新定义为 NewSQL,那么 Data Warehouse 也可以重新定义 New Data Warehouse。 ——曹洪伟

    这样的架构是不是New Data Warehouse,我不知道,可能是。在这样的架构下,最大的变化就是更换Oracle数据为HDFS,并使用SQL on Hadoop(比如Hive SQL,Spark SQL)等保持SQL接口,维持了前端分析引擎的不变。Meta Data部分依然保持了原来的数据建模,并没有改变数据集成方式。这样的架构继承了经典的仓库架构,提高系统扩展性,在满足业务需求的同时,最大化的保护已有投资。

    在架构演进这个过程中,有一些lesson learned:

    • SQL on Hadoop是必须的。客户希望保持SQL接口的连续性。
    • 混合数据仓库架构:针对不同的业务采用不同存储方案(Oracle 和 HDFS),数据量大的采用HDFS存储,数据量不够大的(不存在扩展性挑战的)可以依然使用关系型数据库。
    • 逆规范化对性能的影响重大。通过对逆规范设计,可以达到关系数据库的查询性能。但是对于逆规范化是否存在其他影响,还需要研究。
    • 相对于sequence files 和RC files,ORC文件格式的性能是最好的。
    • 实时pipe使用storm和Kafka实现。

    就像 NewSQL 那样,可以有 New Data Warehouse 的。就是 Data Warehouse与云计算的融合,即数据仓库的存储层在云平台,采用分布式系统。 对应用侧而言, 原有的方式依旧有效,这样就不会资产浪费,而是有效的继承, 也是通往数据湖的一个较稳妥的步骤。 ——曹洪伟

    老曹这么一说,豁然开朗。我们在谈数据仓库架构向大数据架构演进的时候,其实我们在谈New Data Warehouse架构。

    就像当初数据仓库的出现是对数据库系统存在的限制进行补充一样,目前的大数据平台是对数据仓库系统存在的问题进行补充。

    他们的技术思路,技术架构,用户需求某种程度上是一致的,或者说核心的思想是一致的。不一致的地方仅仅是为了满足性能而做的技术方案的调整。

    首先看数据集成架构。如下图,基于Hadoop的数据集成架构和基于关系数据库的传统数据集成架构是一致的。

    不同地方在于由于数据量的增大,左边的架构采用具有逆正则化(逆规范化)和顺序存储,不可更改数据集等特点的Hadoop平台存储数据。

    1620

    其次看数据分析方法。虽然说基于Hadoop的数据集成架构采用了Hadoop数据存储平台(内置MapRdecue数据处理引擎)。

    其数据操作,数据分析方法在思想上是一致的——从大量的数据集中获得由价值的信息——如下图所示,数据仓库的操作语句(group-by-aggregation)与MapRdecue的操作函数对应关系。

    1620

    所以MapRdecue的核心思想就是在数据分片的基础上把数据仓库中的group-by-aggregation操作转换成分布式执行,MapRdecue和传统数据仓库的思想是一致的。

    The Map-Reduce programming model provides a good abstraction of group-by-aggregation operations over a cluster of machines. The programmer provides a map function that performs grouping and a reduce function that performs aggregation. The underlying run-time system achieves parallelism by partitioning the data and processing different partitions concurrently using multiple machines.

    所谓创新,继承和发展,大概如此吧。怪不得Michael Stonebraker撰文《MapReduce: A major step backwards》指出MapReduce是一个巨大倒退,并引发了他和DeWitt之间的大论战。

    Google在2010年还为MapRdecue申请了专利,但我认为MapReduce不算是重大基础性创新,本质上还是云时代的数据仓库技术(New Data Warehouse)。但其作为Google三架马车的风头让人们大大忽略了传统数据仓库的技术思想,误导了很多年轻学子的技术崇拜。

    所以本文尝试提供一个技术脉络:Data Warehouse->New Data Warehouse->Data Lake,阐述大数据技术背后的技术架构演进,抛砖引玉,欢迎批评指正。

    A giant step backward in the programming paradigm for large-scale data intensive applications. Not novel at all -- it represents a specific implementation of well known techniques developed nearly 25 years ago. To draw an analogy to SQL, map is like the group-by clause of an aggregate query. Reduce is analogous to the aggregate function (e.g., average) that is computed over all the rows with the same group-by attribute.

    在New Data Warehouse架构的基础上,如何向Data Lake演进?对电信行业来说,NFV和SDN正在推动电信网络设备控制平面和数据平面的分离,电信设备数据会走向数据湖架构。

    电信设备数据融合,运营数据融合,最终会走向一个大融合。总结起来,电信大数据对于数据湖架构的拥抱,来自于以下四个方面的驱动。我用四个推导公式,如下:

    • 5G->BigData (Semi-Structured and Unstructured) -> Modern Data Architecture for Enterprise -> Data Lake Storage Architecture -> Data Lake
    • Cloud -> Network Function Cloudification -> Network Function Virtualization -> stateless VNF -> Distributed Sharing Storage -> Data Lake
    • Distributed analytics -> Data Lake
    • Hierarchy architecture -> Flat operations architecture -> Data Lake

    我们尝试过在数据加载过程中自学习的产生数据库schema,证明这个思路是可行的。基于结构化的数据,这个过程非常容易。但对于非结构化的数据,还是存在很大的挑战。

     

    转载于:https://my.oschina.net/hblt147/blog/3024677

    展开全文
  • • 最终交付的内容无法预测,预期和实际完成的内容经常会很大差异; • 敏捷需要高水平的协作以及开发人员和用户之间的定期沟通。 业务和IT人员在沟通前需要做大量的准备工作,但很多情况下业务的沟通时间无法...

          最近和朋友谈起敏捷开发Agile Model瀑布开发Waterfall Model模式,很多人认为敏捷开发是未来的项目实施的趋势,瀑布实施太老土已经过时了。另外确实一些跨国企业如索尼,联想也在使用敏捷的方式实施一些项目。但实际上我们看到绝大多数公司还是依然在采用瀑布的方式实施项目。我之前参与过敏捷开发的项目,但当时比较“年轻”,认识不是很深刻,于是最近又补习了下和大家一起分享下我对敏捷和瀑布的感悟。

           简单介绍敏捷开发和瀑布开发

           瀑布模型:瀑布模型是一种项目分解为有限的阶段来开发软件的方法。只有在审查并验证其前一阶段时,开发才会应进入下一阶段。在瀑布模型中,阶段不重叠。下图演示了瀑布模型:

           对于瀑布的开发模型来看,似乎依然具备很可靠的工作逻辑,一个工程或项目分为多个阶段,每一个阶段都投入相应的资源,来完成本阶段的工作。每一个阶段到下一个阶段,都有明确的输入输出产物,不同的阶段根据自己所需的输入,进行工作活动之后,产生自己阶段的产出,投入到下一个阶段的工作中。如果不放心的话,每一个阶段还可以增加一个审批环节,让每一个环节都可以经过可靠的审批之后,再投入到下一个环节当中。

    Salesforce crm开发2.jpg

           SDLC瀑布模型一般用于这些情况:要求稳定且不经常更改;应用程序很小;没有不明白或不明确的要求;环境稳定;使用的工具和技术是稳定的;不是动态的;资源可用。

           敏捷模型:维基百科将敏捷模型定义为“一组基于迭代和增量开发的软件开发方法,其中需求和解决方案通过自组织,跨职能团队之间的协作发展。”该模型有自己的原则,往往会使流程置于backset。

    Salesforce crm开发.jpg

          
           在敏捷看来,很多情况下面,我们都无法去了解到全部的内容,或者即使是了解到,我们也不能保证这些内容是不会变化的。所以先根据主路径,完成主要功能后,我们再通过不断地迭代,去完善我们的工作,这样当我们产生变化的时候,我们推翻的工作量也是少量的,可以很快的去完成新的需求变更。通过这样的不断地变更、重构,我们可以获得一个相对客户满意的产品。

           很多支持敏捷的同学会说瀑布缺乏与业务的沟通和迭代次数,所以如果在项目的后期才发现要更改需求的话,则项目可能会失败或需要重新启动。这张图好像也解释了瀑布开发经常所面临的困境。

    Salesforce crm开发3.jpg

           在高举效率与拥抱变化的大旗之下,似乎敏捷模式,就是最好的开发模式。与之相比的是瀑布模式,在这样的呼喊之中,显得有些无法跟得上步伐,体现的是陈旧、死板的。

           “瀑布”对“敏捷”的驳斥

           敏捷本身不是项目管理框架,也不是“方法论”。它是一套与产品开发相关的原则和价值,特别是互联网产品经常会采用敏捷的方法来进行开发。但是,有一些基于敏捷原则的方法,这些方法是产品开发方法,而不是项目管理框架。

           说到需求变更,瀑布也可以走需求变更,提变更申请,按照环节一步一步走,去规划工作量。虽然比敏捷是要慢一些,但是我整个流程是可靠的!为什么就说瀑布是死板的,不符合时代的呢?

           似乎瀑布的做法也没有错误,我们何不按照这样的步骤,来完成我们的工作呢?这样的过程听起来是如此的可靠。看,我有明确的阶段;看,我有明确的审批;看,我有明确的变更流程。以瀑布模式进行开发的项目有这么多,已经证明了这是一个有效的实施方法,难道不是么?

           另外被敏捷所诟病的瀑布项目经常失败通常是发生了非常严重的错误情况下才会产生。实际上只有在对项目的控制很差的情况下才会发生这种情况。瀑布型项目没有迭代和用户的多次反馈也是不正确的 - 很多项目可以通过产品原型图的方式和业务部门确认操作的流程,只是很多项目中并没有使用这种方法。

           焦点碰撞

          敏捷模式,两周一个迭代,每个迭代都能进行一定功能模块的交付,让用户更早的看到交付物,虽然只有部分,也可以让用户来提出自己的看法,产生变更的时候,开发人员也可以在下个迭代中进行修改,让用户进行再次的确认。

          从这样看来,两者的碰撞就是在交付的及时性上与面对变更的成本上,所看到有极大的变化。瀑布在交付阶段比较靠后,交付的模块比较完整,在面对变更的时候,变更影响范围就比较大,变更的成本就极大。问题发现的阶段越靠后,解决问题所需要付出的成本就更高。这样,就体现出来了敏捷对瀑布在这样的情景下面的优势。

          时间和成本,看起来就是敏捷和瀑布在选择时主要考虑的两个方面。未来能更好的指导未来的选择,下面还列出了更详细的敏捷和瀑布的优劣势。

          I 敏捷开发的优势:
           • 开发的阶段性成果会在开发过程中尽早的进行审查,项目的风险会降低;
           • 适用于需求不明确情况,因为需求不明确,所以需要在不断迭代的过程中来逐步理清需求。
           • 灵活性较高,几乎可以在任何时间进行需求变更;
           • 敏捷鼓励开发人员与业务用户之间进行多频次的沟通,业务用户的不合理需求以及开发人员的错误理解都会在这些频繁的沟通中进行不断审查和更新,
           • 敏捷的协作通常要高得多,通常能开发出更高质量的产品;
           • 适用于快速变化的项目,特别是面向前端业务人员的CRM系统项目更容易根据业务的变化而变化。

           I 敏捷开发的劣势:
           • 敏捷的概念接受度还不算太高,初次尝试可能不会非常成功;
            • 最终交付的内容无法预测,预期和实际完成的内容经常会有很大差异;
           • 敏捷需要高水平的协作以及开发人员和用户之间的定期沟通。 业务和IT人员在沟通前需要做大量的准备工作,但很多情况下业务的沟通时间无法保证;
            • 当存在乙方供应商的情况,敏捷会面临更大的挑战性。 客户通常希望尽早了解他们的项目投入。 预估项目时间和成本难度较高;
            • 在敏捷项目中,最大的问题可能是业务部门永远不希望有最终的截止时间。

          I 瀑布开发的优势:
            • 在管理良好的项目中,瀑布可以在早期提供交付的信心;
            • 项目团队成员不需要在同一地点频繁沟通;
            • 在需要大量的设计或分析的情况下瀑布是一种更合适的方法;
            • 如果在基本产品开发之外存在许多接口和依赖关系,瀑布式项目会使用工具来建模和管理这些接口和依赖关系。

           I 瀑布开发的劣势:
            • 许多企业和业务人员确实不容易在前期定义清楚需求,早期计划中所依据的假设需求可能存在很大风险;
            • 沟通的风险要高得多 - 特别是很多项目都是前期单向的沟通,后期项目和业务人员的预期差别很大;
            • 瀑布项目的风险一般都很高,因为基于无效假设基础上的需求可能会让项目无限度扩大。 所以你会看到很多瀑布项目都出现成本超出预算或延迟的情况。

           结论:

           敏捷和瀑布的实施方法差别还是很大的,瀑布几乎可以应用于任何类型的项目,尤其是大型的项目。

           敏捷方法今年来越来越受欢迎,尤其是当前SaaS软件当道,特别像Salesforce crm系统这样自带开发平台的SaaS产品可以非常容易的搭建初始原型并进行快速迭代,所以我们才会看到有越来越多的企业采用敏捷的方式来进行项目实施。总的来说敏捷并不能完全替代瀑布,它只是给了我们另外一种好的选择。

           如需了解更多,欢迎访问怡海软件官网 http://www.frensworkz.com/

     

    转载于:https://my.oschina.net/frensworkz/blog/3063878

    展开全文
  • 尤其注意的是表中不能大字段(blob,clob,long),如果,会提示不能导出(提示如下: table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead) 3.pde...

    关于Oracle数据导入导出不同于像MySQL那么简单,初学者也容易犯困,搞得模糊不清。本文就详细介绍Oracle导入导出,帮助大家理清思路。从入手工具可分为三种方式,一种是传统的DOS窗口,输入执行的SQL语句,另一种也是目前用的最广泛的可视化窗体操作,如时下的PL/SQL等,还有一种是使用Oracle的bin目录imp.exe工具进行操作。

    为了进一步理解Oracle文件原理。这里我按照Oracle文件分类的的方式分为三类,dmp文件、sql文件以及pde文件。下面详细介绍:

    1.dmp文件方式

    描述:dmp文件是二进制的,可以跨平台,并且包含权限,支持大字段数据,是用的最广泛的一种。

    导出语法:exp 用户名/密码@监听器路径/数据库实例名称 file=e:数据库文件.dmp full=y ignore=y ;其中full = y ,表示整个数据库操作; ignore=y,忽略错误,继续操作;
    重点内容
    导出举例:exp jojo/jojo@localhost/my_database file=e:my_database.dmp full=y ignore=y

    导入语法:imp 用户名/密码@监听器路径/数据库实例名称 file=e:数据库文件.dmp full=y ignore=y ;

    导入举例:imp jojo/jojo@localhost/my_database file=e:my_database.dmp full=y ignore=y

    2.sql文件方式

    SQL文件可用文本编辑器查看,有利于可读性,但效率不如dmp文件,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下: table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead)

    3.pde文件

    第三种是导出为pde格式,pde格式是PL/SQL 自带的文件格式,且且适用于PL/SQL工具,编辑器无法查看,一般不常用。

    展开全文
  • 图层文件 (.lyr) 是存储源数据集路径和其他图层属性(包括符号系统)的文件。 shapefile 相比,图层文件只是对实际数据(例如 shapefile 和要素类等)的链接/引用。 它并不是实际数据,因为它并不存储数据的...
  • 博主最近写项目时,碰到很多<a href="URL">,<form action="URL">,<jsp:include page="URL"/>...那么对URL来说,我们都知道相对路径和绝对路径,这个博主不打算解释,因为实际上我们...
  • 一、前言 了解了管理或者维护 Git 仓库、实现代码控制所需的大多数日常命令和工作流程,尝试跟了踪和提交文件的基本操作,并且掌握了暂存区和轻量级地分支及...Git之深入解析Git的安装流程初次运行Git前的环境配置;
  • 前端优化--关键渲染路径

    千次阅读 2019-08-04 15:02:06
    最近自己尝试翻译了几篇外文的技术文章,发现了一些经典文章内容已经过时,如 「How JavaScript works: inside the V8 engine + 5 tips on how to write optimized code」;再者,看到了国内某些知名周刊转载了一些...
  • exe在启动中,两种启动方式:一种自己手动双击启动,一种是通过其他程序调用启动,这时这两种方式如果用QDir::currentPath获取路径的话就可能会导致出现问题,下面说下情况:      &...
  • Linux系统Windows系统目录结构差异

    千次阅读 2021-05-10 08:00:01
    LinuxWindows虽然都属于操作系统的范畴,但是两者存在很大的差异。大的不说,就连两者的目录结构都存在很大的不同。而这些差异就成为了从Windows系统转型到Linux环境的主要障碍。笔者总结了两个操作系统在目录结构...
  • 学习目标: Linux和Windows系统目录区别 一、文件访问原理区别 在Windows系统中,一切东西...但是Windows不同, Linux 系统中的一切都是存放在唯一的虚拟文件系统中的,这个虚拟文件系统是树状的结构以一个根目录开始
  • Django项目开发中我们经常需要在视图中获取用户当前请求url的地址,然后进行跳转或判断操作,比如是否在url黑白名单里。Django提供了多种获取请求路径的实现方式,比如request...
  • 文件系统就是输入路径 然后返回文件内容 如果我们需要查找某个文件里面的某个值 我们就要打开文件进行扫描。 文件系统优点:能提供一些简单有效的读写文件操作 文件系统缺点:实际查询中可能对文件内容有一些更加...
  • 在上一篇中,我们通过分析,顺利完成了“三角形最小路径和”的动态规划题解。在本节中,我们继续看一道相似题型,以求能完全掌握这种“路径和”的问题。话不多说,先看题目: 01、题目分析 第64题:最小路径和 ...
  • 怎么查看CUDA版本?Conda命令安装的CUDA和NVIDIA官网下载的安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别
  • 作者:卫夕全文共 6713 字 11 图,阅读需要 15 分钟———— / BEGIN / ————短视频的能量是长视频的9倍?很多人看到这个结论立马就开始激动了:9...这就要开始本文的主题了——从内容生产、内容消费、内容分发、内
  • python程序的两种运行方式是什么

    千次阅读 2020-12-28 19:56:03
    python程序的两种运行方式是什么第一种方式:REPL所谓REPL即read、eva、print、loop(读取、计算、打印、循环),实现REPL运行方式以下两种:1、IDLE( 集成开发环境或集成开发和学习环境)是Python的集成开发环境推荐...
  • Linux常用默认文件及默认路径

    千次阅读 2019-06-18 10:22:21
    /dev 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,访问一个文件或一个目录没有区别。例如在系统中键入"cd /dev/cdrom",就可以看到光驱中的文件;...
  • git中sshhttps究竟有何不同

    万次阅读 2017-05-12 15:38:38
    区别1.clone项目:使用ssh方式时,首先你必须是该项目的管理者或拥有者,并且需要配置个人的ssh key。下面会谈到如何生成并设置你的ssh key。而对于使用https方式来讲,就没有这些要求。2.push:在使用ssh方式时,是不...
  • LoadLibrary查找路径及相关问题解决

    千次阅读 2017-02-16 16:17:49
     讨论不正常的情况:如果Dll1Dll2关系,即Dll1不是独立的,它依赖自定义的Dll2, 则我们LoadLibrary(Dll1的绝对路径)时候就会出现上面的情况。      为什么呢?      按理说,Dll1的绝对路径...
  • 两个类的构造函数的形式和参数都是相同的,参数为File对象或者表示路径的String,它们到底有何区别呢? FileInputStream:以字节流方式读取; FileReader:把文件转换为字符流读入; InputStream提供的是字节流的...
  • 虚拟DOM和实际的DOM有何不同?

    千次阅读 2019-10-27 09:00:00
    理解了这些会让你对目前的前端框架一个更加底层的认识,这也助于你更好地理解这些前端框架。 1. DOM 的缺陷 JavaScript 操纵 DOM 是会影响到整个渲染流水线的,另外,DOM 还提供了一组 JavaScript 接口....
  • PHP中引入文件的四种方式及区别

    千次阅读 2019-05-09 17:13:32
     4个文件加载语句:include,require,include_once,require_once。 require函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。 ...
  • xpathbs4

    千次阅读 2020-02-27 16:51:49
    xpathbs4 两种解析HTML的方法,xpathbs4。...全称 XML Path Language,即 XML 路径语言,可用于 XML 文档中查找信息。 常用规则 表达式 描述 nodename 选取此节点的所有子节点 / 从当前节点选区直接...
  • 想象你一大堆的服务器,交换机,存储设备,放在你的机房里面,你最想做的事情就是把这些东西统一的管理起来,最好能达到当别人向你请求分配资源的时候(例如1核1G内存,10G硬盘,1M带宽的机器),能够达到想什么...
  • IP协议详解及IPv4IPv6协议的区别

    千次阅读 2020-08-10 16:32:34
    头部长度可由20~60个字节组成,该部分包含有与路由选择和传输有关的重要信息。头部的字段含义如下: 1.版本(4位):版本占了4位,最大值为15,是协议版本号的定义,IPv4的话版本号就是4,IPv6的话版本号就是6。 2....
  • 1、下载安装 百度搜索nodejs,进入nodejs中文网根据自己电脑系统及位数选择,我这里选择windows64位.msi格式安装包.msi和.zip格式区别:.msi是Windows installer开发出来的程序安装文件,它可以让你安装,修改,卸载...
  • ip地址、域名、DNS、URL的区别与联系

    千次阅读 2019-08-23 14:14:08
    所以,即使仅两台机器,不论用种技术使其彼此通信,也叫互联网。 3、端口:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。该URL省略了端口,即 i.cnblogs.com:80 4、虚拟目录:第一个“/”为...
  • 如果你对RRT没有进行深入地代码实现和实验对比,你可能会这样的疑惑,这种随机撒点的方式搜索路径,跟买彩票一样,运气差的话可能要很久,就算运气好也不会快到哪儿去?至少我曾今也这样的想法,哈哈! 这里我将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,939
精华内容 18,775
关键字:

内容与路径有何区别

友情链接: paomadeng.rar