有一个真实的段子,蚂蚁金服一位工程师,他写了一个相亲简历,里面的工作填的是“码农”,结果很久没有人点开看,后来他把自己的工作经历改为“区块链”, 一下子收到了381封求爱信。
从高精尖行业的工作者到广场舞大妈,似乎全民都参与到了区块链的狂欢中。那么看起来神秘莫测的区块链究竟是什么?读懂以下内容,你就完成了从小白到入门汉的进阶之路。
1、区块链是个啥?
形象的说来, 区块链就是“大家一起来记账” 。任何一个数据库都需要有一个大管家来负责“记账”(维护系统、录入数据)。但是使用区块链技术以后,这个“中心大管家”的概念消失了,我们每一个人都可以参与记账。那么问题来了,最终以谁的记录为准呢?当然是那个将工作完成的又好又快的人啦,绝对恪守公平的系统会根据算法选出这个人,把他记录的内容写到账本,并将这段时间内账本内容发给系统内所有的其他人进行备份。
任何新生事物想要长足发展必须要有独到的优势,区块链技术也是如此。首先,区块链技术保障了 系统的安全性 。没有中央管家的情况下,人人都是家的捍卫者,这意味着摧毁部分节点对系统一点都没有影响。第二,记录的过程 无法作弊 ,区块链系统中每个人都有相同的账本,整个过程是公开透明的。系统会参照多数人意见来决定最终结果,而个人很难同时入侵这么多台电脑,而仅仅修改自己的结果又不存在任何意义,这种吃力不讨好的事儿谁会去做呢?第三,也是最重要的,区块链彻底 抛弃了“信用中介”的存在 。信用中介就是我们转账时必须通过的平台,例如传统的银行,而现在任何两个陌生人都可以直接完成互信的转账,效率提升的不只一点点!
3、区块链技术到底有什么用?
前文已经提到,区块链主要的优势是无需中介参与、过程高效透明且成本很低、数据高度安全。那么就是说,任何一个行业在这三方面有需求的话都可以使用区块链技术。下面举几个例子:
在银行业领域 ,使用区块链技术相当于更新换代了一种数字化的、安全的以及防篡改的总账账簿。事实上,瑞士银行UBS和在英国的巴克莱银行都已经开始进行实验,希望将它作为一种方法来加速推动后台系统功能以及清结算能力。银行业的一些机构声称区块链可能减少200亿的中间人成本。
在 汽车 租赁方面 ,区块链也大有可为。未来的客户选择他们想要租赁的 汽车 ,进入区块链的公共总账;然后,坐在驾驶座上,客户签订租赁协议和保险政策,而区块链则是同步更新信息。对于 汽车 销售和 汽车 登记来说,这是一个看得见的未来。
在医疗卫生方面 ,区块链技术可以让医院、患者和医疗利益链上的各方在区块链网络里共享数据,而不必担忧数据的安全性和完整性。这意味着更精确的诊断,更有效的治疗,以及提升医疗系统提供经济划算的医疗服务的整体能力。
区块链并不高冷,它已落地到和我们生活密切相关的应用中。 例如,蚂蚁区块链的应用,从公益切入,到互助保险,到商品正品溯源,再到租赁房源溯源。
2018年,区块链会“回到人间”。
区块链,你真的懂吗?既然说用三分钟那就简易回答吧。
1什么是区块链;
2区块链有哪些好处;
3区块链有什么用;
4区块链的技术和存在的问题;
我们先来看第一个问题:什么是区块链
先从字面上来看,区块链在英语里叫Blockchain,这是一个很好的词,英语名字起得很好,汉语翻译得也非常漂亮。
1“区块”是什么?
你可以认为是一个记录,或者说是任何一个东西,它在产生的阶段,形成了这样一个记录。这个东西可以是万物互联里任何一个实体或者虚拟的一个物件。
比如说你产生了一个比特币,这是一个东西,那它实际上对应一个区块,这个区块就是一个记录,记录它到底是怎么回事。
你将来生产一瓶药,这瓶药在生产的同时其实就产生了一个区块,出厂的时候它要做一次记录,这个和它是一一对应的。
这是第一个维度。
为了便于理解,打个比方,我们每一个人生下来,实际上都有一个唯一的标识,就是我们的DNA。世界上所有的物种,DNA都不一样。每一个个体的DNA都不一样。
你父母可以给你起名字,张三、李四、王五,这是可以重名的,就像是一瓶药,阿司匹林也好,盘尼西林也好,这些也是可以重名的。 但是,人的DNA是不一样的,哪怕你有同卵的兄弟姐妹,你们的DNA也是不一样的,所以这是你唯一的标识。而且你的DNA一旦形成以后就不能改了,这是区块链的一个好处。
2“链”是什么?链实际上是一个过程,你可以认为是一个交易的过程,这一瓶药出厂以后,从车间里进到仓库,经过某一个门,它就会记录下来这个过程。
当然这需要计算机自动记录,人记录的成本太高。然后,装箱是一个过程,运输到货物中转站,这又是一个过程,然后再装小车,运到批发站,这是下一个过程。
每一步过程都记录下来了。从批发站到商店是一个过程,商店的人接收这批药上架又是一个过程,你买它还是一个过程。 最后,整个过程都串起来,你就有办法来跟踪这一瓶药的整个流程,知道它的真假,因为这瓶药一旦生产出来了,就会和区块链绑定,就跟人和DNA绑定一样,是不能改的,但是可以看,可以检测。
医生也可以通过检测DNA决定这个人是不是你。 那么从性质来讲,我们把它虚拟化一下,它其实也是一个智能合约。你和你的一个客户签订了一个买卖关系,这个事一旦产生了,就不能改了,接下来大家只能执行了,这个执行过程和我刚才讲药品的跟踪是一回事。
第二个问题:区块链有哪些好处?
1从数学上讲,它非常漂亮,它把过去你要拥有一件东西,然后才能知道它的性质,变成了你并不拥有它,但是你可以通过提问题了解到它的很多细节。
这在数学上来讲,是一个非对称性的很完美的情况。你可以判断它的真假,但你不能改变它。
2从理论上来讲,区块链是非常安全的,比如说一瓶药,你在这个过程中,你参与了,那别人是看不到这个信息的,就是说你买这瓶药,你能知道它是从哪儿来,但别人是无法知道的。
同样的一个道理,比如说我们俩之间签了一个合同,别人可以验证这个合同,你去找银行贷款,他可以问你金额。
但是,他无法获取到这份合同,他不能从你的计算机里把这份合同偷走。
区块链还有一些很有意思的性质,比如说,一块区块链,可以随意地分成两个,或者几个合成一个等等。
3区块链具有透明性,就是说大家都遵守这个算法,私下也没有什么特别的约定。那么,如果你相信这个算法,就等于你相信我,相信我没有做任何猫腻。我也不会悄悄地在合同上做什么手脚,让你蒙受损失。
这是在理论上来讲、数学上来讲很漂亮的地方。
第三块,咱们来看看区块链有什么用
1加密货币,比特币是一种,现在大家用的以太坊的以太币也是一种,当然你可以基于它的基础上自己再造一个,张三币、李四币都可以。至于它能不能代替未来的货币,这是一个存疑。
2融资,我们过去把融资分成三个阶段:第一个阶段,向银行贷款,你要办个饭馆,你需要抵押一些东西。第二个阶段就是,你发行一些股票,我把10%的股票出让,这样的话我就可以获得一部分资金。
第三个阶段实际上就是众筹,比如说我要写一本书,可能出版社出版需要5万块钱,你们谁一开始能够给我50块钱,将来我把这本书写好了,给每人一份,你就拿到这本书了,我也当然就出版了。 但是有一个问题,比如这本书我卖100块,你50块钱拿到了,万一我这本书卖得很好,假设卖了10万本,但是你好像没有从我这获益,这怎么办?
有没有一个更公平的方法,能够来衡量每一个人的贡献?一个办法就是,发一个加密货币(ICO),将来我们做的这项事业的盘子大了的时候,你可以从中获益。
3智能合约,比如说签一个合同,将来智能合约可以变成这样,中间所有的节点在这个合约签的时候都确定好了,比如说给你盖房子,装修房子,装修到了哪一步你的款必须给我到了哪一步,你验收了没问题,那个款就自动给我了。
甚至还可以跟我的供货方签,就是说我的款一到我的账上,我也要马上给我的供货方了。这样将来就省掉了很多三角债的问题,包括拖欠农民工的问题。
区块链也可以用于房产的登记, 汽车 登记等等。当然还有一个很大的用处就是赌博,实际上赌博这种事因为跟钱挨得近,因此最有意愿采用新技术。
说完区块链的好处,我们来看看区块链的技术和存在的问题
今天的区块链基本上是第二代,第一代是比特币那一代,它有很多问题,它也不是个平台,实际上是一个具体的应用。
第二代就是以以太坊为代表的,它是个平台,在这个平台上你可以自己发币,而且它把矿机这个概念去掉了,所以它的交易成本会低很多。 之所以今天ICO到处都是,原因就在于有了以太坊,你可以发币了,不像过去比特币的时候,你得完全照搬它的那一套,重新复制一遍,你今天在以太坊上,很容易发自己的货币,这就跟今天在安卓 *** 作系统上,你可以很容易地做你的App一样。
比特币的交易存在三个问题
1交易的延时很长,我问过专门交易比特币的人,交割的时间从两个小时到两天不等,所以你拿它洗钱,很不方便,人民币换成美元以后,它可能两天一下子跌了20%,你就损失了20%的钱。
2无法分配,像比特币,早期的那几个人拿掉了它的很多的份额,所以将来怎么分配也是一个问题,大家也没分清楚,以至于它很难作为一个货币。因为它如果真的作为一个大家都使用的货币,也就相当于前几个人把全世界的很大一部分财产都拿走了。
3交易成本高。打个比方,在美国星巴克喝一杯咖啡,平均是25美元。你平时在柜台交个钱,然后交易时间也就是一分钟。你要用比特币,你要先等两个小时,然后才能喝到咖啡,而且交易的成本高得不得了,光是电费就要20美元。也就是说你付25美元买咖啡,电费的交易成本却要20美元,所以这个事不现实。
区块链有很高的风险,这个风险不光是技术风险,也有政策风险,其实这也是机会,就是谁解决了这个问题,谁就得到了机会。它的交易成本也很高,所以谁能够开发出新的底层技术,把这个交易成本降下来,谁将来就有很多获利。
有人说它是下一代的互联网,这个我倒不认可,但是它一定会是互联网的一个补充。有人说它能不能颠覆央行,这个也不一定,因为没有任何理由说央行或者这些大的银行,自己不能做这件事,所以指望它颠覆央行的这些人,高兴得可能太早了。
或许最后恰恰是过去的这些大的金融机构利用区块链,让它自己更新换代了。
大白话,捞干货!
字面上,区块链就是区块和链,以及他们之间的某种关系。本质上是一种分布式的记账方式,不可篡改的网络数据库系统。
目前的发展方向有数字货币类,支付类,智能合约,defi金融类,web3类等等。还处在发展的初级阶段,是一项后台技术,大部分项目还在炒币融资。
现在的阿富汗可能最能证明比特币价值,价值储存已经没有问题
区块链不仅仅是一种技术,它是一种信任传递的方式,价值传递的方式,未来可能有巨大潜力。
关键词:区块,链,数据库,账本,阿富汗,炒币,价值,技术,市场
第一,什么是区块链?区块和链,一种记账方式,网络数据存放形式。
从字面意思来讲,区块链就是区块和链,他的这个区块实际上是记录的全网的交易记录,或者智能合约的执行过程结果数据等等。
每隔一段时间,整个网络会出一个块儿,这个块儿记录所有转账数据,而块儿一块儿之间需要用某种“链”来连接。
这个链就是加密算法,用前一个区块的一些信息计算获得后一个区块的某些信息,环环相扣,后一个区块可以追溯前一个区块,要修改后一个块就得修改前一个区块,一直到第一个区块。关于这些问题的细节,我前面写了很多篇文章,有兴趣可以翻回去看一看。
区块链实际上是一种记账方式,或者说数据库的储存方式,大家注意看我下面这段话,整个过程就是区块链的运行机制。
全网的各个节点拥有一样的地位,跑同样一段程序。这段程序用于把全网一段时间内发生的所有的交易记录数据记录进行收集,封装和打包。然后对全网进行公布广播
我们以比特币为例,一旦完成了这种打包和封装,你就可以获得出块权。每一次出块儿可以发行一定量的比特币。由于全网的节点跑的是一样的程序,没有一个中心来控制大家。所以这种发出的货币就是不可撤销,不可更改。
怎样决定谁有出块儿的权利呢?这就需要用到所谓的共识机制,也就是立一个规矩,以谁出的块儿作为基准,解决网络一致性的问题。主流的共识机制有pow机制和pos机制。Proof of work 和proof of stake工作量证明,谁干的活儿多,以及权益证明,谁压的资产多
Pow就是说大家共同计算一道很难的数学题,谁算出来的,谁就有出块权。Pos就是说大家都去把自己的家底拿出来做抵押,谁抵押的多。就会有可能被选中作为出块节点。
这种做法的本质就是你要付出一定的代价,要纳一个投名状,本质上是建立一种信任。
当这些所有工作完成,就可以出一个区块,而区块会与前一个区块相连接,一个一个的连下去,这就是整条区块列。注意,整个区块链的世界会出很多的块儿会,连到一条一条链上,但是大家只认那条最长的链,短的链会被抛弃掉。
简单说,各个网络节点用程序打包一段时间内的交易,然后把交易区块,一个又一个的连接起来,保存在每个节点中,不过这中间会用到加密算法保证节点的信息不泄露,保证用户的信息被加密,保证区块儿里面儿的信息不被攻破和篡改
第二,区块链目前的发展,各种项目与意义,现阶段更多是炒币,价值储存没有任何问题。
区块链从2008年比特币的白皮书开始到现在,已经发展了十二,三个年头。中间也经历了各种各样的进化和发展。
比如现在他已经由最初的只能分布式的发货币,到目前巨大的功能拓展。标志性事件就是以太坊智能合约的诞生。
我已经解释过多次,智能合约就是两方或者三方签的一个自动化合同,只要达到条件就自动执行,本质就是无限可能的程序,区块链世界中的判官。程序中可以输入各种功能,有了程序的存在。区块链才变得丰富多彩。
现在的区块链应用主要是这样几个方面,智能合约类,支付类,跨链资产类,预言机类,defi类,web3存储类等等,我简单举两个例子,说一说他的商业应用。
比如defi应用,现在在以太坊上比较火。Defi就是decentralized finance。去中心化金融的缩写。
大概是什么意思呢?就是把现实生活中所有与金融相关的业务,抵押,保险,借贷这些东西全部搬上区块链。
这个领域现在是非常火的,原因很简单。它非常适合于区块链。我说过,区块链上的智能合约就是一个合同,如果合同条件达到,就可以自动触发执行。
过去你可能去银行办理一笔借贷款项会非常的麻烦,签各种字各种验证,而且周末晚上银行有可能还不上班
而区块链的网络是24小时运转的。你想在上面运行各种资产,做各种抵押的买卖,只要点击一下,有一个软件终端就可以。
当然,这中间会把现实资产冻结,映射到虚拟资产上,交易完毕之后,再换回现实资产。这中间还可能用到跨链的技术,预言机的技术,我别的文章有详细的写。
大概就是说通过去中心化的方式把银行砍掉,而直接点对点的交易,交易的安全是通过区块链技术、代码以及密码学保证。
还有就是现在的web3存储类。比如龙头项目fil。他的愿景是把所有的分散的硬盘全部拿出来。把网络上需要存储的数据与信息全部打碎,成为一小块一小块的碎片
然后分布到全网上,未来我们想要用网络数据的时候,就不再需要大的网络数据库或者服务器了。这样互联网的巨头们就无法收取高昂的服务费。也没有办法再垄断。
你想要获得存储信息就在网上和dd打车一样,打车付费,这样网络上的信息可以自由的流转。成本会大幅的下降。
当然这些愿景都比较宏伟,也比较庞大,现在的区块链发展还是非常初期的。还有一些技术难关要攻克,还有一些底层制度要建立,但是这个方向是没有问题的。
比特币这样最初的数字资产项目,现在已经被证明是非常的安全了。就像现在阿富汗的这种情况,我第一个想到的就是比特币。他是第一个暴力不可掠夺的资产。
你的房子有可能被人占了炸了,你的黄金有可能被人抢了。而如果你有比特币,就好办多了。这个东西他抢也抢不走,因为助记词和私钥在你脑子里,甚至他根本就不知道,你脑子里有没有这个东西。想传给你的孩子,只要让他背下来密钥和助记词就可以了。
正是由于现在正处于一个融资和泡沫化的阶段,所以你在网上看到的各种消息还是炒币。
还有,这东西他是一个后台技术,比如现在广东省已经有了区块链的发票,比如现在已经有了一些司法证明上的区块链app,但是对于前段的你来说,你是感受不到的。发票上多了一串哈希编码,你能知道有什么区别吗?
这也就是为什么现在提到区块链,大家都是在炒币,但实际上它是有确定的应用和未来的技术逻辑的。
第三,本质上是信任的机制,价值传递方式, 社会 治理方式 探索 。
区块链的本质价值在哪里?最关键的在于它是一种信用传递的方式。因为信用足够,可以把现实生活中的资产,财产价值在网络上以信息代码的方式进行传播。
主要是这么几个方面。
一是在比特币之前,人们不知道怎么样把一段信息保护下来,因为网上的信息实际上是可以复制的。而比特币解决了信息资产唯一性的问题,有了稀缺,就有了交易和存储的价值。
二是去中心和去中介化。过去我们做任何事情。都需要获得某种中介。比如你去借钱,银行做中介,你去买房子,各类机构以及房产中介作为中介。
你直接买卖是不行的。因为你没有足够的信用。我们一般是来找一个第三方,但是第三方一般也是人组成的,也有可能作恶。
比如前一阵子能打闪电五连鞭那个大师。如果一上来他给你弄各种名号,可能就把你吓住了,直到他被人一拳打的直挺挺的躺在那个地方,你才知道他是个骗子。这就是人的信用,不可靠
区块链通过代码,通过加密学,通过共识机制,保证了信用。我们不再需要一个强大的第三方,注意,这个第三方常常会变成一个垄断的老大。
三是降低协调沟通以及进入门槛的成本。
我们要想变得更加富裕,就需要在市场上进行交易。而交易是需要协调分工的。本质上我们上班的公司,组织机构都是一种中介。
你要通过这种中介整合你的资源,把你的劳动力,把你的脑力,把你的聪明才智转化为最终的产品,到市场上去卖。
区块链技术的智能合约技术可以分散性的把这些合同打散掉。市场上的人们可以自由的组合,建立起新型的,完全透明的,不可篡改规则的dao组织,也就是区块链自治组织。这种组织的未来可能会比普通的股份制公司更加有前景。
你可以随意的加入,或者退出某一个组织,而且你与人之间的信任得到了解决。你可以与别人合作,签订智能合约来完成共同协作,完成某一个产品。而不再担心有某个大的资本家把大家的便宜都给占了,拿到了利润的大头。
所以比特币区块链本质上是一次大的 社会 实验,通过共识机制,通过去中心化的决策方式,通过智能合约的分布式签合同。逐步地,彻底地改变我们这个 社会 本来的面貌。还原市场经济本来的,点对点的,人与人直接交易的理想。
总结一下。区块链就是,信息块儿通过加密算法的方式连接在一起。本质上是一种记账方式,一种网络数据结构
通过去中心化的方式做可以做金融,可以做存储,可以把很多事情都去中心化,但是现在他还非常初期大部分项目还只是在炒币融资和概念开发阶段。
区块链的价值储存能力已经被证明没有问题,非常的安全,暴力不可掠夺。
区块链的本质解决了信用中介问题,同时可以降低人们在一起合作共事的成本,降低准入企业的门槛,提高 社会 的效率,让 社会 的交易规模更大,让我们更加富裕。
推荐下面链接这本书,通俗易懂。像你气筒讲述了区块链诞生的 历史 ,区块链底层的技术逻辑,以及主流的一些项。学点儿区块链的知识,心里比较踏实,不再担心他是不是骗局。
直接在nginx 的 fastcgiconf 中修改
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root//:/tmp/:/proc/";
在$document_root和tmp中间加 / 即可
fil数字货币是以区块链底层技术为发展项目的一种数字货币,就相当于是一种数字资产。fil是IPFS网络上的奖励通证,主要是用来奖励提供存储算力的用户。fil代币共有20亿枚,矿工占70%、官方团队15%、ICO投资者10%、Filecoin基金会:5%。Filecoin项目采用PoSt。PoSt将硬盘上存储数据的大小作为算力让所有矿工公平分配奖励。一、背景
Filecoin是基于IPFS协议开发的分布式网络协议,其开发团队协议实验室(Protocol Labs)曾于2017年下半年完成了257亿美元的融资,投资机构包括红杉资本、DCG集团、斯坦福大学、Andreessen Horowitz、联合广场风投、Winklevoss capital等。
IPFS 是一种点对点、版本化、内容寻址的超媒体传输协议,在 IPFS系统的文件是碎片化的,每个碎片都进行哈希运算(复杂的数学运算)最终有个hash值,把整个文件所有的碎片再hash拼接在一起就可以得到整个文件Hash值,然后大众可以通过最终的哈希值直接浏览完整的文件。文件碎片不是存在一个服务器,而是众多服务器。没有中心化服务器,黑客就无法精准攻击、多服务器可以承受更高数量级用户请求页面加载更快,单个服务器被毁数据可以从其它服务器恢复,保证信息永久保存。基于内容寻址的IPFS协议,比>1 INFORMATICA CLIENT的使用
11 Repository Manager 的使用
111 创建Repository。
前提:
a 在ODBC数据源管理器中新建一个数据源连接至你要创建Repository的数据库(例:jzjxdev)
b 要在你要连接的数据库中新建一个用户(例:name: ETL password: ETL)
现在你可以创建一个Repository了。选择Repository – Create Repository,输入Repository Name(例:JZJX),Database Username(例:etl),Database Password(例:etl),ODBC Data Source(例:jzjxdev),Native Connect String(数据库所在ip例:1412052108)
112 添加Repository。
通过这一步你可以添加别人已经建好的Repository。
选择Repository – Add Repository,输入Repository Name(例:JZJX),Username(例:etl),点击ok就可以看到名为JZJX的Repository在左边的浏览器中,但是此时还看不到它的内容,要看到它的内容或者对它进行 *** 作必须先连接它。
113 添加Folder
选择Folder – Create,输入文件夹名称即可。
12 Designer 的使用
首先连接Repository,可以看到该Repository在Repository Manager中创建的文件夹。
121 Sources
Sources文件夹下的表是抽取的来源表。
导入方法:
选择Tools菜单下的Source Analyzer,然后选择Sources菜单下的Import from database,连接想要连接的数据库,连接上后选择你要抽取的表点击ok你所选择的表就会出现在Sources文件夹下。
说明:上面的导入过程导入的只是表结构,你也可以自己创建来源表,只要你创建的表的结构跟真实存在的那张表的表结构一致就行。
122 Targets
Targets文件夹下的表是抽取的目标表,也就是抽取结果的存放表
导入方法: 选择Tools菜单下的Warehouse Designer,然后选择Targets菜单下的Import from database,连接想要连接的数据库,连接上后选择你要抽取的表点击ok你所选择的表就会出现在Targets文件夹下。
说明:上面的导入过程导入的只是表结构,你也可以自己创建目标表,只要你创建的表的结构跟真实存在的那张表的表结构一致就行。
123 Mappings 的设计
选择Tools菜单下的Mapping Designer才能进行Mapping的设计。
每个Mapping都由来源表,transformation和目标表组成,描述数据抽取的过程。来源表和目标表可以从Sources和Targets文件夹拖拽到工作区,但是transformation一般来说是需要自己创建的。Mapping的设计关键是transformation的使用,它的使用关系到数据抽取的正确性和效率。下面说明各个transformation的作用和用法。
(Active:表示该transformation可以改变通过它的数据的行数;
Passive:表示该transformation不改变通过它的数据的行数;
Connected:表示该transformation要连接到数据流;
Unconnected:表示该transformation可以不连接到数据流)
1231 Source Qualifier
作用:根据查询SQL文从关系表或平坦文件查出所要记录
用法:创建好Source Qualifier(下简称SQ) 后,将需要的用的字段从来源表拖拽到SQ ,双击SQ,对SQ的属性进行设置。
Select Distinct 属性:选中的话表明结果记录将去除重复值;
Tracing Level属性: 共有四级,表示log的复杂程度;
Number Of Sorted Ports属性: 排序的字段个数,值大于0时Sql Query中的sql 文将出现order by 从句;
Sql Filter属性: 属性值将出现在Sql Query属性值的where表达式中;
User Defined Join属性: 用户如果要定义外部连接可在此写(例: {REG_CUSTOMER LEFT OUTER JOIN PURCHASES on
(REG_CUSTOMERCUST_ID = PURCHASESCUST_ID AND PURCHASESAMOUNT > 10000) })
Sql Query属性:值是一条sql 文,session运行时会执行这条sql 文进行查询。
命名方式:SQ_Name
类型:Active/Connected
注意:SQ的输入只能来自来源表; User Defined Join属性值必须用{}括起来;在更改了SQ的属性值之后一定要点击Sql Query属性的
generate sql按钮重新生成sql文。
1232 Update Strategy
作用:决定该行进行插入,删除,更新,忽略中的哪一种 *** 作
用法:创建好Update Strategy(下简称US)后,将需要的用的字段从transformation拖拽到US ,双击US,对US的属性进行设置。US的设
置关键是Update Strategy Expression属性的设置,这个表达式使用IIF 或DECODE 函数对记录的每一行进行判断,为每一行赋予
DD_INSERT,DD_UPDATE,DD_DELETE,DD_REJECT(这四个是常量,值分别为0,1,2,3)中任意一个值,表明该行在数据库中将进行
何种 *** 作。
命名方式:UPD_Name
类型:Active/Connected
注意:mapping中有US时,mapping对应的session的在配置属性时必须把Treat rows属性设置为Data Driven,否则US将不起作用。
1233 Expression
作用:计算一个值
用法:创建好expression_r(下简称EXP)后,将需要的用的字段从来源表拖拽到EXP,双击EXP,
新增输出端口,编辑该端口的表达式。
命名方式:EXP_Name
类型:Passive/Connected
注意:要进行列运算一般用这个transformation; 此种transformation可以使用本地变量
1234 Stored Procedure
作用:调用一个存储过程
用法:创建Stored Procedure(下简称SP)的时候连接数据库选择必要的存储过程。SP有连接和不连接到数据流两种用法。
连接到数据流方式跟一般的transformation类似,通过拖拽端口来实现数据流。
不连接到数据流分表达式调用和Pre-/Post Session两种方式。表达式调用方式中SP被Mapping中另一个transformation 中的表达式
调用。Pre-/Post Session方式就是在Session的属性中配置SP的运行时间,Source Pre-load(Session从源表查询数据之前),Source
Post-load(Session从源表查询数据之后),Target Pre-load(Session将数据插入目标表之前),Target Post-load(Session将
数据插入目标表之后)
命名方式:SP_Name
类型:Passive/Connected or Unconnected
注意:
1235 Sequence Generator
作用:产生主键
用法:创建好Sequence Generator(下简称SEQ)后,双击SEQ,对SEQ的属性进行设置。Start Value属性是开始值,此属性只在选择了
Cycle选项才有效;Increment By 属性值是每次增加的值;End Value属性值是结束值;Current Value属性值是当前开始值;Cycle选
项被选择的话NEXTVAL的值达到End Value值之后会重新从Start Value开始;Reset选项被选择的话,服务器会为每个使用了该SEQ的
session的NEXTVAL值都从Current Value开始。
命名方式:SEQ_Name
类型:Passive/Connected
注意:这是一个只有两个输出端口没有输入端口的transformation;
如果该SEQ时可重复使用的话,不能选择Reset选项。
1236 Aggregator
作用:执行分组聚合运算
用法:创建好Aggregator(下简称AGG)后,将需要的用的字段从其他transformation拖拽到AGG ,双击AGG,在端口tab中每个端口有
group by 选项。钩上想要分组的列,新增端口,编写聚合表达式实现分组聚合运算。
命名方式:AGG_Name
类型:Active/Connected
注意:可使用本地变量
1237 Filter
作用:过滤记录
用法:创建好Filter(下简称FIL)后,将需要的用的字段从transformation拖拽到FIL ,双击FIL,对FIL的属性进行设置。FIL的配置主
要是对Filter Condition的配置,Filter Condition 写入类似where条件的表达式即可。
命名方式:FIL_Name
类型:Active/Connected
注意:
1238 Lookup
作用:查询值
用法:创建Lookup(下简称KP)的时候选择要查询的表。和Stored Procedure一样SP有连接和不连接到数据流两种用法。
连接到数据流方式将要关联查询的字段从其他的transformation拖拽过来,然后双击LKP进行属性的配置。Lookup Policy On
Multiple Match属性表明当查询到多个行时采取取第一行,取第二行,报错中哪个策略Lookup Condition 属性值是查询的条件。
Lookup Sql Override属性值是查询执行的Sql文,我们可以在里面直接写Sql。Lookup Caching Enabled属性表明是否使用缓存,此项
一般选择为好,有利提高效率。Loopup Cache Persistent属性表明是否使用永久的缓存。
命名方式:LKP_Name
类型:Passive/Connected or Unconnected
注意:如果Lookup表的类型是来源表的话,请尽量使用Joiner;
一个已连接的LKP不能再被其他transformation的表达式调用;
如果查询表在session运行过程中不会改变,使用Loopup Cache Persistent属性可提高性能;
尽量不要在Lookup Sql Override中书写order by子句,因为cached LKP默认有order by ;
1239 Joiner
作用:连接查询来自不同数据库的表或平坦文件
用法:创建好Joiner(下简称JNR)后,将需要的用的字段从transformation拖拽到JNR ,双击JNR,对JNR的属性进行设置。用于连接的
两个表一个称为detail表,一个称为master表。JNR属性中可配置Join Type(连接类型)为Normal Join,Master Outer Join,Detail
Outer Join 和Full Outer Join中任意一种。Normal Join相当于常规的inner join; Master Outer Join相当于常规的Detail left
outer join Master;Detail Outer Join相当于常规的Detail right outer join Master; Full Outer Join相当于常规的full outer
join。Join Condition属性值就是常规sql文on 后带的条件。
命名方式:JNR_Name
类型:Active/Connected
注意:尽量使用Normal Join,Master Outer Join这两个的效率比另外两个更好
12310 Normalizer
作用:格式化记录,这些记录可以是来自COBOL源
用法:
命名方式:NRM_Name
类型:Active/Connected
注意:
12311 Router
作用:根据一组表达式将记录分类路由到多个transformation
用法:创建好Router(下简称RTR)后,将需要的用的字段从transformation拖拽到RTR,双击RTR,对RTR的属性进行设置。在Group tab
中添加组,为每组编辑该组的过滤条件。
命名方式:RTR_Name
类型:Active/Connected
注意:组过滤条件表达式的计算值必须是真或者假。
12312 Rank
作用:排序记录,只输出最顶层或最低层的n个记录
用法:创建好Rank(下简称RNK)后,将需要的用的字段从transformation拖拽到RNK,双击RNK,对RNK的属性进行设置。在Ports tab中
有一个名为‘R’的列,选择你要排序的列。你还可以选择你想分组的列。在Properties tab中Top/Bottom属性,Top表示选择顶层的
记录,Bottom表示选择底层的记录; Number Of Ranks属性值是整数,表示要选择的记录条数。假设你在‘R’列中选择了名为’
Price’的列,而且Group By选择了‘Name’列,Top/Bottom属性选择的是‘Top’, Number Of Ranks属性值是2,那么将抽取过程是
这样的:以name分组取出每组中 Price最大的2列记录。
命名方式:RNK_Name
类型:Active/Connected
注意:可以使用本地变量
12313 ERP Source Qualifier
作用:根据查询SQL文从ERP文件查出所要记录
用法:
命名方式:
类型:Active/Connected
注意:
12314 XML Source Qualifier
作用:根据查询SQL文从XML文件查出所要记录
用法:
命名方式:XSQ_Name
类型:Passive/Connected
注意:
124 Mapping Parameters(参数) 和 Variables(变量)的使用
如果你在一个mapping中多次用到同一个值,又或者mapping中要用到一个在session运行才能决定的值,这时候可以使用mapping
parameters或variable。添加参数或变量的方法是:选择Mappings-Parameters and Variables,在窗口新增变量或者参数,并对它的
数据类型,数据大小,初始值进行设置。添加的参数和变量在本mapping的transformation的表达式中就可以使用了。这些参数和变
量的值还可以设置在txt文件中,建session或者batch的时候把这个文件的路径设置在Parameter输入框中就行了。
Mapping参数变量的命名方式:$$NAME
存放参数变量的txt文件的格式:folder_name可写可不写
[folder_namesession_name]
parameter_name=value
variable_name=value
mapplet_nameparameter_name=value
[folder_namesession2_name]
parameter_name=value
variable_name=value
mapplet_namevariable_name=value
[folder2_namesession_name]
parameter_name=value
variable_name=value
mapplet_nameparameter_name=value
125 Mapping 的调试
选择Mappings–Debugger–Start Debugger,在点击‘下一步’的过程中选择调试过程运行在哪台服务器然后为来源表选择数据库,
最后到完成。等调试初始化好之后点击Mappings–Debugger–Continue(或按F5),即可开始调试,选择某个目标表即可看该表的结果
数据。如果还想看中间某个transformation的数据,在开始调试前为该transformation增加一个断点。
13 Server Manager 的使用
131 Register Server(注册服务器)
任何session都必须运行在某个服务器上,所以如果Server Manager里没有服务器的话必须注册一个,当然你也可注册多个服务器。
服务器的注册过程如下:
选择Server Configuration – Register Server,Server输入 的是要注册的服务器的名称;Host Name 输入的是运行了informatica
server的机器名或iprotocol选择TCP/IPort Number输入4001。最下面的是服务器的变量设置,设置的是session或batch运行时一些
文件的存放位置,比如说log文件bad 文件 cache文件,一般不用更改。这样一个服务器就注册到repository了,不过后面你可以双
击它重新编辑。
132 Add DataBase Connection(添加数据库连接)
选择Server Configuration – DataBase Connection,点击Add,然后选择数据库的类型。不同类型的数据库配置起来不一定一样,下面说明Oracle 和SQL Server两种数据库连接的配置。
Oracle类型数据库连接配置:Data Source 输入数据源名称;User Name输入数据库连接的用户名;Password输入数据库连接的密码;Connect String 输入Oracle TNS 服务名。
SQL Server 类型数据库连接配置: Data Source 输入数据源名称;User Name输入数据库连接的用户名;Password输入数据库连接的密码;Database Name输入数据库名称;Server Name输入数据库的ip地址;Domain Name输入数据库的域名。
133 Add Session(添加抽取任务)
Mapping 只是数据抽取过程的设计,要使这个过程运行必须为该Mapping建立对应的session,然后运行该session。选择Operations-Add Session,在窗口中选择一个Mapping点击ok会出现编辑该session的窗口。
Session输入框输入该session的名称;
server选择该session将运行在的服务器;
Treat rows有Insert,Delete,Update,Data Driven四个选项,表明抽取出来的数据在目标表中作何种 *** 作,只有在session对应的mapping中有Update Stategy时才能选择Data Driven而且也必须选择Data Driven;
Source 框选择来源表所在的数据库;
Target Options 中的Insert,Update(as Update),Update(as Insert),Update(else Insert),Delete,Truncate table 选项的意思分别是:将insert作insert *** 作,将Update 作insert *** 作,将Update先做Update *** 作不成功再作insert *** 作,将delete作delete *** 作,在对目标表 *** 作前删除目标表所有数据。这些选项如果与Update Stategy冲突server将以这里的设置为准,也就是说这里的设置可以覆盖Update Stategy的设置;Parameter输入框中输入session要用到的参数或变量的所在文件的路径;其他设置比较简单或者保持原来的值即可,这里就不再详细说明了。除了在添加 session的过程中可编辑session之外,双击已添加的session也对session重新设置。
注:如果mapping 中有Joiner的话,session的编辑窗口的Source Type就变成heterogeneous(不同类),这样就无法通过设置Source
来设置来源表的位置,只能在Source Location tab中为每个来源表设置位置。
134 Add Batch(添加批 *** 作任务)
添加Batch可以将一系列的session串起来,这样就可以让必须按顺序执行的session有序的执行。添加方法:选择Operations-Add Batch,在窗口中对batch进行编辑。Batch输入框中输入batch 的名称;
Parameter输入框中输入batch中的session要用到的参数或变量的所在文件的路径,由于每个session都可以设置自己的parameter,所以batch中可以不设置,即使batch的parameter进行了设置也会被各个session自己的parameter设置所覆盖,但如果session用到了parameter在同一个文件中的话,把parameter文件的位置设置在batch的parameter输入框就显得更方便;Enabled选项表明是否让该batch有效;Concurrent选项表明是否让batch中的所有session并行地运行;Schedule中可设置batch的运行时间和运行频率。
135 Session和Batch 的运行
右键单击要运行的session或者batch,选择start即可让该session或者batch立刻运行。如果你的session或者batch的Schedule设置不是选择的‘Run only on demand’,那么该session或者batch就会在设置完后就处在Scheduled状态,时间一到就会自动运行。(可以右击服务器选择monitor来监视运行在该服务器下的session或者batch当前状态)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)