学习Oracle数据库的心得体会

学习Oracle数据库的心得体会,第1张

学习数据库对我来说是一直都计划学的 没接触的时候总是觉得它比较深奥或是不可接近的电脑知识 尽管自己对电脑非常感兴趣 其实还是有些心理上的陌生感 学习电脑就和我们平时的其它科目学习一样感觉它有永无止境的知识 在这从初接触电脑时连个电脑的键盘都不敢动到现在连硬盘都也修理 其中的过程是多么长啊 数据库是我在高中时候听过 到了大学渐渐了解了些 但就其原理性的内容还不知道 也就是根本就不清楚什么是数据库 只是知道一个所谓的中国字典里的名词 我认识它是从我接触网页制作开始的 初用FrontPage做网页也就是弄几个框图 没什么东西但还觉得不错 后来听朋友说这是最简单最普通的东东 朋友告诉我真真的网页起码也用到数据库这些东西了 有什么前台的后台的 听我的都晕头转向了 感觉自己是一个长不大的菜鸟了 之后我就去查找相关资料发现在数据库有很多种 这才对它有所了解     大一 大二的时候想学可不知道怎么学 从什么地方学起 当时也没注意选课本上有这类的课程 到了大三正式的课程也轻松些了 仔细观摩了选修课发现有数据库 有数据库原理和Oracle数据库 当时感觉Oracle数据库既然是单独一门课程一定会讲的比较细 也能学到真正实用的内容 选上了这门课以后发现和我想的基本是一样的 老师对学生也比较和蔼可亲 对我们要求也不是很紧 让每个人都觉得轻轻松松就能把这门课程学完 没有多么紧张的作业 也没有太苛刻的要求     当老师在最后说这个课程结束了 回顾一下以前老师给我们讲过的东西 真的有很多是我们应该去注意的 学习完Oracle数据库后感觉Oracle可分两大块 一块是开发 一块是管理 开发主要是写写存储过程 触发器什么的 还有就是用Oracle的Develop工具做form 有点类似于程序员 当然我可不是什么程序员 有几个程序员朋友他们是我的偶像 开发还需要有较强的逻辑思维和创造能力 自己没有真正做过 但感觉应该会比较辛苦 是青春饭 管理则需要对Oracle数据库的原理有深刻的认识 有全局 *** 纵的能力和紧密的思维 责任较大 因为一个小的失误就会down掉整个数据库 相对前者来说 后者更看重经验 这些东西都是从老师哪里和朋友的讨论中得到的心得 也希望其他朋友能多多向老师和朋友请教 如果是个人单独靠自己来完成一个完美的数据库我觉得比较困难 现在基本上都是团队类型的 而且他们的效率高开发的周期也快 在烟台的 NET俱乐部认识几个比较历害的人 他们的团队精神我比较佩服 像我这样一个大学生和他们说起来太菜了 由于数据库管理的责任重大 很少公司愿意请一个刚刚接触Oracle的人去管理数据库 对于我们这些初出茅庐的新手来说 个人认为可以先选择做开发 有一定经验后转型 去做数据库的管理 当然 这个还是要看人个的实际情况来定 其实在烟台大学里学生中有做的好的也是有 只不过通常象这些兄弟们我觉得很少能发现在 因为我只知道一个 在烟雨楼台的BBS版块里有个程序版块 这位版主以前就是学校网络中心的牛人 他曾告诉我学习的方法就是 看书 思考 写笔记 做实验 再思考 再写笔记 我觉得说的很对 对于新手来说就要这样 不断的去努力奋斗 最后一定能得到自己想要的成果     对于学习Oracle数据库从网络上找资料我认为是比较好的 现在的网络又这么的发达应该去充分利用 我知道Oracle的官方网站 这里有Oracle的各种版本的数据库 应用工具和权威的官方文档 虽然我是个新手 但是常到哪些相关的数据库论坛或是网站觉得每次的收获都不小 网络对我来说可是个重要的东西 除了Oracle数据库对于其它的一些电脑知识都从网络里学习了不少 我常用的一个搜索网站就是大家都熟悉的百度了()     以前没接触过它 现在认识了它才知道Oracle的体系很庞大 要学习它 首先要了解Oracle的框架 它有物理结构(由控制文件 数据文件 重做日志文件 参数文件 归档文件 密码文件组成) 逻辑结构(表空间 段 区 块) 内存分配(SGA和PGA)算机的实际内存中得以分配 如果实际内存不够再往虚拟内存中写 后台进程(数据写进程 日志写进程 系统监控 进程监控 检查点进程 归档进程 服务进程 用户进程) SCN(System Change Number) 这些东西感觉都比较专业 我对它们也就是个知道 想要真真去认识我还得努力去做 虽然懂得还不是很多 起码会了基本的软件 *** 作 老师说我们用的都是客户端 服务端看不到 也不知道服务端是什么样的 只知道客户端就挺多东西的 没有真正的去学习利用是很难掌握的      Oracle数据库的学习使我对数据库的有了新的进步 以后再看到也就不至于什么也不懂 其实那么多数据库我觉得学好一门就行 只是他们的语言可能不大一样 学好一门后就可去认识其它的 这样应该有事半功倍的效果 就像我学习C语言 当时不能说是学习的棒 但不算差 所以我对以后的语言感觉都不是很困难 了解了VB C++还有网页中用的Html语言 asp语言都能看懂 起码可以对别人的东西进行了一下修改 因此 我感谢Oracle数据库老师给了我有用的知识 以便我在以后学习或认识更多的内容能有新的方法和思维 也能更加有效和快速的去消化吸收新的东西 希望在今后中 Oracle能给我更多帮助 让我在我熟悉的VB中运用上去 我以前的一个目标是要为学校的选课做一个选课助手来帮助大学 就用我的VB 不过因为种种原因一直没有完成 也包括我对数据库的不了解 因为学了Oracle以后知道第一项内容是通过SQL查询后得到的 如果去把它们联系起来还不是真正明白 不过我相信我的目标能在学习Oracle后得到进展 lishixinzhi/Article/program/Oracle/201311/18934

其实早期得互联网公司曾经不仅是Oracle   客户,还都是大客户,最典型的代表有两个,一个是亚马逊,一个是阿里巴巴,后来两者都纷纷去掉了O,可见并不是什么ZZ因素,一定有一些原因,我们一起来逐步拨开看看:

 1Oracle数据库到底是为什么设计的? 

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里面的代码是否还在?  

不用安装2个数据库,只需要安装1个数据库就行了,Oracle数据库支持多个实例,你只需要配置不同实例就行,或者你实在搞不懂实例这个玩意,你就装2台虚拟服务器,直接 *** 作2个不同服务器上的2个表就行了,数据库之间的数据同步问题不是程序员的工作,那是DBA的事情,你要分清楚事情,然后再 *** 作,不然你事情做了,别人还说的多事。

以上就是关于学习Oracle数据库的心得体会全部的内容,包括:学习Oracle数据库的心得体会、为什么传统行业几乎都用Oracle,而互联网行业几乎都不用Oracle呢、ssm框架项目 要配置两个oracle数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9356440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存