数据库可分为关系型的和非关系型,MySQL和Oracle就是常见的关系型数据库。那么什么是关系型数据库,什么是的非关系型数据库呢?
关系型和非关系型数据库的定义和区别
关系型和非关系型的区别就是数据的存储方式,简单的理解就是关系型数据库所呈现数据结构是表,由二维表及其之间的联系所组成的一个数据组织,可以将关系理解为表,关系型就是表格型式的,数据存储在数据表的行和列中。非关系型数据库应该理解为一种数据结构化存储方法的集合,大块数据组合在一起,可以是文档或者键值对图结构等,属于分布式存储。
关系型数据库和非关系型数据的优缺点
关系型数据库容易理解,二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解,可以使用SQL语言进行数据库的操作,便于维护,但同时也有一些缺点就是其读写性能比较差,数据结构固定,对海量数据的处理不尽人意。
非关系型数据库由于无需sql层的解析所以读写性能很高再加上它是基于键值对的,数据没有耦合性,容易扩展。数据的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等。但是它不提供sql支持,学习和使用成本较高,无事务处理。
目前常见的关系型和非关系型数据库
关系型数据库:
Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL
非关系型数据库:
NoSql、Cloudant、MongoDb、redis、HBase
为什么传统行业几乎都用Oracle,而互联网行业几乎都不用Oracle呢?
银行等传统行业很多都是直接买的Oracle,还有weblogic等等这一类,付费不开源的软件。而新兴互联网行业几乎都是用MySQL tomcat springboot这些。对于开源软件不可控的问题,互联网公司同样也要面临,对于使用spring tomcat MySQL这些似乎也没出过什么问题。难道是传统行业人傻钱多,就是懒得招人来搭框架直接买个现成的能用就行?但是招个普通程序猿来装MySQL,似乎才是性价比更高的方案啊?Oracle weblogic就算有技术上领先的地方,觉得传统行业那些人多半也不懂。求解求解。
首先银行要求绝对稳定性,使用付费不开源产品可以完全责任委托,而且数据库厂商还会有专门维护,省心,省力,安全。
mysql呢,开源产品,稳定性没有o高,如果要深度开发倒是很省事,不过使用mysql就完全要看自己了,银行不会为了一个随时都有可能出现意外的定时炸弹找专门团队维护,而且银行交易量很大,但并非像互联网应用一样超级并发,大部分都是内部接口使用,而且分地区都是不同的服务器,每个地区只存储自己相关的数据,比如你从广东给山东异地转账,原始山东账户里并不存你的记录,转了之后山东数据库才有记录,在依赖oracle商业委托的基础下,银行还会有对账,来保证数据一致性。
但是反观互联网企业就不一样了,超级并发,小型机已经不满足这种并发条件了,哪怕oracle足够优秀,所以要使用应对更高并发特制的mysql,需要有专业的团队进行维护,稳定性不如oracle,不过分布式集群可以避免这种情况。而且mysql因为开源还可以针对自己的需求特制功能。不过大部分企业用不上[捂脸],小公司用啥都一样。阿里重新开发mysql除了自己用外还可以卖服务。
再说一句,阿里其实弃o选m其实除了并发问题,还因为oracle太贵,因为企业要考虑收支,就算阿里利润率也比不上银行[灵光一闪]
零基础怎样学好Oracle数据库?
学习好ORACLE,首先要学习ORACLE体系结构。1、如果有一定的数据库基础,知道SQL是怎么回事,即使写不出来简单的SQL,但可以看动它们,你就可以跳到2。否则请先看一下数据库基础和SQL语言,不需要很深,更不需要去记忆那些复杂的SQL命令,这些可以留在以后边应用边学习、记忆。2、要想学好ORACLE,首先要学习ORACLE的体系结构,现在你不需要深入理解它们,但要分清几个关键的概念:instance & database,memory structure , process & those files ,such as data file, control file, init parameter file etc以及database , tablespace , data file和tablespace, segmnet, extent & block它们之间的关系。当然还要分清undo tablespace & redo log file等,对于很多初学者来说,能够对这些概念有个较为清晰的认识并不是一件容易的事,而这些并非Oracle的全部。3、2是有关ORACLE的基本概念,下面要学习的是一些简单的的实际操作,就是如何去管理ORACLE数据库,当然不是管理全部的ORACLE。在此过程中你将对SQL和ORACLE体系结构有个更深入的了解。4、到了这一步你基本上算是初步掌握了ORACLE,下面将要根据你的方向来具体学习其它的ORACLE知识了。如果你是开发人员,则需要更多地去学习PL/SQL以及DEVELOPER,而这将是一门新的课程。如果你是一名DBA,请继续。5、现在你可以根据自己的实际情况,进行有选择的学习,也就是说下面的内容没有特别顺序要求。可以选择深入学习ORACLE管理、ORACLE备份与恢复、ORACLE性能调整、网络等。当然在学习这些知识的过程中,如果有实际的工作更好,这样你可以在实际中成长,学会TROUBLE SHOOTING。6、当然在学习的过程中,你可以在网站或IT论坛中与他人进行交流,可以看数据库开发论坛的一些经验文章,也可以自己写一些心得体会。