发病率是一个简单的技术提供的酸性质的存储目的的基于模型的二进制序列化和提前写入记录。它的工作原理是这样的:

  • 开始用的快照。Serialize的对象模型和编写这一文件。
  • 创建一个杂志的文件。对于每一个调入的对象模型、序列化的呼吁和它的论点。
  • 当journal变得太大,你是关闭的,或者它是否方便,执行一个检查点:写一个新的快照,并截断日志。
  • 滚回或恢复从一个崩溃或电击中,载的最后一个快照,并重新执行所有的电话记录在日志。

预防措施需要,使这项工作是:

  • 不要让可变的对象引用逃跑或者进入流行率层。你需要某种形式的代理或OID方案,因为如果你做RPC。(这是一个共同的新手失误已经绰号'洗礼的问题'.)
  • 所有的逻辑可从一个呼叫必须完全确定,并且必须不执行的商务逻辑的有意义的I/O或操作系统的呼吁。写到一个诊断记录可能是好的,但是得到该系统的时间或启动一个步委托一般是没有的。这是使该杂志的录像相同的,即使它恢复在不同的机器上或者在不同的时间。(最普遍代码提供了一个交替时呼吁得到的交易的时间戳。)
  • 写并发介绍杂志上的模糊的解释,因此,它是禁止的。

这是因为...

  • 人们开发出一种不好的品味它们在试图使用一个月的项目是不适合* 给它吗?
  • 克劳斯*Wuestefeld的 刺耳的宣传 变成人了?
  • 人喜欢的必要的程序模型不喜欢 分离I/O从计算, 宁愿而交叉计算I/O和线电话吗?
  • 普遍的层因此在概念上简单,如此紧密地结合特性的框架,他们居住在他们通常定义轧的项目,这使得它们太外星人/非标准/危险?
  • 这太难以保持直什么你必须小心,不要做?
  • 新手的头好像要爆炸的时候面对的东西不是同样的两级由数据库驱动应用他们学会了写在学校吗?;)

*整个数据集合在RAM, 你不需要写并发,你不需要做临时查询、报告或出口数据仓库。与道歉源码、流行率的一种改进在保存文件,不能代替Oracle。

有帮助吗?

解决方案

我认为一些问题是,他们有一个非常具体使用情况(你不适合原因).我已经建立和运作的系统上使用这一方法,当你有一个问题,是实际上这个问题,它可以是一个美妙的解决方案。

另一部分是它看起来很像一些更多的痛苦位的定义数据存储你用来发现有很多10年前,有一些相同的缺陷(觉得批次更新btreive例如)带来你的"定义",但也使它很难找到现成的部分工作礼貌。

最后一部分是,他们可以是该死的,难以查询反对在许多情况下,人们一般都很习惯能够得到他们的答复权利。

其他提示

我想你首先需要证明因此,许多开发人员绝对恨他们。我不认为是这种情况。考虑,福勒,一段时间后,正式确定一种模式的各种各样为这个 在这里,.

这个问题的答案是,虽然该理论很简单的做法是没有的。

只是测试这种安装需要几十个试验案件,加在多进程或多线程代码,这个跳到数百个可能的条件,需要进行测试,既可用于持久性和恢复。

任何交易监测这类作证,燕尾服,任何Websphere,BOSS。净,将提供所有这些设施的清洁和测试的方式。和任何数据库将提供"足够的"交易性/持久性对于大多数应用程序。

它主要是一个情况下,轮的发明和完善了前很长一段时间。

预先决条件听起来有些繁琐,代码周围,特别是与大多数系统不需要酸符合当运行中的存储器。开销听起来有点讨厌的--那儿是很多国家跟踪参与。

许可以下: CC-BY-SA归因
scroll top