简述综合性模式成为主流模式的原因几种NOSQL主流数

1.数据管理部分设计概述
To view this video please enable JavaScript, and consider upgrading to a web browser that
Loading...Try the Course for FreeTry the Course for Free如果将软件开发人员看作行走江湖的武侠,那么各种软件开发技术就是武侠赖以傍身的武术秘籍。有的秘籍以易学灵巧见长,练习者很快掌握,并有立竿见影的功效,但失之厚重持久;有的秘籍初学乍练顿显困难,虽冥思苦解仍不得要领,需坚持不断的内功修炼方成正果,却是成为武林大侠必备的至宝。本课程有些类似于后者。
《面向对象技术高级课程》深入、系统、完整地讲解当今主流的面向对象软件开发方法的分析、设计、实现及重构方法,深入讲解UML语言的高级技术细节,以及近年来面向对象方法最新的发展趋势。课程集百家之所言,并结合主讲者最新的研究成果,并通过大量、丰富、完整、不同领域、应用不同技术的案例将其中的关键知识点串联起来,便于理解和应用。
本课程并不拘限于某一特定的面向对象的编程语言的编程技巧,但却包含了基于当前主流的面向对象编程语言的多项完整案例。本课程引导选课同学从更为抽象和共性的模型角度描述现实世界和软件世界,即构建分析与设计模型,之后再将其落实到软件编程实现。这种工程化的理念对于开发大型、复杂、困难、攸关软件系统是非常必要的,也是作为高级程序员、系统分析师、软件架构师等高级软件技术职位所必需具有的素质。
作为一门面向广大受众的中文MOOC课程,本次课程力求向不同需求和背景的朋友呈现中华文化氛围、生动有趣的案例、跨专业的广阔的视野、以及深入实用的技术综合。
同时作为一门传授软件专门知识的MOOC课程,本次课程将为具有编程能力的同学带来有趣的软件开发项目作业,在实际的软件开发中感受学以致用的快乐,体会面向对象方法学的深刻内涵。
本次课程仍将邀请面向对象领域著名学者北京大学信息科学技术学院邵维忠教授和麻志毅副教授讲解某些章节,并对面向对象方法学中的某些关键问题进行讨论。From the lesson好,我们现在开始讲一下这个面向对象系统设计部分的数据管理和 构建部分的设计。 首先是数据管理部分,什么是数据管理部分呢?数据管理就是 涉及到软件系统特有的,与这个永久的存储数据 相关的这部分的一些开发工作,开发设计的工作 所以永久性的存储数据呢那指的就是,那这是计算机 软件系统特有的一个部分,它的很多数据 在执行的时候放在内存中,但是有些需要永久性的保存的数据呢需要保存到硬盘 当中。 如何建立一种映射,然后让这个内存中的对象在需要的时候 把它们保存到硬盘上,并且在需要的时候呢,还要给它们从这个 硬盘空间恢复到内存空间中,这就是数据管理的 主要的工作。 但是数据本身呢,实际上它有 很多的一下数据,结构化的数据,非结构化的数据,因此呢 选用的这个数据管理系统是不同的,有的可以直接用操作系统中的文件系统 有的可以用关系数据库系统,或者面向对象的数据库 注意的是,随着这个云计算 方面的这个不断的这个发展,现在又产生了一种 NoSQL这种数据,这种数据实际上是一种比较新的一种发展趋势,也就是说 不在,特别是一下并发,一些海量数据 实际上呢很难用这个结构化的方式啊,这个来 进行管理,必须得用一些非结构化的数据。 因此呢 就是需要一些这个NoSQL的一些表,NoSQL的表既不同于 我们以前传统的那种BLOB,那种什么图形啊图像 也不同于我们这种结构化的数据,它是非结构化的 这种方式来组织数据之间的,不再存在一种结构化的 一种方式。 所以这些都是需要在,本身数据管理部分也是不断发展变化 这个主要讨论的问题就是如何 持久性的存储对象,这里就是需要一个概念,就是持久对象,永久对象的概念 有些对象,在软件系统当中有些对象呢是 只要在内存中生存就可以了,但是有些对象呢 除了在内存中生存之外呢,有些时候需要在这个内存中被 析构,或者是由于这个开机关机,这个内存中的这个 信息消失的时候,需要把它们保存到硬盘空间中,这部分对象 我们称之为永久对象,需要长期存储的对象,目前看来 这个持久对象的保存只能是通过保存到这个硬盘空间中去 那么由此而来的这个设计,数据库管理部分的设计其实就是 首先呢建立在硬盘空间中的这个 存储的一种格式,不管你是用文件的方式,还是用关系数据库的方式 还是用NoSQLA的方式,还是用其他的一些方式,另外呢除此之外呢 还要建立一种映射机制,就是如何将这个存储在内存中的 这个外存中的这些呃文件,或者说是数据库上的这些对象呢把它们映射到 内存中,然后它们之间建立一种映射关系,这是一套这个机制,对它进行保障,啊。 所以数据库管理部分呢主要大概有这么两种工作 首先呢,要进行数据管理部分的这个设计,首先呢就是需要 要考虑一下这个数据管理系统的选择,目前可以 选择的,传统来说有文件系统,任何操作系统都有文件系统 用文件的方式来存储数据,但是文件本身也有很多的方式 有些呢是一种流式文件,有些是记录型的文件,到底选用什么,这个 有很多的一些考虑啊,另外呢这个就是用数据库 系统,数据库系统又有,分为好多类啊 这个网状的,当然这个比较传统,非常这个传统的,目前来说最 经典的,或者说是用的比较多的就是这个关系型 数据库,关系数据库,但是我们前面也提到 这个随着海量并发大数据 这个云计算的产生的,现在有一些这个NoSQL方面的一些数据 需要用一些NoSQL的一些表格来进行存储,这些呢应当是 目前来看主要的一些问题。 那么如何选择 啊现在是给定一个问题,如何选择这个文件存储系统是 数据库管理系统设计的,这个数据管理部分设计的一个首要考虑的问题啊。 首先文件系统它有一个什么好处呢?就是说它这个 是任何操作系统必带的一个部分,只要你这个 当前啊你这个诶系统是在一个 通用的操作系统上运行的,那么你就可以借用这种操作系统提供的一些文件系统 来进行存储数据。 这个 它的好处是,文件系统呢可以说任何信息都是可以存储的,这些信息包括一些 结构化的数据,非结构化的数据,还有一些呢是一些什么,BLOB,像一些这个 文件,图形文件,视频文件,声音文件,这些都是可以用文件形式进行存储 这个并且呢,这个由于 这个它的这个有些情况我们可以根据 这个当前的这个非功能的需求,就是说一些性能要求 这个存储的时候必须要足够的快,在这个非常短的时间内存储很大的数据 这时候呢可以通过编程的方式,把它通过多线程啊,或者 其他的一些手段来进行保障,并且这个文件格式的设置的时候有很多的一些 可供选择的一些设计方案,可以保障,或者说这个文件本身呢 存得足够大,然后呢可以保障它这个存储时候足够快,或者说呢文件 设计的时候呢非常小,但是呢存储的时候受一点损失,时间受一点损失 所以这是文件系统设计的时候要考虑的问题,但是这些问题如果说是深究起来,那是 相当复杂的,依赖于你不同领域的系统 比如说这个游戏系统,要求在,用户玩家要求保存 的时候要求这个基本上是这个 非常短暂的时间就能保存它当前这个游戏状态,这时候有特定的一些 设计方案。 这是这个文件系统一个特点,就是它可以 任何数据都是支持的,但是呢必须要进行编程,非常严格的 这是第一种方式 这个它优点是什么都可以存,缺点呢就需要 自己编程序啊,不能借用这个已经 存在的一些这个接口,实现一些数据的 存储和提取等工作 另外呢就是这个它适用的 情况,啊就是说对于数据类型非常复杂的时候,不是一种结构化的处理,甚至是一些 大这个BLOB,这些什么图形图像 这些数据,或者说是本身呢这个是非结构化的数据 这是可以自己定义一个文件格式来进行存储,啊。 但是由于 只是在操作系统级别上啊这个来这个存储这个 数据,所以呢很多一些工作,比如说一些完整性啊,一些故障恢复啊 这个事务等等这些问题,实际上都是 这个操作系统本身不可能给你提供非常 这个多的一些支持,所有这些工作如果你需要的话,都需要你通过编程的方式自己 开发,开发人员自己完成,不可能借用那些 一些这个现有的一些机制来实现这种情况 还有一种这个数据 存储系统就是数据库系统,这个大家并不陌生,当然这个 目前主流的来看就是这个关系数据库,仍然还是一个主流 当然还有面向对象,NoSQL等等,这个数据库呢 可以说是这个用来长期存储在计算机内的 这个有组织的、 可共享的大量数据集合。 这个比如说一张数据 表格,这个是如何存储到这个计算机中,如何存储在硬盘中,这个是有固定的一种格式 按它本身的数据库,最底层还是一种,一些这个文件,只不过它除了这个文件之外呢 数据库管理系统呢本身在 存储的一些接口,提取数据的接口,查询的一些接口,并提供了一些 非常完整的一些接口,并且呢还可以支持并发,并支持这个 完整性,甚至是一些这个数据的一些规则 等等,这就是数据库,关系型数据库,因此 因此呢,如果你选用数据库管理系统作为你存储系统,作为你这个 实现数据管理的一个这个数据管理系统的话,那么实际上很多工作都不需要你 开发人员来完成,只需要调用这个数据库管理系统给你提供的一些接口就可以实现,并且它- 可以保证 一些这个多个用户,大量的用户同时访问数据,同时增删改查数据 保证这个数据本身是一个完整的,非常完整,然后不会出现一些这个 逻辑上的错误,这就是数据管理系统 这个目前主流的还是关系型数据库管理系统 关系型数据库实际上就是一种这个 非常常见的,就是我们日常这个生活中看见的 那种二维表,这些称之为关系,它主要是一些实体 和它们的关系组成的,分为列和行,这个 可以用ER图来表示,实体,一个实体就是对应一张表 然后这个关系呢,实际上呢这个 可以映射为多个表之间的这个 连接和运算,包括一对多的,多对多的等等,一对一的这种关系 这个因此呢,这个它可以直接通过ER图过渡过来,当然我们 这个面向对象这个分析设计方法中啊,实际上从类图中也可以映射到 这个关系数据表,这个后面我们讲一些映射的一些规则 为什么这个采取这个关系型数据库呢?它实际上是 我们后面会提到,它实际上是可以非常 好的对这个数据存储、 数据共享和数据完整性维护 起到一个非常好的一个支撑,除了这个给用户提供一些功能性的需求之外 另外呢对于故障恢复,这个事故处理等等都 是非常有利的,但是呢它有一个问题,就是它效率不高 对于一些对这个性能要求非常 高的一些系统,实际上是不适合用一个通用的关系型数据库系统 比如说我们搞一个电厂监控,甚至是这个 这时候对这个功能是非常,数据的存储,吞吐率这个要求 这个性能要求是非常高的,你在这个监控到一个 故障信息之后,然后应该是在非常短的时间内要上传到这个 一些这个监控,监控端,然后由监控人员及时 做出处理。 所以在这种情况下呢,这个关系数据库就不适合了,往往呢 在一些电力啊,在一些控制领域,实际上开发人员是自己开发一套 这个领域,或者说这个系统专有的一套 这个文件管理系统,这套管理系统呢除了具有一些对 一些数据的增删改查的一些作用之外,还有一些对一些数据的完整性,一些这个 完备性,对多个用户共享的时候这个一些控制方面的一些 定义。 所以相当于自己开发一个特定领域的一个 数据,数据库系统,但是呢它这个,由于它是个非常特定的领域,它对性能啊 各方面的指标有些特定的要求,所以这是关系数据库,但是关系数据库 除了这个效率问题呢,就是说它不能,它在存储一些非结构化的数据的时候,像一些BLOB 像一些这个,一些我们现在说的一些这个NoSQL这些 数据的时候还是支持不够的,可以存储,但是呢会带来大量的空间的一些浪费 为解决这个问题呢,可以用面向对象的数据库,或者是一些比较新的一些这个中间件来 支持 另外呢还有一种数据库叫面向对象数据库,这个 所谓面向对象数据库那就是说,跟前面关系型数据库的区别就是,关系型数据库 在这个硬盘中间呢是以二维表的方式来组织数据的 这个,而这个面向对象数据库呢实际上在 内存中和外存中都是以这个对象的方式来组织 数据的,它是封装,这个 实际上呢既存在于这个内存中,也存在于我们的这个硬盘中 也就是它的这个数据结构,在内存中这个对象有哪些数据结构,它的这个结构 搬运到这个硬盘中,它的结构是同构的,至少是相似的 这个因此呢,这个面向对象的数据库是可以存储,既可以存储一些关系 型的一些数据库,结构化的一些数据,另外还可以存储一些非结构化的数据 因为这个对象本身就是一个对象 它有不同的一些结构,既然在内存中能够存储 然后它的这种结构放到外存上也是可以存储的 这个并且呢在这个面向对象数据库中,仍然是用面向对象方法学 进行这个构造的,也就是这里面的什么封装啊,继承啊 聚合啊,操作属性啊,关联啊等等,仍然是沿用过来 所以它实际上是对于编程语言 在这个硬盘空间中的一种扩展 因为编程语言这些面向对象的这种方法学只是 约束在我们的计算机的硬盘,内存空间中 但是现在借助于面向对象数据库呢,可以把这些概念推广到这个另外一个空间,就是硬盘空间中 所以这个使得我们呢,不管是 对处理这个内存中的这个对象,还是处理这个 持久的对象,它们的接口是统一的,这样的话是非常好的一个 方面,并且呢对于我们这个来回的映射数据的时候,那显得非常 轻松了,非常直观了,是没有鸿沟的,是吧,如果用关系数据库的话,它有很大的一个鸿沟- 需要跨越 这个是我们这个面向对象数据库,但是呢 面向对象数据库是一个,从这个理论上来说是一个非常优秀的 非常适合面向对象分析设计这个中进行数据管理的一个 但是呢这个它有一些问题 就是说它实际上为什么,既然这么好的一个 一种技术,为什么现在还没有代替这个 关系数据库,成为一种主流数据库呢?这个我们后面大家可以讨论一下这个问题 下面我们看一下这个图,图中可以非常清晰的看到这个 面向对象数据库和关系数据库的一个区别。 面向对象数据库实际上 是在内存中,或者现实世界中一个实际的对象 然后把它保存到我的硬盘空间中,它这个 对象的结构没有发生变化,只不过这个地址发生了变化而已 把它从这个硬盘空间中,复制到内存空间中,它们的这个 对象的这个,这块儿,这个 结构实际上是完全一样的,复制过来的,然后呢这个 需要的时候再把它放到内存中,也是直接复制过来就可以了 这个因此呢,它这个是非常符合这种一致性的思维方式 使得这个面向对象的方法学不仅局限在这个内存中,而且也扩展到这个 硬盘空间中,而关系型数据库要存储一个对象,那就非常复杂了 就是说需要一定的这个,不是一种这个 纯粹面向对象的一个方法学就能解决的问题 比如说同样是个汽车这个对象 我现在要把汽车这个对象呢在内存中把它存储,把它 存储到我们的硬盘中,我们借用的是关系型数据库,怎么办呢? 实际上就需要把这个汽车打散 本身这个汽车有很多的一些零件 然后有一些车身啊,有一些车轮和发动机啊,是吧 把它们这个打散之后,每一个 部分呢分别建立各种各样的表,比如说这个 汽车本身这个是一个表,汽车整体来看是一个表,然后呢这个轮子 放到另外别的表里面去,然后发动机放到另外一个表里边去,然后 那这时候如何建立一个汽车呢,一个汽车的整体关系,那就是通过 这种关系,表和表之间的关联关系来进行连接,一个汽车对应几个轮子建立一个 这个汽车这个表和这个车轮这个表之间建立一种一对多的这个,利用外键而建立一种关联关- 系和事件 所以它是这样的方式来存储这个 这个汽车的,那么需要的时候把它恢复 把这些数据再恢复到这个内存中来,同样要做一个 相逆的一个过程,也就是把这个通过SQL语言查询 查询到哪个汽车,然后根据这个汽车的关联关系找到几个轮子 然后再找到发动机啊,找到各种各样的这个零件,然后把它们,最后把它们 这个通过在对象中啊,在这个 编程语言中通过new把各种对象组装,然后最后成线成对 产生一个汽车,把它放到内存中运行起来 所以这个,这个需要在面向对象方法学和这个实体关系 这种方法学中来回隐射 因此呢是非常麻烦,非常这个也是这个 这方面的工作呢也是一个非常乏味,非常复杂容易出错的一个问题。 所以 这个从这来看呢,面向对象型数据库它这个相对于关系型数据库 有一个优势。 那么既然有优势的话,那么为什么 面向对象数据库,其实它的这个概念的提出呢也是 从这个上个世纪 90 年代也应该提出来了,并且很多的人 开发出很多的一些原型系统,那么它为什么没有真,最后取代 这个关系型数据库成为主流的这个数据库呢,这个问题呢实际上是个非常复杂的问题,既有技- 术性的问题,也有非技术的 问题。 首先第一点,面向对象数据库是个非常有优势的,在面向对象的这个 开发中是非常有优势的,可以减少很大大量的一些这个 非常冗余的、 非常这个繁琐、 非常乏味的一些 这种 ORM ,这个也就是说这个关系树 呃,这个对象和这个关系之间的这种映射的这种编程的工作量 但是为什么它没有真正成功呢?真正取代这个关系型数据库的这个 这个成为这个主流的这个数据库管理系统,我想呢 原因有这么几个方面:第一点呢就是关系数据库是一个非常优秀的 一种这个从数据存储来看呢,它是一种非常的优秀的一种 这个数据库。 因为呢,它可以这个 将这些所有的一些增删改查,这各种各样的一些业务逻辑呢,都把它们映射到一些 增删改查、 连接、 投影等等这些运算及其复合中,所以呢这是一种 这个,给人一种这个非常这个简单的一种 就是这么几个操作,然后,几种运算,这几种运算的复合可以解决非常复杂的一些问题 所以它的这个本身呢它这个 这个理论是非常简洁的,也是非常实用的 并且呢借助于这种关系数据库的这种理论呢 不仅能够表达我们业务的需求,还可以进行一些非功能 的一些这个,比如说性能的一些优化 比如说现在很多一些商用的一些大型数据库,SQL ,DB2 这个都有什么呢,这个 Oracle,都有 什么,都有一些这个自动优化,它可以自动的进行这个 关系数据库啊,比如说查询啊,一些各种各样的一些事物的一些优化 这些,为什么它能够自动的进行优化呢?是吧,同样一个查询,它认为这个用户如果写的这个 效率不高的话,它可以自动的给你做出优化,那就是得益于它这个 背后的这套关系、 数据的这套运算,这套关系代数 因此呢这个 它的实用性是非常强的,生命力是非常大的 这是第一点,但是面向对象这个东西呢,实际上这个 至今为止没有一个建立起一个非常完备的一个 形式化的这种理论来表示,即使有的话也过于繁琐,实用性不高,无法这个 用来进行这个商业的或者这种实用的一些大型数据的一些 优化。 这个因此呢 这个尽管它在这个表示上,它在这个真正编程,终端编程的时候是非常简单的,但是呢 但是一旦涉及到非常大量的数据之间需要进行很大的优化的话,它 无法自动完成。 这是第一点。 第二点呢就是 关系型数据库它是早于面向对象数据库 这个发展起来的,也就是说它这个时机是非常好的,这个发展起来了,也就是它 这个时机正好是在这个软件或者计算机从这个 这个,这种这个科学计算 像这个日常、 生活商业处理 在这个时代的时候产生,突然有个关系数据库产生 所以一经产生呢,这个为大量的什么,银行啊、 商业啊、 证券啊这些这个 甚至是一些各种各样的企业,大型企业 所使用,基本上已经深入到了这个各个 各个领域中了,但是你现在面向对象又提出一个新的面向对象数据库来 这时候呢,它会产生一定的问题。 就是说这个,如果我迁移到面向对象数据库会不会带来一些 这个数据的丢失啊,或者说一些出现 各种一些问题呀,你像各种银行系统,是吧,它这数据就 绝对不能丢失,一旦丢失会出现一些大问题,这个使得这个 本身用户的角度来看呢,他不愿意这个尝试面向对象新的一种数据库,因为这个数据 对于他们来说是非常珍贵。 这是第二个问题 再就是关系型数据库,第三个问题就是关系数据库 实际上呢也是不断发展。 就是现在的面向对象,这个关系型数据库啊,各种这个商业 公司,什么 Oracle DB2 ,啊,这是 这些数据库呢实际上在与面向对象数据库的一个 并行发展的过程中,它也借鉴了面向对象数据中的一些 特点。 比如说这个现在这些商用的数据库啊,这个还支持一些 XML 数据库,XML 就可以支持一些结构,非结构化或者半结构化这个数据 就是说,就是这个它既然能够支持 XML 数据库,它就可以 在一定程度上呢就可以这个克服原先它不能支持一些非结构化数据的一些 一些这个情况,并且呢这个它在这个 很多的一些在这个关系表这一列中呢,它也引入了一些面向对象这个一些这个 方法的一些这个一些小的一些改进,比如在这一列中啊,写一些规则 这个表示一些上下文有关的这种规则,就是相当于这个对象中的一些操作 实际上这些东西呢都可以,都是对这个 在不打破这个关系数据库的一些最 基础的一些这个前提下,这个向面向对象的一些数据库,进行一定的调整 因此呢,这是第三个问题,就是说它本身也是不断发展 它也在这个发展中,漫长的发展中它吸收了面向对象数据库中的一些特点 所以呢,它就是目前看来呢这个主流的这个 数据库管理系统还是关系型数据库,而面向对象数据库呢还是处在一个 这个原型化或者说是对一些实验性的系统来说呢,还是可以使用它 再就是,如果说还有一点呢,就是说这个实际上在这个 ORM 这个东西 实际上如果说完全用手工编程的话来实现的话是非常 繁琐的一个过程,但是呢现在呢 有一些框架,像 Java 其它一些编程语言中啊 还有一些什么 Hibernate 它们一些框架呢 可以在这个表示层面,也就是说可以在这个编程层面呢这个极大的 这个简化这种关系数据库和面向对象之间的这种鸿沟 你像这个,就是说我在编程的时候实际上完全可以 以一种这个对象方式来这个 访问,来这个 处理这个硬盘中的一些数据,但实际上本身这些数据呢,以 真正在内存中,真正在这个硬盘中存储的时候呢,却是以 一种这个关系表的方式,相当于一种虚拟化,是吧。 就是这个这个对于编程人员 来说,给编程人员提供的这套这个视角来看呢,他看的时候这些 这些这个,这些对象全部都是以对象的视角来进行观看,因此是非常方便的 正是由于这个,实际上就没必要,或者说在一定程度上减缓了 这个真正要变革这个关系数据库这个 这种这个这要求,所以 等等这些因素加起来,有这个技术 的、 有商业的,这个使得面向对象数据库呢 真正在,没有真正成为一种主流的数据,啊 但是对一些开发一些原型系统啊,或者说一些实验性系统 它确实是有一些这个各种各样的一些这个数据库管理系统,面向对象数据库来进行支持 好,总结一下呢就是 有这么刚才我们讲到这几点,就是第一点就是文件系统 首先是比较廉价,不需要在额外的购买一些商用的一些 中间件啊,一些这个数据库管理系统的一些支持 并且存储的数据没有特定的这个限,类型限制,什么都可以 存储,只要是这个都可以作为这种文件来进行存储。 但是呢这个 本身呢,第一点缺点就是说,数据完整 性和数据共享这个支持是不够的。 比如说你在 这个,你在这一个单机版的系统下,我们这个上节课也提到了 是吧,编写一个教务软件,这个教务软件借助于操作系统提供的便利,它是可以 这个同时在一个机器点上,一个 PC 上打开多个线程,多个进程来实现这个 同时编辑这个 多条记录的。 但实际上最后存储的时候呢,往往是最后存储的那个 充掉了以前存储的,这是为什么呢?就是因为你如果不用 编程的方式来这个进行这种数据完整性的这种控制的话 它完全借助于操作系统给你的那套文件系统,实际上是达不到这个要求的 所以很多情况下,自行开发的工作量是非常大的,但是呢它这个有些时候在专用的系统中啊 如果说效率优先的情况下,没有必要,没有办法使用一些商业的一些 这个数据库管理系统,这时候还需要自己开发这种文件系统 关系型数据库呢,技术是非常成熟的了,前面我们提到很多了 但是呢,它需要很多的这个计算机资源,因为关系型数据库运行起来它是一个进程 然后另外的一个进程呢,是这个我这个程序,这个现在应用系统,这个相当于进程和进程之间- 的这种通信 不管你用什么方式,但总比这个进程内的这个通信要慢得多,所以处理速度慢 再加上又是这个需要在这个数据管理的时候要 要考虑到一些数据完整性啊、 这个并发性啊,等等一些问题,所以这个 速度是不是很快的,非常适合一些这个 像搞这个电子政务,电子商务,这些这个 Web 应用开发来说比较适合 但是对于一些控制呀,对于一些性能要求非常高的一些领域往往是不太适合的 另外呢对于非结构的数据来说,对于关系型数据库来说,存储是非常 难的一个问题,是吧。 可以存但是呢会造成大量的空间的一些浪费,这样的话呢,这个 如果数据非常大的话呢,这个存储起来也是非常麻烦的一个事情。 另外就是还有,就是还有一个 需要这个 ORM ,需要额外的一些这个编程 面向对象数据库来说呢,这个从理论上来说没有鸿沟,这个 原则上呢也适用各种数据,因为我们知道不管结构 化数据,非结构化数据都可以用面向对象的这种方式来进行 在内存中进行这个管理,然后把这个 这种理念推广到硬盘中,同样也是可以的。 但是呢 这个刚才我们也提到了,是吧。 它的这个 从这个真正实用的这个角度来看,还是不够成熟的 就是并且呢这个 没有一个统一的标准,你像这个关系型数据库有一个 SQL 这是一个非常统一的标准,对面向对象数据库呢没有一个统一的标准,或者即使有的话呢,也是 没有形成一种很大的一个影响力。 所以 这个这就造成了这个面向对象数据库呢很可能就是一个 厂商开发出来一个关系型数据库呢,但是其他厂商无法兼容,这个 不知道你这如何,其它的一些这个一些这个 比如说一些这个编程,编程环境的厂商无法兼容,这样的 造成很大的一些问题。 所以在选择的时候呢 要求这个适当的选择,根据不同的系统的需求 这是,选择完了之后呢,就是就可以这个进入下,下面的一个 Try the Course for Free
Join for free and get personalized recommendations, updates and offers.Get StartedCoursera provides universal access to the world’s best education,
partnering with top universities and organizations to offer courses online.(C) 2018 Coursera Inc. All rights reserved.

我要回帖

更多关于 简述美国主流动画片的主题 的文章

 

随机推荐