【问题标题】:Does Bigtable write operations to the log for every single operation or in batches?Bigtable 是针对每个操作还是批量将操作写入日志?
【发布时间】:2016-02-26 17:01:32
【问题描述】:

我想知道 Google 的 Bigtable 如何保持持久性。当写入操作进入时,tablet 服务器会更新内存中的“hashmap”,并将其写入日志文件。这样一来,如果 tablet server 死掉了,一个新的 tablet server 可以读取所有最近的操作,并与死掉的 tablet "equal"。

这是有道理的,但是将每个操作写入日志服务器而不是批量写入(因为它是写入磁盘)不会减慢速度吗?

【问题讨论】:

    标签: bigtable


    【解决方案1】:

    让我们依次回答这些问题。

    Bigtable 是针对每个操作还是分批将操作写入日志?

    Bigtable 将每一个操作写入持久性日志,而不是批量写入。换句话说,它是同步的,而不是异步的:当服务器响应客户端时,数据已经写入日志(持久且可复制),而不仅仅是内存。

    如果存储系统只写入内存,并批量写入日志,则如果服务器在接受一些写入后但在将它们刷新到日志之前崩溃,它将丢失仅在内存中的数据。

    这是有道理的,但是将每个操作写入日志服务器而不是批量写入(因为它是写入磁盘)不会减慢速度吗?

    Bigtable 背后的分布式文件系统(以前的 Google File System,现在的 Colossus)比典型的文件系统快得多,即使它是分布式的并且每次写入都是复制的。

    在使用YCSB 的基准测试中,Google Cloud Bigtable 已在读取和写入方面展示了single-digit millisecond latency,甚至在尾部:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多