《Oracle数据库编程经典300例教材》百度网盘pdf最新全集下载:
链接:https://pan.baidu.com/s/1FfyxVVFyyhu2RpOExyMFnw
?pwd=rj7l 提取码:rj7l简介:Oracle数据库是目前世界上使用最为广泛的数据库管理系统,具有完整的数据管理功能;PL/SQL是Oracle对标准数据库语言SQL的过程化扩充,让Oracle的数据管理和程序设计效率更高
其实早期得互联网公司曾经不仅是Oracle 客户,还都是大客户,最典型的代表有两个,一个是亚马逊,一个是阿里巴巴,后来两者都纷纷去掉了O,可见并不是什么ZZ因素,一定有一些原因,我们一起来逐步拨开看看:
1.Oracle数据库到底是为什么设计的?
Oracle数据库的理论源于1970年的一个论文, "A Relational Model of Data for Large Shared Data Banks". 在这个论文中,提出了一个数据库的经典模型,也就是今天所谓的关系行数据库 Relational Database. 这个论文,在当时验证了关系模型的一些优势。后来IBM基于这个论文开发了一个东西,叫SQL语言。 但是很奇怪的是,IBM没有更快的基于SQL语言去开发一个数据库,而Oracle在1979年第一个开发了商业级支持SQL语言的数据库产品。 当时,数据库主要处理的一个核心问题,就是几个特点ACID,鉴于篇幅,我们无法论述其中的意思,但是其中最有意思的就是一致性的C。什么意思呢,就是以银行交易为例,你如果在取钱的一瞬间查询余额有500,这个时候你取款,但是你恰好也告诉你家人在同一时间查询,如果查询到有500,他们也同时取款,会不会都成功呢?这个一致性的问题,对于银行要求是强一致性,也就是不能有半点差错。
2. 互联网时代需要的数据库是什么?
到了互联网时代,情况突然变了。比如我们都喜欢的知乎,微博这些信息流的App。 如果我发帖的瞬间,同时可能有很多人都在发帖,如果我们的App在全世界都在用,瞬间的用量峰值可能会因为某个热点事件突然变得很高,这个和上世纪80年代的企业级应用完全不同,即便是银行,我们还是可以保证当时的峰值大概有多少,因为营业点和ATM机的数量也是有限的,那时候你无法在手机上直接处理任何一笔交易。但是互联网的到来改变了一切,这个峰值不仅难以预估,而且可能和平时的平均值差别巨大。这样为了确保一个峰值,就去购买峰值所需的Oracle的License数量可能特别大。(Oracle是按照一个类似CPU数量或者用户数量来确定价格,你可以简单理解为用的峰值越高,你需要买的license越贵),这是一笔巨大的花费不说,而且还有另外一个问题。
3. 互联网时代的应用需求不同。
在我之前的一个回答里面写道了, 亚马逊工程师在优化自身的数据库的时候, 他们发现“:” 大约70%的 *** 作是键值类型的,其中只使用主键,只返回一行。大约20%的用户会返回一组行,但仍然只对单个表进行 *** 作。“这是一个伟大的发现——70%的 *** 作竟然都没有使用关系数据库的核心功能!为什么会这样呢?因为互联网时代的应用发生了变化。我举个例子,你如果设计一个类似亚马逊的电商网站的购物车,你允许客户把自己想买的东西放在里面。但是你设想一下,如果突然某个畅销的产品被卖家下架了,但是这个产品被很多的客户放在购物车里,你回想一下,银行交易需要确保的那种强一致性,在这里有必要么?如果你想强一致性,就需要这个商品下架的时候,清空每一个曾经加入购物车的这个商品。这样任何一个修改产品的 *** 作,都可能有无数个关联的交易在那里等着更新,可能商品的目录更新这个事情,就会变得巨慢无比,而且毫无意义。为什么说毫无意义呢,比如我在9点购物车放了一部手机,到10点商家卖光了,把这个产品下架了,这个时候如果商家只是在自己店面的页面更新,但是你的购物车并不实时更新,即使最差的情况是什么呢,就是10点的同时,你提交了一个购买的请求,这个购买的请求是需要保持一致性的,这个时候商家会返回一个失败,因为这个商品不存在。你再刷新一看,哦,卖光了。。。你的用户体验丝毫不受影响。再比如互联网的微博,如果我发一个微博就发上去,更新的时候,我不需要强一致性更新,那么可能和我距离近的朋友第一时间看到了,距离远的朋友可能稍晚一些看到了,有关系么?基本没什么影响,这些叫做分布式处理的方式在互联网应用非常普遍。
4. 互联网时代有了更多选择
一方面开源数据库逐步成熟,MySQL, Postgre这些后期之辈,陆续成熟且有越来越多的程序员能够熟练掌握,并且利用开源实现接近商业数据库的能力;另外一个方面,云厂商的出现让这个门槛更低,你不敢保证MySQL使用达到商业数据库的可靠性,你可以借助云厂商的产品,比如亚马逊云计算的托管数据库Aurora(兼容MySQL),这里非广告,只是告诉大家这种云厂商的产品让你用开源,性能和商业数据库接近,并且价格低廉,且无需运维或者很少运维成本,这样的情况下,中小互联网厂商就更多采用云厂商的托管开源数据库,自然不用Oracle这么昂贵的产品。
5. 数据发生了变化
前面讲到微博这种信息流的数据格式很明显和银行交易类的关系格式有重大区别。其实互联网时代,日志,物联网等产生了更多奇怪的数据格式,比如时序数据,一个物联网的温度计,可能每一毫秒钟发一个温度信息,你如果拿关系数据库去存,可能很快就爆表了。。。但是物联网就是这样,而且这种数据几乎从不更改,就是按照时间序列一直存。比如股票交易所的大盘数据也是类似,这种特殊数据格式带来的需求在过去可能用关系数据库凑合一下就可以了,但是今天,越来越多的不同类型格式需求,就需要按需设计和采用不同的数据库。这些数据库因为有云的托管,你也不太需要运维,这样采用的成本也不高,比如亚马逊aws的Timestream数据库,官方号称两百万次写入1KB的数据,价格才一美金,于是,越来越多的企业开始按需去采用专门构建的数据库,而且大量采用云上托管,这些都不是Oracle数据库可以做的。
所以,各方面的综合因素,导致今天的Oracle跟不上时代,也就逐步被慢慢取代了。前几天,看到Gartner的全球数据库市场排名,亚马逊AWS取代了Oracle在全球数据库厂商的位置,一个时代就这样慢慢的被改变了,不知道我当时在Oracle 10g某个Package里面的代码是否还在?
Oracle的学习主要有两个路线。一个是Oracle的开发,主要用到Sql语句,一般来说做开发的都要用到其他的开发语言,如PB、VB、VC、Java、Delphi、.net等等,这样来配合使用开发C/S和B/s架构的程序。
一个是Oracle的管理,也就是人们常说的DBA,英文Database Administrator.
主要是维护数据库的工作。只用学会SQL语句和Oracle的结构等就可以了。
DBA需要对Oracle有一个很深的认识,否则难成大器。
而Oracle开发的话,相对来说不一定对Oracle有太深 的了解,当然你懂得越多,开发出来的肯定会越好。
可以找一本oracle的书看看
如果有人可以请教当然更好
oracle是数据库中经典的也是最抽象的,呵呵
要有心理准备
不过现在好像出新版的了,应该会改进一些
先学SQL和PL/SQL,这个是基础。如果没学过数据库基本原理的话,一定要先学数据库基本原理。买本《数据库原理》,看表、索引、SQL、锁这些基本知识,范式什么的就先不用看。然后买Oracle的书,我以前学的时候买了那种很厚的详细对其管理器上界面的每个细节做介绍的书,结果发现看得很累,而且看完了根本就没学到任何有实质的东西。因此,我还是推荐你买那种深入浅出介绍数据库管理基本知识的书,它们会使你真正了解Oracle的内涵,刚开始时最好选薄点的书,对其能有个概要的了解。(比如《Oracle DBA入门》和高职高专教材《Oracle数据库管理教程》),这些书很简单,能帮助你快速上手。接下来你可以买《Oracle 9i/10g DBA资格认证考试教材》等书来看。从一开始,你就应该下载一个Oracle装上,自己多玩。尽量多用SQL Plus等命令行方式来管理,对界面大致了解就好了。脚本才是Oracle管理的王道!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)