闲来无事,想做个OODB,慢慢来,从简单做起。
之所以想到OODB这个东西,是因为之前在公司设计过一个很类似的东西,也是对象存储,但是只需要根据主键检索,因此只要设计个持久化的B+树做索引即可,不过需要有对象的历史版本这个概念(即在星期5的时候可以查到所有对象在星期1的状态,并且可以回滚)。由于本人目前余热没地方发挥,所以有想法去设计并实现一个高性能的OODB,然后开源。可能目前的想法还不成熟,毕竟我09年6月才毕业,经验不是很丰富,欢迎大家拍砖。
以下思路纯凭本人乱想。
一.个人认为的OODB比较实在优势:
1.很大程度上减少项目开发成本。
2.不需要通过jdbc转换层次,设计良好的数据存储方案可以使OODB具有很强的性能。
二.很简单的功能列表:
1.能够以极高的性能根据id获取对象。
2.能够根据对象的字段值查找到匹配的对象集合。
3.存储的时候只需要set即可,不用在应用层做配置。
4.暂时不考虑分布式存储。
三.具体实现的思路:
首先需要解决对象的持久化问题。
java中对象持久化最简单的方式就是直接使用序列化,不过在这里序列化的方式显然不可行。因为序列化和反序列化性能很低,更主要的原因是这种方式无法根据对象的字段值进行检索(没有办法为字段设立索引,难道要一个个反序列化出来比较?)。
这里先说说之前在公司设计持久层中对象存储的一个思路。对于直接可存储的简单对象(int,long,String,和这些类型的数组)就直接二进制化,对于一个复杂对象,则将其迭代分解成简单对象直到不可再分为止,然后存储分解出来的简单对象,并记录下这个对象的组成结构。目前我觉得这种思路很适合用在OODB中,但是有两种实现方式,一种是将一个对象的不同字段存储在不同物理位置,例如Class A有10个对象实例,将这10个对象的a字段存储在一起,b字段存储在一起。取出对象的时候,将不同字段取出来然后组合成完整的对象,这种方式的优势在于可以很直接的为所有字段建立索引,并且空间比较好分配。第二中方案是每个对象的所有字段集中存储,可以分析类的成员组成,然后估算一下对象的大小,为其预留空间,如果空间不够的话标示一下即可,这种方案在取出对象的时候会很快,不用多次I/O取出多个字段,但是很容易产生碎片,而且对象的字段类型改变的话会有点麻烦。
对于对象检索使用的持久化索引,以及IO层,之前自己都有过完整的实现,而且有很高的性能保证(dell 630m的破本本插入1000w条索引只要3分钟不到)。
这个是我目前能想到的,大家有什么看法?
分享到:
相关推荐
给出了空间数据和属性数据的数据结构,在此基础上采用面向对象数据库(OODB)技术中的对象组织和管理思想,采用数据模板和方法模板技术建立面向对象的数据访问模型,并在此基础上建立了一种面向对象的空间查询和空间...
《面向对象数据库系统.doc》可能包含了更详细的OODB系统设计、实现原理和实际案例分析,而《www.pudn.com.txt》可能是网站资源链接或相关讨论的记录。通过深入阅读这些文档,我们可以进一步了解OODB在实际应用中的...
Given the complexity of today’s data systems, articles continue to be written offering solutions to data management challenges using objects and object databases. Such papers typically focus on the ...
此外,本文首次引入了“方法元库”的设计思想,以解决面向对象数据库中各对象方法的定义问题。方法元库包含了一系列预定义的方法元,这些方法元可以组合成复杂的方法,以满足不同对象的需求。这种方法不仅可以简化...
然而,在OODB中实现SQL语义模型却面临着许多挑战,如查询模型的设计、语义的实现、存储管理等问题。 为了解决这些问题,本文提出了一个新的SQL语义模型,该模型可以保持SQL语义在OODB中的完整性,同时也可以很好地...
OODB(Object-Oriented Database)框架是一种将关系数据库的结构映射到Java类的工具,旨在简化数据库操作,提供更高效的数据访问和处理能力。这个开源项目的主要目标是通过自动将数据库模式转换为Java代码,使开发...
尽管面向对象数据库(OODB)与对象关系数据库(O-RDB)的发展为数据管理带来了新的可能性,但因功能上的局限性,关系数据库依然在数据库市场中占据主导地位。因此,如何有效地将持久对象存储到关系数据库中,成为了...
面向对象数据库(Object-Oriented Database, OODB)是一种基于面向对象编程范式设计的数据存储系统。与传统的关系型数据库不同,OODB直接支持面向对象语言中的核心概念,如类、对象、继承等,这使得它在处理复杂数据...
在这样的背景下,数据结构显得尤为重要,因为它们是构成OODB的基础,并直接关系到数据库管理系统的设计和效率。 有向复图是一种能够表达复杂对象关系的图结构,它能够展示对象间通过继承和组成部分构成的层次关系。...
文章指出,对于挤压模具CAD系统,数据库的设计需要紧密结合其设计过程中的图形分析、工艺设计和结构设计需求。这意味着数据库开发者需要深入理解挤压模具设计的具体流程和技术要求,将这些需求转化为数据库的数据...
* OODB与ORDB的主要区别是OODB使用对象来表示实体、关系和操作,而ORDB使用关系来表示实体、关系和操作。 * OODB与ORDB的优点是可以更好地表达复杂的业务逻辑和关系。 十、使用UML类图来概念对象建模 * 使用UML...
接着,文章强调了面向对象数据库(OODB)在CMS中的重要性,因为CMS需要存储和管理大量关于学生、教师和课程的信息。 在项目需求描述部分,文章指出项目目标是创建一个具备标准功能的高校CMS。系统需支持系统管理员...
总之,面向对象技术结合UML建模是当今软件开发中的主流方法,它提供了一种结构化、模块化的思考方式,使复杂系统的构建变得更为有序和高效。通过对这一技术的深入学习,开发者可以更好地理解和解决实际问题,创建出...
面向对象数据库(OODB)独特的数据组织与操纵原理,决定了其具有不同于传统关系数据库的安全保护和授权模式。介绍了OODB安全授权机制特点,通过对OODB安全授权模式的主体、客体及访问方式三个层次的讨论,重点对授权...
参考文献部分提供了一系列关于CAD/CAM技术、模具设计与数控加工的书籍和期刊文章。这些参考资料为汽车发动机CAD数据库系统的面向对象信息建模提供了理论和实践上的支持,也为技术人员在CAD数据库系统开发和应用方面...
课程还将涵盖数据模型,如面向对象数据库(OODB)的设计,它将数据库的概念与面向对象的编程模型相结合,提供更强大的数据表示和操作能力。此外,随着Web技术的发展,面向对象技术也被应用于Web应用开发,如使用JSP...
3. 设计方法:从顶层设计和底层设计两个方面出发,考虑数据分布、数据库的分片设计、片段位置和分配设计。 4. 设计目标:目标是实现数据共享和局部自治,同时保证数据的一致性和系统的可靠性。 5. 分片设计:包括...
编程不仅仅是关于如何实现细节,更重要的是定义清楚各个组件之间的交互方式。通过定义清晰的接口来规范组件间的数据交换和行为,可以极大地提高代码的灵活性和可扩展性。 **解释:** - **接口设计:**定义一组明确...