Bigtable是否针对每个操作或批量对日志执行操作?

时间:2016-02-26 17:01:33

标签: bigtable

我想知道Google的Bigtable如何坚持不懈。当写入操作进入时,平板电脑服务器会更新内存中的#34; hashmap"它也被写入日志文件。这样,如果平板电脑服务器死机,新的平板电脑服务器可以读取所有最近的操作,并且等于#34;死了的平板电脑。

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

1 个答案:

答案 0 :(得分:0)

让我们依次讨论这些问题。

  

对于每个操作或批量,Bigtable是否会对日志执行操作?

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

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

  

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

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

在使用YCSB的基准测试中,Google Cloud Bigtable在读取和写入时都显示single-digit millisecond latency,即使在尾部也是如此:

Google Cloud Bigtable performance: throughput and latency