我刚刚读完了 Google 文件系统 (GFS) 的论文。论文中说 GFS 是
optimized for appending operations rather than random writes.
看到整篇论文都在强调这个特点,我认为它一定非常重要。
作为一个没有任何工作经验的学生,Appending Operations
Google 所说的现实生活中的例子有哪些?听起来相当激烈。
(我认为日志是附加内容较多的。也许还有电子邮件?)
答案1
是的,日志是附加操作的典型示例。电子邮件依赖于实现。例如,Maildir 格式的电子邮件存储每个文件一封电子邮件,因此无需附加。使用 mbox 格式,所有电子邮件都在一个文件中,因此新电子邮件会添加到末尾 - 它们被附加。
数据库更新是随机写入类型操作的一个例子,例如,如果您决定更新数据库中每个人的名字,这将导致对包含数据库的文件中间进行一系列写入。
Google 在此处所说的是,为了保持最佳性能,如果可以的话,请将新信息添加到现有文件的末尾,而不是修改其中已有的内容。如果您需要从文件中删除数据,则只需以某种方式标记它,并在性能不重要时(例如在清理批处理作业中)稍后将其删除。mbox 格式的电子邮件存储就是一个例子。如果您删除了一封电子邮件,则只会在单独的文件中进行跟踪。然后,您可以“压缩”该文件,这样可以有效地重写文件而不删除已删除的电子邮件。