论坛首页 Java企业应用论坛

关于OODB的设计思考

浏览 7364 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-02   最后修改:2009-06-02
思维的局限性,既然是想设计OODB,为什么还要用RMDB的查询语言。
开放一下思路,既然OODB,自然应该用OO的查询方式,smalltalk的语法就是比较好的一个参照。

SELECT * FROM student WHERE name LIKE 'Zhang%
-->
students :select [student|student :name :like 'Zhange%']

SELECT * FROM student WHERE id>100 AND id<500;
-->
students :select [student| (studen :id > 100) & (studen :id < 500)]

有问题吗?
0 请登录后投票
   发表时间:2009-06-02  
neomac.lin 写道
思维的局限性,既然是想设计OODB,为什么还要用RMDB的查询语言。
开放一下思路,既然OODB,自然应该用OO的查询方式,smalltalk的语法就是比较好的一个参照。

SELECT * FROM student WHERE name LIKE 'Zhang%
-->
students :select [student|student :name :like 'Zhange%']

SELECT * FROM student WHERE id>100 AND id<500;
-->
students :select [student| (studen :id > 100) & (studen :id < 500)]

有问题吗?


有问题.
SQL语言现在之所以成为工业标准,是因为在30年前就有人证明了它的数据基础,关系型数据库有着严格的数据证明和理论基础,因此才发展多少年,始终能够自己证明自己.

可是现在要搞OODB,最核心的问题是没有这个数学基础和理论基础,因此上才会大家各搞一套出来.

从纯粹的理论基础上来讲,OODB现在根本不存在扎实的理论基础.
0 请登录后投票
   发表时间:2009-06-02  
若干年以前,也对OODB颇感兴趣,看过一些源代码。db4o也看过。

我的感觉是:
1、如果是企业计算,可能还是RDBMS更为适合。主要是rdbms能够提供一种简单的schema来描述数据,oodb的schema则会复杂一些。简单的schema更容易管理。
2、如果真做一个oodb,我觉得还是应尽可能语言中立,过于的依赖某个语言的特性,反而未必好。放一个数据库在那里,既可以使用程序去访问(自动的OO映射,解决掉对象之间的关系),也可以使用一个管理控制台,交互式的进行查询。(可以考虑JavaScript这样的交互式脚本语言)
3、是否要考虑垃圾回收的问题。db4o中实际上,并不管理对象的垃圾回收。

OODB对于非结构化数据来说,或许更为合适,比如说lotus domino的数据库,也算一种oodb吧,从此衍生出来的新的开发模式,也确实是关系型数据库所难以适应的。

楼主真的想做,加油!
0 请登录后投票
   发表时间:2009-06-02  
现在有了像hibernate,IBAITS,JDO这些优秀的ORM工具,还在位OO与关系型不匹配而忧心匆匆吗?
0 请登录后投票
   发表时间:2009-06-02  
ODBMS从19世纪七十年代就已经在大学里开始研究理论基础,1985正式出现ODBMS的称呼。
Object Data Management Group于1991年建立,为ODBMS提供、确立标准。其中SQL:1999有引入ODMG提议的部分标准。
该组织于2001年提交ODMG3.0标准后解散。
请参考wiki
http://en.wikipedia.org/wiki/Object_database

OODB并非没有理论基础,只是没有成为主流,这个跟市场运作有关。
0 请登录后投票
   发表时间:2009-06-04  
zozoh 写道
Salin 写道
数据的检索(非主键)从技术上来说确实有难度,但不是不可行。
在使用上
sql:select * from student where name = "WangMeiMei"
oodb:Student s = new Student();
     s.setName("WangMeiMei");
     Student result = OODB.query(s);
难度其实就在对象的存储上,只要存到文件里,就能查的到,只是一个高难度算法的问题。数据库本质上不也是通过文件存储么?

如果要:
SELECT * FROM student WHERE id>100 AND id<500;
OODB 怎么写?

如果要:
SELECT * FROM student WHERE name LIKE 'Zhang%';
OODB 怎么写?



对于这一类查询,只能提供类似sql的查询语句了
0 请登录后投票
   发表时间:2009-06-04  
哇,回去吃了顿散伙饭几天没上网,回来后发现了那么多经典的回复
不是为OO与关系型不匹配而忧心
OODB可以很大程度减少项目开发的工作量
OODB,任重道远啊
0 请登录后投票
   发表时间:2009-06-04  
引用
对于这一类查询,只能提供类似sql的查询语句了


唉,那就对我没吸引力了,和直接使用个 ORM 的工具没啥区别嘛
0 请登录后投票
   发表时间:2009-06-04  
zozoh 写道
引用
对于这一类查询,只能提供类似sql的查询语句了


唉,那就对我没吸引力了,和直接使用个 ORM 的工具没啥区别嘛


还是有区别的,不用选数据库了,不用建表了,不用写sql了。。等等
0 请登录后投票
   发表时间:2009-06-04  
现实点吧
就你这点经验,就想去做OODB,未免有点太不靠普了吧.
还是先学好基础知识为重。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics