绝不会丢失数据技术

时间:2010-11-30 21:27:22

标签: architecture

我很好奇用于构建系统的技术,确保没有数据丢失是最重要的。举一个简单的例子,金融机构做了什么来确保当账户之间的资金转账时,一旦从一个账户中提取资金,就毫无疑问地将其存入另一个账户。我不是在寻找像数据库事务这样的特殊技术,而是在寻找更大,更具架构性的概念,比如服务器出现故障时数据的保存方式,或队列空间不足等等。

如果有人能指出我的书籍或文章,我会非常感激。

6 个答案:

答案 0 :(得分:1)

您应该阅读有关数据加密的Automated Teller MachineOnline transaction processing和其他主题,如果您正在考虑使用网站,请考虑使用HTTPS。

答案 1 :(得分:0)

基本技术是消除任何单点故障。在您的设置中可能出现故障的任何内容都需要进行后备或多备份。从多个交换机,服务器,UPS,硬盘等...数据库不断被复制,数据备份和存储在现场,以防火灾或其他可能影响建筑物的灾难。

答案 2 :(得分:0)

所有这些都归结为在两个地方拥有相同的数据;从数据承诺到数据承诺之前保存缓存的代码,一直到服务器冗余。

确保不丢失内容的唯一方法是拥有多份副本。

答案 3 :(得分:0)

您可能希望阅读XA或X / Open事务,这些事务可以协调多个系统(包括数据库,队列等)到类似ACID DB的事务中。

我没有使用它,但我听说它可能是昂贵的延迟和计算。但是,您的数据完整性值多少呢?

http://en.wikipedia.org/wiki/X/Open_XA

答案 4 :(得分:0)

就银行示例而言,每家银行都会为每笔交易记录一份记录,说明了多少以及在何处以及从何处,在多少以及他们的时间顺序

以便稍后如果出现问题,您可以比较两个事务日志,如果它们不匹配,您可以识别丢失的事务

这也解决了一家银行不能信任另一家银行为其保存记录的问题

当他们交叉检查时,这几乎是一个分布式事务协议

答案 5 :(得分:0)

正如您所提到的,有各种机制(如交易)可确保基于软件的“握手”可靠并成功完成。

架构 - 是的,有两个东西副本给你redundencey,这有助于不丢失东西。除此之外:

  • 清除流程:人们需要准确了解信息的来源 - 无论是在阳光明媚的日子里,还是在棕色的东西击中粉丝的时候。拥有数据但无法找到数据或识别数据与丢失数据一样糟糕。更清晰(并且记录良好)您的流程更好。
  • 一致性:自动化显然比随机人为错误好。
  • 要专门回答你的问题 - 但上述观点应该在一个清晰明确的架构和设计中得到回应,并且明确地分离了这些问题。
  • 尽可能减少失败点。
  • 关注高风险区域。
  • 使用经过验证的技术(我想这就是你实际要求的)。
  • 让事情尽可能简单。

我曾在一个现成的文档管理系统的解决方案架构上工作;没有数据丢失是重要的驱动因素。该系统在全国范围内推广,因此在为本地用户提供服务的“区域”缓存和实际“数据中心”方面具有多站点。一些兴趣点:

  • 所有组件(如果可能)都部署在虚拟机上,这些虚拟机被备份到SAN,因此,如果物理主机出现故障,我们可以更快地恢复服务。就数据丢失而言,这意味着如果系统停机,用户更有可能使用受保护的系统,而不是在本地存储内容。
  • 此外,SAN被视为比本地磁盘更安全。
  • 上述内容是现有设置的一部分,因此Ops无需学习新内容。
  • 故障转移站点,具有复制功能。这不是实时的,而是通过数据库上的事务日志进行了扩充。

我猜这些都不是以软件为中心的,但我确实认为“我们”使用的所有优秀软件架构/设计原则都有助于指导我的思考。