博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
db4o这个对象数据库有很多优点,但为什么不是很火? 大家有没有用过db4o的?...
阅读量:6814 次
发布时间:2019-06-26

本文共 665 字,大约阅读时间需要 2 分钟。

  1. 没有主键的概念(因为对象的内存地址,或者引用就能标志一个对象了).因而外界想指向一个具体的对象就比较困难(比如本页的url里的1079505).

  2. 激活/保存层次的问题.获取一个对象,它的字段引用了其它对象,那么到底激活多少层次合适?保存时也是如此.层次深了伤性能,层次浅了用着不方便(动不动就是Null reference).

  3. 对象引用问题.RDBMS里我们能很轻易地明白一个引用指向的是对象的浅拷贝(因为只引用了一个主键).而一旦与内存中的对象勾搭起来,那深拷贝和浅拷贝就不容易区分了,很难说清我删除了一个对象会不会让某个其它对象的某个字段变成null(同样,修改对象也不容易看清其影响范围).

  4. 对象生存期问题.这是个看起来很奇怪甚至愚蠢的问题:没有被其它对象引用的对象是否应该存在于数据库中?换句话说,ODBMS要不要拥有GC功能?如果有GC功能的话,能够避免误删除被其它对象引用的对象,而且能够清除不再需要的数据.但是相应地,它让开发必须考虑更多的问题,保证每个对象的静态可达性.

  5. 数据库版本进化难以跟踪.由于数据库的结构与对象的结构基本一致,对对象模型的任何修改都会导致数据库结构的变化,而这个过程中原有数据如何处理必须加以特殊处理(Db4O里提供了字段改名之类的api,但是至少我很讨厌每修改一次对象就要写几行这样的代码).换句话说,我觉得数据库和对象之间耦合严重了,不利于修改.

  6. 没有类似Sql的成熟且流行的查询语言(或者你必须学习一种新语言)进行数据管理.很多时候,直接操作数据库也是必须的,这时你会非常想念Sql.

转载地址:http://ukqwl.baihongyu.com/

你可能感兴趣的文章
零跑C-more收获更多期待,而零跑S01还在追求更多的订单 | 2019 上海车展 ...
查看>>
彩铅,梦境
查看>>
中国存储芯片进入战略关键期
查看>>
rocketmq 同步双写
查看>>
张高兴的 Windows 10 IoT 开发笔记:部署 ASP.NET Core 2 应用
查看>>
装饰器
查看>>
Linux网卡名改eth0方法
查看>>
指针的意义和linux的内存回收艺术
查看>>
WP7实例篇之土豆搜索器(2)
查看>>
用SHELL脚本自动化安装Nagios服务器端和客户端的
查看>>
JAVA多线程之中断机制(如何处理中断?)
查看>>
vba 工作案例1
查看>>
利用Python了解微信通信机制,实现查询有多少好友删除你!!
查看>>
【mybatis深度历险系列】mybatis中的动态sql
查看>>
瑞典驻华参赞:智慧城市建设提升为国家战略
查看>>
淘富成真,硬件智能—— 硬件创新一站赋能平台
查看>>
网友神总结:我们继续用 XP 的十大理由
查看>>
2014年8月份国内主浏览器市场份额排行榜
查看>>
优云automation实践技巧:简单4步完成自动化构建与发布
查看>>
用Dart搭建HTTP服务器(2)
查看>>