购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4.1 持久性

在阐述对存储系统的要求时,持久性最常被忽视,因为它是假设的。 持久性 是指存储系统存储你的数据,并且没有将其丢失、删除、覆盖或破坏的属性。我们肯定希望这个属性的值越高越好。

持久性通常表示为每年并未不可挽回地丢失的字节或区域的数据所占的百分比。好的存储系统的常见值是11个或12个9,也可以表示为“99.999999999%或更多的存储字节不会丢失”。虽然这可能是原始底层存储系统提供的,但我们的保证可能要保守得多,因为我们正在编写与存储系统互动的软件。

值得注意的是,有些系统有非常持久的数据,即没有任何东西丢失,但确实有一些故障,会使一些数据在极长的时间内无法访问。这可能包括需要从另一个较慢的存储系统(例如,磁带驱动器)恢复数据或通过缓慢的网络连接从异地复制数据的情况。如果这是原始数据,并且对模型很重要,你可能不得不恢复它。但是,对于那些以某种方式从现有原始数据中衍生出来的数据,可靠性工程师会考虑重新创建数据更容易一些,而不是恢复它。

对于一个有许多数据转换的机器学习存储系统,我们需要谨慎对待这些转换数据的写入和监控方式。我们应该对数据转换进行记录,如果有能力的话,可以存储转换前后的数据副本。最难跟踪的阶段是数据提取阶段,当数据从非管理状态转换为管理状态的时候。由于我们建议使用API来提取,这就提供了一个明确的位置来确保数据被存储、记录转换并确认数据的接收。如果数据没有被干净、持久地接收,发送系统应当可以在数据仍然可用时重试发送操作。

在数据转换的所有阶段,如果能负担得起,我们应该存储数据转换前和转换后的副本。我们应该监控转换的吞吐量以及预期的数据大小变化。例如,如果我们对数据进行30%的采样,那么除非发生错误,否则转化后的数据量显然应该是转化前的30%。另一方面,如果我们通过分桶将一个浮点数转化为一个整数,根据数据的表示方法,我们期望得到的数据大小基本不变。如果它大得多或小得多,那么它一定有问题。 ziSOnx9lEX4g9GB2PMIFVatO9G8wOeF4u8AXNIgbwqLLfrN7wxWBfu9srh7u3iP0

点击中间区域
呼出菜单
上一章
目录
下一章
×