问题标签 [object-oriented-database]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - python对象的查询语言
我正在寻找一个库,它可以让我在 python“对象数据库”上运行类似 SQL 的查询。对于对象数据库,我指的是内存中 Python 对象和列表的相当复杂的结构。基本上,这将是一个“反向 ORM”——它不是为关系数据库提供面向对象的接口,而是为对象数据库提供一个类似于 SQL 的接口。
C# 的 LINQ 非常接近。Python 的列表解析非常好,但是在处理复杂的事情(排序、连接等)时语法会变得很复杂。此外,我不能(轻松)使用列表推导动态创建查询。
实际的语法可以是基于字符串的,也可以使用面向对象的 DSL(a la from(mylist).select(...))。如果图书馆会提供某种索引来加快搜索速度,则可以加分。
这存在还是我必须发明它?
database-design - 哪些对象数据库允许对数据库中的所有内容进行索引?
目前,db4o不允许对集合的内容进行索引。哪些对象数据库允许对数据库中的任何单个字段进行索引?
例子:
要让 db4o 按字段“thisIsNotIndexed”进行搜索,它必须将完整的对象加载到内存中,然后使用 LINQ-to-Objects 扫描该字段。这很慢,因为这意味着您可能必须将整个数据库加载到 RAM 中才能进行搜索。解决此问题的方法是在根对象中包含您要搜索的所有字段,但是,这似乎是人为的限制。
是否有任何对象数据库不受此限制,并允许对子对象中的任何字符串进行索引?
更新
答案#1:
我找到了一种两全其美的方法:易于使用(具有层次结构),以及在整个树上使用完整索引的令人眼花缭乱的快速本机查询。它涉及到一点技巧,以及一个缓存父节点内容的方法:
- 照常创建嵌套层次结构。
- 对于每个子节点,创建对节点父节点的反向引用。
- 您现在可以查询叶节点。我们现在已经完成了一半 - 我们可以查询,但是,它很慢,因为如果您想通过父节点中的某些参数进行搜索,它必须进行连接才能向上导航树节点。
- 为了加快速度,请创建一个“缓存”参数,将搜索项缓存在父节点中。它是一个最初设置为 null 的方法,第一次调用它时会执行昂贵的连接,然后它会镜像该字段,并且从那时起搜索非常快。
- 这适用于从不改变的数据,即随时间变化的温度样本。如果数据将要更改,那么如果根节点中的值发生更改,您需要通过某种方式清除缓存值,可能是通过在每个叶节点中设置一个“脏”标志。
答案#2:
如果您使用 Array 而不是 List,则可以使用 SODA 下降到子节点。如果您使用 List,SODA 不支持它,因此您根本无法使用 SODA(或任何其他依赖于 SODA,例如 LINQ、QBE、Native 查询等)进行查询。
c# - DB4O 可扩展性
我正在寻找有关 DB4O 对象数据库的信息。我知道它有客户端/服务器模式,但我不知道它的可扩展性如何。我非常喜欢对象数据库的想法,但仍然找不到合适的 OODB 用于我的任何项目。所以我的问题是:
- 我很感兴趣是否有人在多客户端环境中部署了 DB4O,与 RDBMS 相比,它的性能如何?
- 迄今为止是否有任何 Web 应用程序由 DB4O 提供支持?
- 我可以使用 DB4O 作为 SQL Server(至少是 SQL Express)的替代品吗?
- DB4O 在实践中可以支持多少并发客户端?
- 数据库大小增加时性能会降低吗?
谢谢
PS 我对 C# 版本感兴趣。
rdbms - 嵌入式nosql开源java数据库
我正在开发一个开源产品,需要一个嵌入式 dbms。你能推荐一个嵌入式开源数据库吗?
- 每个可以处理超过 10 GB 的对象
- 具有对嵌入友好的许可证(LGPL,而不是 GPL)。
- 是纯Java
- 是(最好是)nosql。Sql 可能有效,但更喜欢 nosql
我查看了一些文档 DBMS,例如 mongodb,但它们似乎仅限于 4 或 16 mb 的文档。
Berkeley DB 看起来很有吸引力,但拥有类似 GPL 的许可证。
Sqlite3 很有吸引力:良好的许可证,您可以使用您喜欢的任何最大 blob 大小进行编译。但是,它不是 Java。我知道 JDBC 驱动程序存在,但我们需要一个纯 Java 系统。
有什么建议么?
谢谢
史蒂夫
java - ObjectDB 生产准备好了吗?
在这个基准测试中,ObjectDB 是最快的数据库: http ://www.jpab.org/All/All/All.html
但我看不到 ObjectDB 的任何其他基准测试结果。有人在使用 ObjectDB 吗?准备好生产了吗?有哪些经验?
database - Web 开发 - 对象数据库与关系数据库
使用对象数据库或关系数据库进行涉及大量 CRUD 的常规 Web 开发的优缺点是什么?
更新:我重新打开赏金奖励是为了给内维尔。
java - 面向对象的数据库
我不知道这是否是这个问题的正确标题。无论如何,最近我听说你可以在创建数据库时让生活更轻松。通过其中您使用基于对象的数据库。这将使迁移到其他类型的数据库也更容易,例如从 MySQL 到 SQLlite 或其他东西。
无论如何,我现在做一个具有数据库访问权限的网页的主要方式是我手动写下查询以从数据库中获取我需要的内容。但是,它也可以通过其他方式完成,这也不涉及我必须编写查询。我想知道这种其他方法是如何工作的。如何在谷歌中搜索它。
database-design - 在表中存储指向另一个表中的行的指针,而不是使用外键
我只是好奇是否可以只使用 c/java/etc 的指针。方式而不是基于外键连接表。既然我们在这个话题上,postgres 或任何其他 RDBMS 在加入时是否使用指针来快速定位由外键引用的行,而不是在包含 FK 的整个表中搜索?
c# - 在一个 DB4O 会话中检索一个对象,存储在另一个中(“断开连接的场景”)
我试图弄清楚如何在 DB4O 中的客户端会话之间保持对象可用。据我了解,一旦客户端会话关闭,该对象就不再驻留在任何缓存中,尽管我有一个有效的 UUID,但我无法在它上面调用 Store 而不导致插入重复项。我搜索了一种手动将其重新添加到缓存中的方法,但没有这种机制。重新检索它将迫使我从现在无用的对象中复制所有值。
这是上面的代码段:
最新版本的 Eloquera 通过 [ID] 属性或通过 Store(uid, object) 支持这些场景。
有什么想法吗?
orm - 关系数据库 + ORM 还是面向对象的数据库?
假设我想用面向对象的编程语言制作一个应用程序,即 Java
遵循以下更好的方法是什么?
--要么使用关系数据库即mySQL+对象关系映射即Hibernate
或者。
--使用面向对象数据库即db4o
为什么?