2014-09-13 92 views
1

我很想知道是否有人有这种事情的经验。假设我去Zynga扑克这样的网站,并且购买了5,000,000个筹码。 1分钟后,该数据库出于某种原因被损坏,最后一次数据库备份是6小时前。他们怎么会断言我不会丢失我刚买的芯片?有什么方法可以为微交易实现这种安全性?交易如何保持安全

感谢

回答

2

这是一个高级视图,试图解释在很多数据库中会发生什么。

通常,把信息存储到数据库涉及两个操作:

  1. 记录该事务,以确保存储(磁盘)
  2. 修改数据页

任何数据修改是数据只有在这两个操作发生之后才进行承诺。日志可能会在本地复制以确保安全复制。它可能存储在SSD上以提高速度。

通常情况下,数据库的用户不必担心日志(尽管数据库是非常有关)。然后可以通过转到最后一个备份和/或检查点并“重新运行”日志来恢复数据库。

这解决了数据库本地关闭的问题。但是,它还有另外两个问题。一个是性能恢复,另一个是数据库服务器的致命损失。这些都可以通过使用数据库复制来修复,其中数据库的完整副本存储在物理上分开的位置。

一个简单的模型是,你有数据库,所有查询都经过一个单一的入口点。此入口点可以将任何只读查询发送到任何数据库,但会将数据修改查询发送到所有数据库。直到所有或大部分底层数据库都提交了该事务才会返回。如果数据库发生故障,则只需关闭数据库并查询其他数据库。在恢复时,它从其中一个工作数据库读取恢复文件。

这是一个需要考虑的有用模型,但它仍然存在单点故障。因此,用于管理复制的包含更多的方案和对等模型。

请记住一件事。 备份数据从来都不是问题。问题是恢复数据和全功能。支持事情只是我们经历的开销,所以如果事情发生,我们可以恢复功能。

0

通常情况下,在这样的情况下,公司给人的全退款,如果你有购买,例如证明贝宝交易ID。

0

为相应数据库实施高可用性解决方案。 SQL Server同步镜像(或同步可用性组)是零数据丢失。 (当然,Generals Problem仍然适用 - 没有真正的零数据丢失)。

这可以通过将所有事务立即复制到从服务器来实现。只有当两个服务器都将事务硬盘化到磁盘时,才会确认提交。

对于大多数企业而言,6小时的数据丢失是不可接受的。

我不明白是什么使这个问题具体到微交易。任何类型的重要数据都可以并且应该以限制最大数据量丢失和最大停机时间的方式受到保护。

+0

谢谢,我改了标题 – jmasterx 2014-09-13 13:27:30