首页 > 数据库 >面向对象数据库和NoSQL

面向对象数据库和NoSQL

时间:2022-08-26 16:35:20浏览次数:109  
标签:关系 NoSQL 程序员 对象 数据库 面向对象 关系数据库

先来说说对象数据库。定义参见维基:http://zh.wikipedia.org/zh/%E5%AF%B9%E8%B1%A1%E6%95%B0%E6%8D%AE%E5%BA%93

一个数据库的持久性整体规划通常都是不成套的。各种ORM(对象关系映射)工具都能更容易地进行对象和数据结构之间的转换,但没有一个是完美的。这就是通常所说的“ORM Impedance Mismatch(阻抗不匹配)”。于是吗,关系型数据库对于程序员的设计始终有相当大的限制,有的人擅长从领域模型去设计程序,有的人喜好从数据存储层面去设计代码。在对象数据库中,可以显式避免了一些传统关系数据库的使用方式,比如连表查询等,对于一些对象系统复杂,对象之间关系层次众多的场合,对象数据库有其独到的优势。

关系型数据库有比我们想的更多的局限性。存储和表示一些相当普通的数据结构也是非常困难的。试想一条公交线路——简单,有序的一组站点。关系型数据库以无序的方式存放表,只有创建一个特殊的索引,才能提取有序的数据。对象数据库就没有这个问题,它有有序的数组,不需要索引——这种索引是因为关系数据结构的局限性而要求创建的人工索引。

从设计的角度来看,很多程序员不得不通过一定的设计,尽量避免过多的级联对象一次从关系数据库中查出,以减少这种低性能的操作;而对于天然的对象,为了把它们放置到数据库中,程序员不得不把它们拆卸得乱七八糟,然后通过一个个关联表把它们再从逻辑上关联起来,这些都是。使用对象数据库,程序员可以更接近天然的认知,减少思维在上层代码到底层数据之间的转换。

 

再来说说NoSQL。NoSQL有人解释为Not Only SQL,它是在Web2.0的环境下产生的。入门材料可以参看Robbin的文章:http://robbin.javaeye.com/blog/524977

另外,首先在这里找资料:http://nosql-database.org/

关系数据库在应对互联网海量数据时,对于高并发、快读写和易扩展等方面渐渐显得力不从心(例如:Facebook's 50 TB for inbox search, and eBay's 2 PB overall data);而另一方面,关系数据库本身具备的一致性、读写实时性等优势,反而不能施展了(比如我发表了一条评论,某人到了十分钟后才看到,也没有什么不妥)。

对于严谨的银行、医疗等行业,关系数据库还无可替代,但到了宽容和自由的互联网应用,NoSQL就准备好驰骋天下了。“关系型数据库给你强加了太多东西。它们要你强行修改对象数据,以满足RDBMS (relational database management system,关系型数据库管理系统)的需要,”在NoSQL拥护者们看来,基于NoSQL的替代方案“只是给你所需要的”。

据Facebook的工程师Avinash Lakshma介绍,Cassandra仅用0.12毫秒就可以写入50GB的数据,比MySQL快了超过2500倍。NoSQL和对象数据库一样,都能找到适合自己发挥的领域,至少现在看来没有谁能在某一天取代关系数据库。不过从数据库的应用来看,关系数据库已经不再处于垄断地位,也许过两三年,等云计算愈演愈烈的时候,那情况又有谁知道呢?
————————————————
版权声明:本文为CSDN博主「RayChase」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/raychase/article/details/6214347

标签:关系,NoSQL,程序员,对象,数据库,面向对象,关系数据库
From: https://www.cnblogs.com/jmbt/p/16627958.html

相关文章

  • 数据库-连接(自然连接,内连接,外连接)知识点回顾
    1、自然连接(naturaljoin)自然连接是一种特殊的等值连接,他要求两个关系表中进行连接的必须是相同的属性列(名字相同),无须添加连接条件,并且在结果中消除重复的属性列。 ......
  • Derby 数据库 客户端 ij使用
     Derby数据库是由Apache下的一个开源的DB项目,与其它DB相比,它有如下的优点:  1.完全用Java实现  2.支持JDBC及SQL标准  3.全部文件只有2M左右  4.提供嵌入......
  • 如何保证数据库和缓存双写一致性
     数据库和缓存(redis)双写一致性问题,不管你用何种语言,尤其是在高并发的场景下,这个问题会很容易被放大。无论是在工作中,还是在面试中遇到这种问题的概率都非常大,因......
  • geopandas 把 shp 文件入库到 postgis 数据库
    lll={'database':"test",'user':'postgres','password':'postgis','host':'127.0.0.1','port':'5432'}engine=create_engine(f"......
  • oracle数据库备份一个表数据并恢复
    使用场景:当我们平时想要大批量替换数据的时候,在生产上往往会先备份,然后如果遇到问题再回退,那么可能涉及下面两个语句:1.创建一个备份表并存储原始数据CREATETABLE备份......
  • 通过iptables转发到TDSQL实现外网访问云数据库
    腾讯云有些TDSQL,如pgsql版的不能通过外网访问。此时提供2种方案,一种是nginx转发,一种是iptables。这看起来都需要额外的服务器成本,没办法。这里我们使用iptables,因为最方便......
  • 【AGC】【云数据库】云数据库常见问题
    ​1、【问题描述】是否可以添加支持kotlin文件的导出功能?​【解决方案】目前,我们没有这样的开发议程,因为有对Java的支持。 2、【问题描述】咨询一下云数据关联......
  • 学习:python操作数据库
      一次性添加多条数据   ......
  • Python——pymysql(连接mysql数据库)
    基本设置(包括预防SQL注入):SQL注入问题,在写入sql语言时,可能会有利用mysql语句来进行正常输入的规避。importpymysqlconn=pymysql.connect(host='127.0.0.1',user......
  • Jmeter 数据库连接
    ###下载mysqljar包-进入:https://dev.mysql.com/downloads/connector/j/-下载解压出jar包![](https://img2022.cnblogs.com/blog/2634283/202208/2634283-2022082......