锁定老帖子 主题:关于OODB的设计思考
精华帖 (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)] 有问题吗? |
|
返回顶楼 | |
发表时间: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现在根本不存在扎实的理论基础. |
|
返回顶楼 | |
发表时间:2009-06-02
若干年以前,也对OODB颇感兴趣,看过一些源代码。db4o也看过。
我的感觉是: 1、如果是企业计算,可能还是RDBMS更为适合。主要是rdbms能够提供一种简单的schema来描述数据,oodb的schema则会复杂一些。简单的schema更容易管理。 2、如果真做一个oodb,我觉得还是应尽可能语言中立,过于的依赖某个语言的特性,反而未必好。放一个数据库在那里,既可以使用程序去访问(自动的OO映射,解决掉对象之间的关系),也可以使用一个管理控制台,交互式的进行查询。(可以考虑JavaScript这样的交互式脚本语言) 3、是否要考虑垃圾回收的问题。db4o中实际上,并不管理对象的垃圾回收。 OODB对于非结构化数据来说,或许更为合适,比如说lotus domino的数据库,也算一种oodb吧,从此衍生出来的新的开发模式,也确实是关系型数据库所难以适应的。 楼主真的想做,加油! |
|
返回顶楼 | |
发表时间:2009-06-02
现在有了像hibernate,IBAITS,JDO这些优秀的ORM工具,还在位OO与关系型不匹配而忧心匆匆吗?
|
|
返回顶楼 | |
发表时间: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并非没有理论基础,只是没有成为主流,这个跟市场运作有关。 |
|
返回顶楼 | |
发表时间: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的查询语句了 |
|
返回顶楼 | |
发表时间:2009-06-04
哇,回去吃了顿散伙饭几天没上网,回来后发现了那么多经典的回复
不是为OO与关系型不匹配而忧心 OODB可以很大程度减少项目开发的工作量 OODB,任重道远啊 |
|
返回顶楼 | |
发表时间:2009-06-04
引用 对于这一类查询,只能提供类似sql的查询语句了
唉,那就对我没吸引力了,和直接使用个 ORM 的工具没啥区别嘛 |
|
返回顶楼 | |
发表时间:2009-06-04
zozoh 写道 引用 对于这一类查询,只能提供类似sql的查询语句了
唉,那就对我没吸引力了,和直接使用个 ORM 的工具没啥区别嘛 还是有区别的,不用选数据库了,不用建表了,不用写sql了。。等等 |
|
返回顶楼 | |
发表时间:2009-06-04
现实点吧
就你这点经验,就想去做OODB,未免有点太不靠普了吧. 还是先学好基础知识为重。 |
|
返回顶楼 | |