update zh-tw content

This commit is contained in:
Gang Yin 2022-04-19 18:40:06 +08:00
parent 05d90e6d39
commit aaf62c6ffb
2 changed files with 4 additions and 4 deletions

View File

@ -120,7 +120,7 @@ JSON 比 XML 簡潔,但與二進位制格式相比還是太佔空間。這一
### Thrift與Protocol Buffers
Apache Thrift 【15】和 Protocol Buffersprotobuf【16】是基於相同原理的二進位制編碼庫。 Protocol Buffers 最初是在 Google 開發的Thrift 最初是在 Facebook 開發的,並且在 2007~2008 年都是開源的【17】。
Apache Thrift 【15】和 Protocol Buffersprotobuf【16】是基於相同原理的二進位制編碼庫。 Protocol Buffers 最初是在 Google 開發的Thrift 最初是在 Facebook 開發的,並且都是在 2007~2008 開源的【17】。
Thrift 和 Protocol Buffers 都需要一個模式來編碼任何資料。要在 Thrift 的 [例 4-1]() 中對資料進行編碼,可以使用 Thrift **介面定義語言IDL** 來描述模式,如下所示:
```c

View File

@ -54,9 +54,9 @@
在 [圖 5-2](../img/fig5-2.png) 的示例中,從庫 1 的複製是同步的:在向用戶報告寫入成功,並使結果對其他使用者可見之前,主庫需要等待從庫 1 的確認,確保從庫 1 已經收到寫入操作。以及在使寫入對其他客戶端可見之前接收到寫入。跟隨者 2 的複製是非同步的:主庫傳送訊息,但不等待從庫的響應。
在這幅圖中,從庫 2 處理訊息前存在一個顯著的延遲。通常情況下,複製的速度相當快:大多數資料庫系統能在一秒向從庫應用變更,但它們不能提供複製用時的保證。有些情況下,從庫可能落後主庫幾分鐘或更久;例如:從庫正在從故障中恢復,系統在最大容量附近執行,或者如果節點間存在網路問題。
在這幅圖中,從庫 2 處理訊息前存在一個顯著的延遲。通常情況下,複製的速度相當快:大多數資料庫系統能在不到一秒內完成從庫的同步,但它們不能提供複製用時的保證。有些情況下,從庫可能落後主庫幾分鐘或更久;例如:從庫正在從故障中恢復,系統在最大容量附近執行,或者如果節點間存在網路問題。
同步複製的優點是,從庫保證有與主庫一致的最新資料副本。如果主庫突然失效,我們可以確信這些資料仍然能在從庫上找到。缺點是,如果同步從庫沒有響應(比如它已經崩潰,或者出現網路故障,或其它任何原因),主庫就無法處理寫入操作。主庫必須阻止所有寫入,並等待同步副本再次可用。
同步複製的優點是,從庫保證有與主庫一致的最新資料副本。如果主庫突然失效,我們可以確信這些資料仍然能在從庫上找到。缺點是,如果同步從庫沒有響應(比如它已經崩潰,或者出現網路故障,或其它任何原因),主庫就無法處理寫入操作。主庫必須阻止所有寫入,並等待同步副本再次可用。
因此,將所有從庫都設定為同步的是不切實際的:任何一個節點的中斷都會導致整個系統停滯不前。實際上,如果在資料庫上啟用同步複製,通常意味著其中 **一個** 跟隨者是同步的,而其他的則是非同步的。如果同步從庫變得不可用或緩慢,則使一個非同步從庫同步。這保證你至少在兩個節點上擁有最新的資料副本:主庫和同步從庫。 這種配置有時也被稱為 **半同步semi-synchronous**【7】。
@ -177,7 +177,7 @@ PostgreSQL 和 Oracle 等使用這種複製方法【16】。主要缺點是日
一些工具,如 Oracle Golden Gate 【19】可以透過讀取資料庫日誌使得其他應用程式可以使用資料。另一種方法是使用許多關係資料庫自帶的功能觸發器和儲存過程。
觸發器允許你註冊在資料庫系統中發生資料更改(寫入事務)時自動執行的自定義應用程式程式碼。觸發器有機會將更改記錄到一個單獨的表中,使用外部程式讀取這個表,再加上任何業務邏輯處理,會後將資料變更復制到另一個系統去。例如Databus for Oracle 【20】和 Bucardo for Postgres 【21】就是這樣工作的。
觸發器允許你將資料更改(寫入事務)發生時自動執行的自定義應用程式程式碼註冊在資料庫系統中。觸發器有機會將更改記錄到一個單獨的表中,使用外部程式讀取這個表,再加上一些必要的業務邏輯,就可以將資料變更復制到另一個系統去。例如Databus for Oracle 【20】和 Bucardo for Postgres 【21】就是這樣工作的。
基於觸發器的複製通常比其他複製方法具有更高的開銷,並且比資料庫的內建複製更容易出錯,也有很多限制。然而由於其靈活性,仍然是很有用的。