2016-02-26 43 views
0

我想知道Google的Bigtable如何保持不變。當寫入操作進入時,平板電腦服務器更新內存中的「散列映射」並將其寫入日誌文件。這樣,如果平板電腦服務器死亡,一臺新的平板電腦服務器可以讀取所有最近的操作,並與平板電腦「相等」。Bigtable是否將操作寫入日誌以進行每個操作或批量操作?

這是有道理的,但不會減慢將每個操作寫入日誌服務器而不是批量寫入(因爲它被寫入磁盤)?

回答

0

讓我們依次看看這些問題。

Does Bigtable是否將操作寫入日誌以進行每個操作或批量操作?

Bigtable將每一個操作寫入持久日誌,因爲它們進來而不是批量。換句話說,它是同步的,而不是異步的:在服務器響應客戶端時,數據已經寫入日誌(這是持久的和複製的),而不僅僅是內存。

如果存儲系統只寫入內存並批量寫入日誌,它將丟失只在內存中的數據,如果服務器在接受某些寫入後崩潰但在將其刷新到日誌之前。

這很有道理,但不會減慢將每個操作寫入日誌服務器而不是批量寫入(因爲它寫入磁盤)?

背後Bigtable的分佈式文件系統(原Google File System,現在Colossus)比一般的文件系統快得多,儘管它的分佈,每個寫被複制。

使用YCSB基準,谷歌的Cloud Bigtable已經證明在這兩個讀取,甚至在尾部寫入single-digit millisecond latency

Google Cloud Bigtable performance: throughput and latency