有这样的数据库吗?

Sas*_*gov -2 database graph-databases object-oriented-database

背景:好的,所以我正在寻找我猜的对象数据库.但是,我所看到的(通常很少)对象数据库是简单的持久层,而不是完整的DBMS.我不知道我正在寻找的东西是否被认为是一个对象数据库,所以真的有任何帮助指向我正确的方向将非常感激.


我不想给你两页描述我正在寻找的东西,所以我将用一个例子来说明我的观点.假设我有一个"BlogPost"对象需要存储.这样的东西,伪代码:

class BlogPost
    title:String
    body:String
    author:User
    tags:List<String>
    comments:List<Comment>
Run Code Online (Sandbox Code Playgroud)

(假设Comment是它自己的类.)

现在,在关系数据库中,author将存储为指向a的外键User.id,并且将使用单独的表存储关系tags,comments并将其存储为一对多或多对多关系.我想要的是一个执行以下操作的数据库引擎:

  • 使用直接引用存储相关对象(author,tags等),而不是使用外键,这需要额外的查找; 换句话说,数据库本身应支持彼此顶部的对象
  • 允许我在博客文章中添加注释或标签,而无需检索整个对象,更新它,然后将其放回数据库(如面向文档的数据库 - CouchDB就是一个例子)

我想我正在寻找的是一个导航数据库,但我不知道.有什么东西甚至与我的想法相似吗?如果是这样,它叫什么?(或者更好的是,给我一个实际的工作数据库.)或者我是否过于挑剔?


编辑:

只是为了澄清,我不是在寻找ORM或抽象层或类似的东西.我正在寻找一个内部执行此操作的实际数据库.对不起,如果我很难,但我搜索过,找不到任何东西.


编辑:

此外,JVM的优点还不错,但此时我真的不关心它运行的平台.

naw*_*oth 7

我认为您所描述的内容可以很容易地在图形数据库中建模.然后,您将获得导航到要进行更改的节点/边缘的好处,而无需检索任何其他内容.对于JVM,有Neo4j开源图数据库(我是团队的一部分).您可以在高可伸缩性时阅读它,作为thinkvitamin此stackoverflow线程概述的一部分.至于标签,我认为如果你想找到相关的标签和类似的东西,将它们存储在图形数据库中会给你一些额外的好处.只需在邮件列表中删除一行,我相信社区会帮助您.


Sam*_*ron 5

您可以尝试使用C#和Java中提供的db4o.