精华内容
下载资源
问答
  • 本次分享主要通过详细对比MaxCompute和Hive各个方面的异同及开发使用注意事项,方便用户来开发使用MaxCompute,实现从Hive秒速迁移到MaxCompute。 **演讲嘉宾简介:**刘建伟 以下内容根据演讲视频以及PPT整理而成...

    **摘要:**一个使用过Hadoop的Hive框架的大数据开发工程师,往往基本掌握了阿里云的大数据计算服务MaxCompute的90%。本次分享主要通过详细对比MaxCompute和Hive各个方面的异同及开发使用的注意事项,方便用户来开发使用MaxCompute,实现从Hive秒速迁移到MaxCompute。

    **演讲嘉宾简介:**刘建伟

    以下内容根据演讲视频以及PPT整理而成。
    本次分享主要围绕以下四个方面:
    一、MaxCompute和Hive对比内容介绍
    二、MaxCompute介绍
    三、MaxCompute和Hive对比
    四、MaxCompute注意事项及对比总结

    一、MaxCompute和Hive对比内容介绍
    本文主要从文件系统、调度系统、客户端、SQL、Web UI、界面化操作、权限等方面对MaxCompute和Hive进行对比。其中SQL对比中将分别介绍建表语句、分区分桶、数据上传下载、外部表、SQL函数、UDF、MapReduce、SQL调优、文件格式等方面的异同。
    image.png
    二、MaxCompute介绍
    MaxCompute 主要服务于批量结构化数据的存储和计算,可以提供海量数据仓库的解决方案以及针对大数据的分析建模服务。下图为MaxCompute系统架构。MaxCompute支持SQL查询计算,自定义函数UDF实现复杂逻辑,MapReduce程序实现更具体的业务计算,支持Graph,面向迭代的图计算处理框架,提供Java API连接操作SQLTask,基于DAG的处理、交互式内存计算、机器学习等计算类型及MPI迭代类的算法,简化了企业大数据平台的应用架构。MaxCompute和Hive一样可以使用SQL、UDF以及MapReduce开发。基于MaxCompute的Serverless无服务器的设计思路,用户只需关心作业和数据,而无需关心底层分布式架构及运维。
    image.png
    三、MaxCompute和Hive对比
    1. 文件系统对比
    MaxCompute和Hive文件系统对比如下图。
    image.png
    飞天(Apsara)是由阿里云自主研发、服务全球的超大规模通用计算操作系统。飞天系统是分布式文件存储和计算系统。对于MaxCompute,可将飞天视为类似于Hadoop的框架,如Hive基于Hadoop,那么可以理解为MaxCompute基于飞天系统。
    2. 客户端对比
    **Hive客户端:**用户进入Hive客户端执行show Database命令可以看到所有的数据库以及查询数据库中对应的表。
    image.png
    MaxCompute客户端:
    首先下载并安装MaxCompute客户端到本地,可以看到MaxCompute客户端页面如下图所示,这里主要介绍一下MaxCompute的项目空间。
    项目空间(Project)是 MaxCompute 的基本组织单元,它类似于传统数据库的Database 或 Schema 的概念,是进行多用户隔离和访问控制的主要边界 。一个用户可以同时拥有多个项目空间的权限。通过安全授权,可以在一个项目空间中访问另一个项目空间中的对象,例如表(Table)、资源(Resource)、函数(Function)、 和实例Instance。MaxCompute除了命令行,客户端还提供Python和Java的SDK进行访问。MaxCompute SDK的入口,可通过此类来获取项目空间下的所有对象集合,包括Projects、Tables、Resources、Functions、Instances。
    image.png
    构造 MaxCompute对象可通过传入Aliyu Account实例来构造MaxCompute对象。程序示例如下图所示。创建一个Aliyu Account实例,首先输入“access_id"、“access_key"信息。 odpsUrl是根据用户自己的region填写的endpoint,然后填写project名称。MaxCompute Tunnel数据通道是基于Tunnel SDK编写的。用户可以通过Tunnel向MaxCompute中上传或者下载数据。
    image.png
    **SQLTask:**SQLTask是用于运行、处理SQL任务的接口。可以通过运行接口直接运行SQL。
    注意:每次只能提交运行一个SQL语句,若为脚本模式可以一次提交多个SQL 。运行接口返回Instance实例,通过Instance获取SQL的运行状态及运行结果。程序示例如下图所示。创建类后输入accessId,accessKey信息。然后创建一个Odps实例对象,同时输入endpoint。关于SQLTask的具体介绍可参考官方文档。
    image.png
    image.png
    3. Hive SQL与MaxCompute SQL对比
    **(1)建表语句对比:**MaxCompute SQL与Hive SQL建表语句对比如下图所示。Hive SQL建表语句需要定义其分隔符、文件格式等。而MaxCompute建表不需要指定分隔符,指定文件存储路径,指定文件的存储格式。由于MaxCompute是基于阿里云飞天文件系统,用户无需关心文件存储格式,压缩格式,存储路径等,这些操作由阿里云来完成。用户不必疲于文件存储成本、压缩性价比、读写速度等优化,可以将精力集中在业务开发上。
    image.png
    **(2)数据上传和下载:**Hive数据上传和下载需要通过load命令以及文件路径(load date inpath)。MaxCompute中可通过命令工具Tunnel进行数据上传和下载。
    image.png
    **Upload:**MaxCompute上传数据,支持文件或目录(指一级目录)的上传,每一次上传只支持数据上传到一张表或表的一个分区。若上传到分区表则必须指定上传的分区,多级分区需要指定到末级分区。示例如下:tunnel upload log.txt为数据文件,test_project为项目空间,.test_table为表名,最后为分区信息。
    image.png
    **Download:**从MaxCompute的表中下载数据,只支持下载到单个文件,每一次下载只支持下载一张表或一个分区到一个文件。分区表需要指定下载的分区,多级分区则需要指定到末级分区。
    image.png
    **(3)分区分桶:**Hive和MaxCompute都支持分区分桶,其中分区用法一致。
    分桶操作实际上是将一个大文件根据某个字段hash分为多个小文件,适当的分桶可提升查询效率。分桶使用方法如下表所示。
    image.png
    在Hive中使用分桶命令需要执行命令hive.enforce.bucketiong=true;使用关键字clustered by指定分区依据的列名,以及指定分桶数。在MaxCompute中是底层进行分桶操作。在MaxCompute中可以在建表时指定clustered by中的Hash Key,MaxCompute将对指定列进行Hash运算,根据Hash值分散到各个Bucket中。为避免数据倾斜和热点,取得较好的并行执行效果,clustered by字段列宜选择取值范围大、重复键值少的列。为达到join优化目的,应考虑选取常用的Join/Aggregation Key,即类似传统数据库中的主键。
    **(4)外部表(External Table):**Hive可以通过外部表的功能进行操作,例如Hbase、ES的数据。
    MaxCompute2.0支持外部表功能。MaxCompute通过外部表来映射阿里云的OTS和OSS两个数据存储产品来处理非结构化的数据,例如音频、视频数据等。在外部表操作过程中需要注意外部表的建表语句以及权限问题。MaxCompute非结构化数据框架通过External Table与各种数据的关联,关联OSS上开源格式数据的External Table的建表的DDL语句格式如下所示。包括列信息、分区信息、文件格式、arn信息等。

    DROP TABLE [IF EXISTS] <external_table>;
    CREATE EXTERNAL TABLE [IF NOT EXISTS] <external_table>
    (<column schemas>)
    [PARTITIONED BY (partition column schemas)]
    [ROW FORMAT SERDE '<serde class>'
      [WITH SERDEPROPERTIES ('odps.properties.rolearn'='${roleran}' [,'name2'='value2',...])]
    ]
    STORED AS <file format>
    LOCATION 'oss://${endpoint}/${bucket}/${userfilePath}/';
    
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vn87pw0d-1583302187560)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KIMXPGdW-1583302187561)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== “点击并拖拽以移动”)]

    该语法格式与Hive创建表的语法格式接近,但需注意以下问题:
    1)column schemas:外部表的column schemas必须与具体OSS上存储的数据的schema相符合,否则会报错。
    2)ROW FORMAT SERDE:非必选选项,只有在使用一些特殊的格式(例如TEXTFILE)时才需要使用。
    3)WITH SERDEPROPERTIES:当关联OSS权限使用STS模式授权时,需要该参数指定odps.properties.rolearn属性,属性值为RAM中具体使用的Role的Arn信息。用户可以在配置STORED AS 的同时通过说明file format文件格式。
    4)如果不使用STS模式授权,则需指定odps.properties.rolearn属性,或直接在Location传入明文AccessKeyId和AccessKeySecret信息(因信息有保密性不建议使用)。并且子账号AccessKeyId和AccessKeySecret信息需要自行保存,因为AccessKeyId和AccessKeySecret信息只提供一次,不支持后续查询,一旦丢失需要重新绑定。
    OSS外部表授权方式:
    一键授权:当MaxCompute和OSS的Owner是同一个账号时,可登录阿里云账号后单击一键授权,将跳转到下图所示界面,单击同意授权。在访问控制更改子账号添加管理对象存储服务(OSS)权限(AliyunOSSFullAccess)。
    image.png
    自定义授权:

    1. 新增一个RAM角色。如下图所示,在RAM访问控制台点击“新建RAM角色"。
      image.png
    2. 修改角色策略内容设置。下图所示案例为给创建的RAM角色oss-admin添加的信任策略内容
      image.png

    当MaxCompute和OSS的Owner是同一账号时,在Service中只需写"odps.aliyuncs.com",不是同一账号时,需要在Service中填写"MaxCompute的Owner云账号id@odps.aliyuncs.com"。

    --当MaxCompute和OSS的Owner是同一个账号,设置如下。
    {
    "Statement": [
    {
     "Action": "sts:AssumeRole",
     "Effect": "Allow",
     "Principal": {
       "Service": [
         "odps.aliyuncs.com"
       ]
     }
    }
    ],
    "Version": "1"
    }
    --当MaxCompute和OSS的Owner不是同一个账号,设置如下。
    {
    "Statement": [
    {
     "Action": "sts:AssumeRole",
     "Effect": "Allow",
     "Principal": {
       "Service": [
         "MaxCompute的Owner云账号id@odps.aliyuncs.com"
       ]
     }
    }
    ],
    "Version": "1"
    }
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TeU3EZu8-1583302187563)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-asEcUX45-1583302187564)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== “点击并拖拽以移动”)]

    1. 授予角色访问OSS必要的权限AliyunODPSRolePolicy。如下图所示,可以看见权限中有ListBuckets、GetObject、ListObjects等具体信息,用户可以根据需要自定义权限。
      image.png
    2. 将权限AliyunODPSRolePolicy授权给该角色。如下图所示,在角色后面点击添加权限,则被授权主体就是之前被授权的子账号主体。在左侧选择权限策略,点击确定即可。
      image.png

    **(5)自定义函数:**Hive与MaxCompute均支持自定义函数UDF、UDTF、UDAF。MaxCompute 2.0版本升级后,Java UDF支持的数据类型从原来的BIGINT、STRING、DOUBLE、BOOLEAN扩展了更多基本的数据类型,同时还扩展支持了ARRAY、MAP、STRUCT以及Writable等复杂类型。使用复杂数据类型的方法,STRUCT对应com.aliyun.odps.data.Struct。com.aliyun.odps.data.Struct从反射看不出Field Name和Field Type,所以需要用@Resolve注解进行辅助。即如果需要在UDF中使用STRUCT等数据类型,要求在UDF Class上也标注@Resolve注解。但是当STRUCT类型中的field有很多字段时,需要手动添加@Resolve注解。针对此问题,可以使用Hive 中的GenericUDF去实现。MaxCompute 2.0支持Hive风格的UDF,部分Hive UDF、UDTF可以直接在MaxCompute上使用。
    **(6)MapReduce开发:**MapReduce是一个基于集群的计算平台,是一个简化分布式编程的计算框架,是一个将分布式计算抽象为Map和Reduce两个阶段的编程模型。MaxCompute提供三个版本的MapReduce编程接口:MaxCompute MapReduce、MapReduce(MR2)、Hadoop兼容版本MapReduce。MaxCompute MapReduce是MaxCompute的原生接口,执行速度更快、开发更便捷、不暴露文件系统。MR2是对MaxCompute MapReduce的扩展,支持更复杂的作业调度逻辑,MapReduce的实现方式与MaxCompute原生接口一致。 Hadoop兼容版本MapReduce特点是高度兼容Hadoop MapReduce ,与MaxCompute MapReduce MR2不兼容。
    **(7)SQL调优:**MaxCompute和Hive基本SQL优化相似,例如常见的Key分布不均匀、数据倾斜、join长尾、窗口函数优化等。
    4. Web UI对比
    Hive任务依赖于Hadoop的HDFS和YARN提供的WebUI进行访问。MaxCompute使用Logview查看Job 信息。通过Logview可看到一个Job 的任务运行状态、任务的运行结束、任务细节及每个步骤的进度等任务执行状况。Job 提交到MaxCompute后将生成Logview的链接。可直接在浏览器打开Logview链接查看Job 信息。Logview首页分成上下两部分,Instance信息和Task信息。
    **Instance信息:**用户提交的SQL任务对应的MaxCompute Instance信息,包含URL链接、项目、InstanceID、提交人、开始时间、结束时间和状态(Status)等。Instance信息部分可以单击Status查看当前队列的Status详细信息,包含四种状态,Waiting表示当前作业正在MaxCompute中处理,并没有提交到分布式调度系统(Fuxi)中运行。Waiting List : n表示作业已提交至分布式调度系统(Fuxi)排队等待运行,当前在队列中处于第n位。Running则说明作业在分布式调度系统(Fuxi)中运行。以及成功状态。
    **Task 信息:**该Instance对应的Task信息,包括任务名称、类型、状态、运行结果(Result)、详细信息(Detail)、开始时间、结束时间、总运行时间(Latency)、进度。其中,Latency指运行总共消耗的时间,与其它页面的Latency含义类似。Result是在Job运行结束后,可以看到运行结果。Detail是一个Job在运行中和结束后,均可以单击Detail来查看任务运行的具体情况。
    **案例:**下面介绍一个Logview信息案例。
    image.png
    点击上图SQL,可以看到具体执行任务的LogView语句信息页面如下:
    image.png
    目录中Status是上述所介绍的四种状态信息。通过SubStatus History可以看到任务运行过程中的详细信息,包括任务等待、准备、执行、结束等详细执行过程信息。
    image.png
    下方一行为Task信息:
    image.png
    点击Result可以查看运行结果;
    image.png
    点击Detail可以看到任务运行过程中的详细信息。
    image.png
    上图左侧Fuxi Job DAG会根据任务指定详细执行计划,生成一个DAG(有向无环)图。右侧上方Fuxi Jobs为具体状态信息。右侧下方为Instance信息,通过Instance信息可以看到整个任务的执行状况,包括失败数、运行数、长尾信息等,可便于对SQL进行相应优化。 Summary是Job运行结束后才可以查看的信息,主要包括Job消耗的CPU、内存、Job输入的表名、记录数和字节数。通过Summary也可以分析Job是否有长尾,并进行相应优化。因此Logview是MaxCompute开发过程中排查、发现问题的重要工具。
    image.png
    5. 界面化操作对比
    Hive可以借助hue工具来操作查询数据,但其交互性不是很强。MaxCompute中阿里云的产品基本上都是界面化操作,可拖拽,开发门槛非常低。因此非常适合初学大数据或者没有相关开发人力的公司。MaxCompute的界面化操作可以结合Dataworks做数据同步、权限控制、数据管理和其他数据源交互、定时调度等。
    6. 权限对比
    Hive中权限操作支持ACL授权。MaxCompute支持ACL授权以及Policy权限授权。
    Policy权限授权: 在RAM访问控制页面权限策略管理中,点击新建自定义权限,选择脚本模式,就可以编写Policy权限。如下图所示为具体权限内容。用户在开发过程中,可以使用ACL权限或Policy权限授权。创建Policy权限策略后,创建一个RAM角色,为角色制定策略,就会拥有一个相应权限以进行开发。
    image.png
    image.png
    四、MaxCompute注意事项
    1. Java沙箱限制
    MaxCompute MapReduce及UDF程序在分布式环境中运行时,受到Java沙箱的限制(MapReduce作业的主程序,例如MR Main则不受此限制),具体限制如下所示。
    1)不允许直接访问本地文件,只能通过MaxCompute MapReduce/Graph提供的接口间接访问。读取resources选项指定的资源,包括文件、Jar包和资源表等。通过System.out和System.err输出日志信息,可以通过MaxCompute客户端的Log命令查看日志信息。
    2)不允许直接访问分布式文件系统,只能通过MaxCompute MapReduce/Graph访问到表的记录。3)不允许JNI调用限制。
    4)不允许创建Java线程,不允许启动子进程执行Linux命令。
    5)Java反射限制:suppressAccessChecks权限被禁止,无法setAccessible某个private的属性或方法,以达到读取private属性或调用private方法的目的。
    2. SQL使用限制
    如下图所示:具体参考官方文档介绍。
    image.png
    image.png
    3. MaxCompute数据操作
    MaxCompute不支持直接对表数据进行删除(Delete)和更新(Update)语法操作。
    更新(Update)数据:只能将源分区或表数据导入到新分区或表(新分区或表可以与源分区或表相同),在导入过程中执行相应的更新逻辑。对于非分区列,只支持重命名和新建列,不支持对列的删除。MaxCompute不支持Update语句,建议把更新后的结果筛选出来,然后用Insert Overwrite的方法写回原表。
    删除(Delete)数据:可以通过删除(Drop)表达到数据删除目的。非分区表可以通过TRUNCATE TABLE table_nam;语句清空表数据。分区表可以通过ALTER TABLE table_name DROP IF EXISTS PARTITION(分区名=‘具体分区值’)删除分区达到删除整个分区数据的目的。通过INSERT和WHERE条件把需要的数据导入到另一张新分区或表中或就地更新,INSERT语句支持源表和目的表是同一张表。
    4. MaxCompute单字段限制8MB
    处理思路:目前由于存储机制限制,MaxCompute表中单个字段(多为String字段)的最大长度不能超过8MB。对于超过8MB的超大字段,建议拆分成多个字段。具体的拆分逻辑可以根据业务特性设计,保证每个字段不超过8MB即可。
    常用方法:由于复杂结构的超大字段在数据开发和分析中会严重影响计算性能,因此建议用户根据数仓建设规范来设计数据架构,避免超大字段。具有复杂结构的原始数据,作为ODS层,最好以压缩的方式归档。定时(例如每天)对ODS层的增量数据做数据清洗,复杂字段拆分为多个简单字段,然后存储在CDM层的表中,便于数据的统计分析。
    5. 设置兼容Flag
    默认模式是MaxCompute模式,如果要切换至Hive模式,需要开启odps.sql.hive.compatible为True。odps.sql.hive.compatible表示是否打开Hive兼容模式,其值默认为False。可通过以下两种方法开启Hive兼容模式。开启后才可以支持Hive指定的各种用法,例如inputRecordReader、outputRecordReader、Serde等。Hive兼容后用户创建外部表或开发MaxCompute SQL过程中可以从Hive平滑迁移到MaxCompute中。
    –Project级别切换为Hive模式:setproject odps.sql.hive.compatible=True;
    –Session级别切换为Hive模式:set odps.sql.hive.compatible=True。odps.sql.hive.compatible表示是否打开Hive兼容模式,其值默认为False(禁止)。每执行一个Session都需要写这句话。

    最后做一个MaxCompute与Hive异同总结
    image.png

    查看更多:https://yqh.aliyun.com/detail/6574?utm_content=g_1000106254

    上云就看云栖号:更多云资讯,上云案例,最佳实践,产品入门,访问:https://yqh.aliyun.com/

    展开全文
  • 数据恢复问题分析注意事项

    千次阅读 2016-06-15 16:05:09
     表现为:无法进入操作系统、文件无法读取、文件无法被关联应用程序打开、文件丢失、分区丢失、乱码显示等。事实上,造成逻辑数据丢失的原因十分复杂,每种情况都有特定的症状出现,或者多种症状同时出现。一般...


     

         数据出现问题主要包括两大类:逻辑问题和硬件问题,相对应的恢复也分别称为硬件恢复和逻辑恢复。

         硬件故障恢复 

      与闪存类存储介质或是光存储介质所不同,带有磁头装置的硬盘在稳定性方面有着先天性的缺点,再加上本身就存在一定故障率的电路板,因此整个硬盘出现故障的概率可并不低。如果进行一个简单的归纳,硬盘的硬件损坏可以分为以下几类:

       1、控制电路损坏:

       是指硬盘的电路板中的某一部分线路断路或短路,或者某些电气元件或IC芯片损坏等等,导致硬盘在通电后盘片不能正常起转,或者起转后磁头不能正确寻道等。

         磁头组件损坏:主要指硬盘中磁头组件的某部分被损坏,造成部分或全部磁头无法正常读写的情况。磁头组件损坏的方式和可能性非常多,主要包括磁头磨损、磁头悬臂变形、磁线圈受损、移位等。

        2、综合性损坏:

      主要是指因为一些微小的变化使硬盘产生的种种问题。有些是硬盘在使用过程中因为发热或者其他关系导致部分芯片老化;有些是硬盘在受到震动后,外壳或盘面或马达主轴产生了微小的变化或位移;有些是硬盘本身在设计方面就在散热、 摩擦或结构上存在缺陷。种种的原因导致硬盘不稳定,经常丢数据或者出现逻辑错误,工作噪音大,读写速度慢,有时能正常工作但有时又不能正常工作等。 

       3、扇区物理性损坏

      是指因为碰撞、磁头摩擦或其他原因导致磁盘盘面出现的物理性损坏,譬如划伤盘片、掉磁等。

      您必须了解的注意事项:

    1 当介质如出现异响,请马上断电,并迅速拨电话进行咨询,数据恢复工程师会详细解答用户该如何处理。

    2 当发现介质读写速度很慢或读取不稳定,请避免对其“疲劳操作”,以免进一步损伤磁头。

    3 任何时候都不要尝试低级格式化操作,这将会令数据恢复难度大幅度提高。

    4 如果有可能,请尽量提供相同型号的硬盘,这对于开盘类数据恢复很有帮助。

    5 并非所有的硬件类故障都需要开盘操作。

      逻辑故障

       逻辑恢复是指通过软件的方式进行数据修复,整个过程并不涉及硬件维修。而导致数据灾难的原因往往是病毒感染、误格式化、误分区、误克隆、误删除、操作断电等。

        表现为:无法进入操作系统、文件无法读取、文件无法被关联的应用程序打开、文件丢失、分区丢失、乱码显示等。事实上,造成逻辑数据丢失的原因十分复杂,每种情况都有特定的症状出现,或者多种症状同时出现。一般情况下,只要数据区没有被彻底覆盖,那么都是可以顺利恢复的。

      误删除

      由于误操作而引起的文件丢失,对于这类故障,有着很高的数据恢复成功率。即便后期执行过其它操作,也有希望将数据找回。

      误格式化

      用户在系统崩溃后,忘记硬盘中(一般是C盘)还有一些重要资料,然后格式化并重装系统,这种情况比较常见。

      误分区、误克隆

      在使用PQ Magic以及Ghost时,由于用户的误操作而导致数据丢失,这类逻辑故障也可以恢复数据,不过恢复难度相对较大。

      病毒破坏

      病毒破坏数据的机率是很大的,它破坏数据的方式有多种:

       第一是将硬盘的分区表改变,使得分区丢失

       第二是删除你的文件,主要破坏(word,excel,jpg,mpg等)这几种类型文件,如最新的移动杀手便全面删除硬盘中的Word文档,造成很大的破坏力。对于病毒破坏引起的数据丢失,上磁有着很高的恢复成功率。

      文件损坏

     大部分文件损坏案例都跟杀毒有关,被感染的文件在杀毒后就打不开了,其他的方式也可以导致文件损坏,如安装了某个软件,运行了某个程序,或者遭遇黑客攻击等。       

       您必须了解的注意事项:

    1 当您发现数据丢失之后,不要轻易尝试任何操作,尤其是对硬盘的写操作,否则很容易覆盖数据。

    2 如果丢失的数据是在C盘,那么请立即关机,因为操作系统运行时产生的虚拟内存和临时文件也会丢失。

    3 请不要轻易尝试Windows的系统还原功能,这并不会为您找回丢失的文件,只会令后期的恢复添置更大的困难。

    4 请不要反复使用杀毒软件,这些操作也无法找回丢失的文件,造成不必要的障碍和破坏数据。

    展开全文
  • 领域分析注意事项

    2013-02-04 23:05:07
    业务过程会谈是进行领域分析的基础。 业务过程会谈中出现的名词...使用业务过程中出的动词或动词短语来标记类之间的关联使用抽象类对类分组。 按照聚集或者组成关系对类分组。 重新调整类的名称,使类的意义更清

    业务过程会谈是进行领域分析的基础。

    业务过程会谈中出现的名词可能成为模型中的类。

    在获得的名词列表中去掉应该作为属性的名词,与其他词意义重复的名词以及不属于本领域的名词。

    注意不要忘记有些重要的类没有在领域会谈中出现,这样的类也应该加入模型中。

    使用业务过程中出的动词或动词短语来标记类之间的关联。

    使用抽象类对类分组。

    按照聚集或者组成关系对类分组。

    重新调整类的名称,使类的意义更清晰。

    某些关联可能是三元的(也就是三个类同时参与一个关联)。

    使用常识知识对关联命名,确定关联的多重性。

    展开全文
  • 一、内连接 ...说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。 二、左连接(左外连接) 关键字:left join on / left outer join on 语句:select * f...

    一、内连接

    关键字:inner join on

    语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;

    说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。

    在这里插入图片描述

    二、左连接(左外连接)

    关键字:left join on / left outer join on

    语句:select * from a_table a left join b_table b on a.a_id = b.b_id;

    说明:

    left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。

    左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

    在这里插入图片描述

    三、右连接(右外连接)

    关键字:right join on / right outer join on

    语句:select * from a_table a right outer join b_table b on a.a_id = b.b_id;

    说明:

    right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。

    与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。

    在这里插入图片描述

    四、测试

    1、三表关联查询

    user_house表数据
    在这里插入图片描述

    执行的SQL语句为:

    在这里插入图片描述

    结果为:

    在这里插入图片描述

    问题:为啥会出现两行空数据?

    1、首先MySQL的执行顺序为由上至下。但Where最先执行

    2、当执行到第一个RIGHT JOIN 时,从user_house表中找到满足条件 userId = "5bfd379de4b0c54526650eee"的结果有6个,如上图红框中所示。

    3、接下来执行LEFT JOIN。左表(user_house)符合条件的参数有6个,但是右表(house)中只能找到4个houseUid的信息,所以其他的两条数据用null补上。于是总的会是6条结果,多出2条null结果。

    分析:

    在这里插入图片描述

    首先要理清楚表格数据查找顺序。以上图为例,它是以userId在user_house表中找到houseUid,再以houseUid去house表中查找数据。

    在这里插入图片描述

    根据查找顺序决定使用left还是right。

    展开全文
  • WHERE 后面的条件中不能有聚集函数,比如SUM(),AVG()等,而HAVING 可以 所以在运算的时候要注意聚集函数主要有:最大,最小,总数,总和,平均 ,这些是无法跟在WHERE后面的,left join 左边的表为基表 右表参照左边...
  • DS&ML_关联分析笔记

    千次阅读 2018-04-02 11:51:32
    对于关联分析模型的相关知识点的总结与整理 简单描述一下关联分析的思想,关联分析是什么?
  • 目录 一、Spring Cloud Zuul概述 二、Spring Cloud Zuul典型基本配置:路由配置和...3.多实例映射(Zuul默认使用Eureka集成的负载均衡功能,所以若使用该功能需要做如下两件事:见注释) 4.forward 本地跳转(针...
  • 主要介绍了Laravel5.1 框架模型多态关联用法,结合实例形式分析了laravel5.1框架模型多态关联具体实现、使用方法与操作注意事项,需要的朋友可以参考下
  • 如果在视图中存在Order by 语句,那么... where sm1_f=00000001 order by Spzd_Sp_f 如果Spdj数量多,关联多,那么这句语句在视图中运行会非常慢,而单独在查询分析器中运行却不会慢,这种情况下就要加Top语句,哪怕是Top 1
  • Apache CXF引擎处理附件的机制十分的优化,而且支持大...总结了一下CXF附件的使用注意事项,这些事项可以通过以下几个问题分别说明。  1)如何避免残留临时文件/如何避免http连接的没有正确关闭。  2)附件的内容
  • 一、经常关注的性能指标 1、事务响应时间(一个事务可能包含多个请求,事务具有业务的意义) 2、每秒服务器处理的请求个数(多个请求...二、性能指标关联分析 分析实例1: 当并发用户数增大时,服务器的处理能...
  • 使用Hint时的注意事项

    千次阅读 2015-01-07 17:26:59
    使用Hint时的注意事项   在使用Hint时需要注意的一点是,并非任何时刻Hint都起作用。 导致HINT 失效的原因有如下2点: (1) 如果CBO 认为使用Hint 会导致错误的结果时,Hint将被忽略。 如索引中的...
  • 主要介绍了laravel 框架结合关联查询 when()用法,结合实例形式分析了laravel5.6框架when()基本原理、使用方法及操作注意事项,需要的朋友可以参考下
  • 需求分析:需要大量的进行数据库数据修改,有一定的数据关联性。 网上成品游标使用的 存储过程如下: /*判断是否存在,如果存在就删除*/ drop procedure if exists tempProcedure_Test;/*取一个系统中绝对不会...
  • 数据库设计注意事项

    千次阅读 2019-03-30 12:17:40
    1、需求分析: 分析需要存储的数据是哪些,这些数据有哪些属性,这些属性各自的特点是什么 2、逻辑设计: 使用ER图对数据库进行逻辑建模, 3、物理设计: 使用哪款数据库设计建表(oracle,myslq,sqlserver) 4、维...
  • MySQL常见注意事项

    2019-02-14 14:03:39
    MySQL常见注意事项 模糊查询 like 默认是对name字段建立了索引 注意:在使用模糊查询的时候,当% 在第一个字母的位置的时候,这个时候索引是无法被使用的。但是% 在其他的位置的时候,索引是可以被使用的。 ...
  • Android Studio 中使用SVN注意事项

    千次阅读 2016-07-24 23:08:43
    原文请查看:... 一、Android Studio配置SVN  Android Studio关联配置SVN很简单,在Settings里面,找到Version Control->Subversion;在这个页面的控制面板中的General中将Use command lin
  • MySQL索引缺点&使用详细注意事项

    千次阅读 2016-10-28 16:59:47
    以下主要介绍的是MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项是值得我们大家注意的,我们大家可能不知道过多的对索引进行使用将会造成滥用,有兴趣的朋友可以了解下。   MySQL索引的缺点:  虽然...
  • 1 聚类分析 聚类分析这种多元统计分析方法,用于定量分析指标或样品的分类问题。在一个数据样本中,不同的样本具有各方面的差异,如果目标是对其进行分组,可根据一批样品的多个观测指标,找出用于度量变量之间相似...
  • 组合索引注意事项

    2017-05-05 17:12:21
    索引的原理与作用,各种书籍和网络上的介绍可以说是铺天盖地,基本上主流数据库系统的也都是一致的。选择索引字段的原则,比如外键字段、数据类型较小的字段、经常用于查询或排序的字段、表...先把常见的注意事项...
  • 研究生面试问题及注意事项

    千次阅读 多人点赞 2019-03-14 20:05:01
    [1] 区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,...
  • 区块链项目ICO注意事项

    千次阅读 2018-05-07 10:16:04
    发行ICO应该注意什么 在考虑ICO之前,请先考虑以下问题: 为什么我需要区块链代币?我的产品需要区块链吗?区块链技术能够为我的产品带来什么好处? 我如何将区块链代币与产品功能相结合?可以在我的app中整合它...
  • 分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查询语句,如何优化MySQL索引的应用。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 注:[1]...
  • db2注意事项

    千次阅读 2015-12-08 22:16:40
    1. db2 nullif()  nullif('1','1')与nullif(1,1)虽然都...2. DB2中 ‘’和‘’或者‘’和‘ ’,是可以匹配的,所以在连接两个表时,一定要注意连接条件中字段是否有‘’、‘ ’,否则会造成笛卡尔积!!! 3.
  • 友盟推送SDK,集成测试,问题和集成注意事项
  • UML建模注意事项

    千次阅读 2015-06-24 16:28:05
    众所周知,UML建模已经成为软件工程过程不可或缺的部分。好的UML模型有利于整个...一、用例建模注意事项  1、用例建模必须注意我们所关注的是“用例”。用例是一个动作行为,业务行为,所以用例图表示法中用例的名称一
  • 推荐算法注意事项总结

    千次阅读 2015-04-03 15:33:13
    本文总结了多种推荐场景中的注意事项,或者推荐中比较关键的因素,不涉及算法描述,仅仅说明关注点,仅供参考。 推荐算法有很多种,从算法的角度来说,我认为主要由以下几种:协同过滤系列(基于item和user),机器...
  • SQL拆分实现与注意事项

    千次阅读 2019-03-18 17:41:39
    任何系统的设计都是在不断的迭代中改进的,在系统最初的阶段,能够最快的完成功能是首要任务,这就会导致我们在写数据查询时使用了大量的关联查询。而当系统用户慢慢增加到我们不得不分库分表的时候,原先的关联查询...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,080
精华内容 12,832
关键字:

关联分析的应用注意事项