【问题标题】:Implementing Transparent Persistence实现透明的持久性
【发布时间】:2010-06-14 18:44:38
【问题描述】:

透明持久性允许您使用常规对象而不是数据库。对象会自动从磁盘读取和写入磁盘。此类系统的示例是 Gemstone 和 Rucksack(用于普通 lisp)。

他们所做的简化版本:如果您访问 foo.bar 并且 bar 不在内存中,它将从磁盘加载。如果您执行foo.bar = baz,则foo 对象将在磁盘上更新。大多数系统还具有某种形式的事务,它们可能支持跨程序甚至跨网络共享对象。

我的问题是实现这些系统有哪些不同的技术,这些实现方法之间的权衡是什么?

【问题讨论】:

    标签: database language-agnostic object-persistence


    【解决方案1】:

    我已在多个项目中使用过这样的系统 (ObjectStore),其中最著名的是商业信用风险系统和优化石油管道网络流量的系统。关于实现的问题在这里讨论太复杂了,但至于此类系统和关系数据库之间的权衡:

    对象数据库优势:

    • 非常非常快 - 对于某些查询,它们可能比关系数据库快 100 到 1000 倍。事实上,我设计的风险系统无法(根据 Sybase 自己)在 SQL 数据库上实现。

    • 非常容易与 C++ 代码集成 - 无需阻抗匹配层。

    • 可用于基本 CRUD 应用程序的 GUI 库数量有限

    关系优势:

    • 即席查询比对象数据库更容易、更快。

    • 大约有一百万个工具来管理数据库

    • 很容易创建 GUI 应用程序

    • 很多人都有 RDBMS 经验

    当然,与所有工具一样,您不必选择其中一种。我编写的风险应用程序从 Sybase 数据库导入数据,从 Oracle 导入管道。

    【讨论】:

    • 感谢您的回答。通过权衡,我打算在实现透明持久性的不同方法之间进行权衡,但是对象数据库和关系数据库之间的权衡也很有趣。 100-1000x 是一个相当大的加速!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2011-06-23
    • 2015-01-05
    • 2013-08-23
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多