我很好奇用于构建确保没有数据丢失的系统的技术是最重要的。举一个简单的例子,金融机构做什么来确保在账户之间转移资金时,一旦从一个账户中提取资金,毫无疑问就会将其存入另一个账户。我并不是在寻找诸如数据库事务这样的特殊技术,而是寻找更大,更体系结构的概念,比如如果服务器关闭或者队列用完空间或者其他什么时,数据如何保存。永不丢失数据技术
如果有人能指点我的书籍或文章,我会非常感激。
我很好奇用于构建确保没有数据丢失的系统的技术是最重要的。举一个简单的例子,金融机构做什么来确保在账户之间转移资金时,一旦从一个账户中提取资金,毫无疑问就会将其存入另一个账户。我并不是在寻找诸如数据库事务这样的特殊技术,而是寻找更大,更体系结构的概念,比如如果服务器关闭或者队列用完空间或者其他什么时,数据如何保存。永不丢失数据技术
如果有人能指点我的书籍或文章,我会非常感激。
基本技巧是消除任何单点故障。任何在您的设置中可能会失败的情况都需要备份或多个备份。从多台交换机,服务器,UPS,硬盘驱动器等......数据库不断被复制,数据备份和存储在异地,以防发生火灾或其他可能会损坏建筑物的灾难。
它可以真正归结为在两个地方有相同的数据;从下到在数据提交之前持有缓存的代码,一直到服务器冗余。
确保您不会丢失东西的唯一方法是获得多份副本。
您应该阅读约Automated Teller Machine,Online transaction processing和其他有关数据加密的主题,如果您在网站上考虑,也应考虑使用HTTPS。
您可能想了解XA或X/Open事务,这些事务可以将多个系统(包括数据库,队列等)协调为ACID类似DB的事务。
我还没有使用它,但我听说它可能是昂贵的延迟明智和计算。但是,您的数据完整性又值多少钱?
,各银行将保持记录的每一笔交易,说明什么多少,并在那里和从那里多少,以及他们的时间顺序
这样以后如果你比较两个事务日志的一个问题,如果他们不匹配,你可以找出丢失的交易
这也涵盖了一个银行不能信任另一个记录保留它
问题,因为他们交叉检查这几乎是一个分布式的交易协议
正如你所指,有各种机制(如交易),以确保基于“握手”的软件是可靠的,并成功完成。
建筑上 - 是的有两个副本的东西给你redundencey,这有助于不丢失的东西。除此之外:
我一直在为现成的文档管理系统解决方案架构,没有数据丢失是最重要的驱动因素。该系统在全国范围内推出,因此在用于为当地用户提供服务的“区域”缓存和实际的“数据中心”方面实现了多地点。感兴趣的几点:
我想这一切都不是严重软件中心,但我认为所有好的软件架构/设计原则“我们”使用帮助指导我的思想。
此问题可能更适合http://serverfault.com/ – 2010-11-30 21:30:54
我认为在这些情况下,交易应该回滚。我认为这个东西可能属于“两阶段承诺” ,这是交叉> = 2系统的交易,而不是100%确定... – FrustratedWithFormsDesigner 2010-11-30 21:31:48