update zh-tw content and PR list

This commit is contained in:
Gang Yin 2024-01-09 10:18:04 +08:00
parent 4eac55bf3e
commit 99bda7aa57
4 changed files with 9 additions and 7 deletions

View File

@ -150,7 +150,8 @@
| ISSUE & Pull Requests | USER | Title | | ISSUE & Pull Requests | USER | Title |
| ----------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | ----------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| [336](https://github.com/Vonng/ddia/pull/336) | [@YKIsTheBest](https://github.com/YKIsTheBest) | ch1: 优化一处翻译 | | [340](https://github.com/Vonng/ddia/pull/340) | [@YKIsTheBest](https://github.com/YKIsTheBest) | ch2: 优化多处翻译 |
| [338](https://github.com/Vonng/ddia/pull/338) | [@YKIsTheBest](https://github.com/YKIsTheBest) | ch1: 优化一处翻译 |
| [335](https://github.com/Vonng/ddia/pull/335) | [@kimi0230](https://github.com/kimi0230) | 修正一处繁体中文错误 | | [335](https://github.com/Vonng/ddia/pull/335) | [@kimi0230](https://github.com/kimi0230) | 修正一处繁体中文错误 |
| [334](https://github.com/Vonng/ddia/pull/334) | [@soulrrrrr](https://github.com/soulrrrrr) | ch2: 修正一处繁体中文错误 | | [334](https://github.com/Vonng/ddia/pull/334) | [@soulrrrrr](https://github.com/soulrrrrr) | ch2: 修正一处繁体中文错误 |
| [332](https://github.com/Vonng/ddia/pull/332) | [@justlorain](https://github.com/justlorain) | ch5: 修正一处翻译错误 | | [332](https://github.com/Vonng/ddia/pull/332) | [@justlorain](https://github.com/justlorain) | ch5: 修正一处翻译错误 |

View File

@ -150,7 +150,8 @@
| ISSUE & Pull Requests | USER | Title | | ISSUE & Pull Requests | USER | Title |
| ----------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | ----------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| [336](https://github.com/Vonng/ddia/pull/336) | [@YKIsTheBest](https://github.com/YKIsTheBest) | ch1: 最佳化一處翻譯 | | [340](https://github.com/Vonng/ddia/pull/340) | [@YKIsTheBest](https://github.com/YKIsTheBest) | ch2: 最佳化多處翻譯 |
| [338](https://github.com/Vonng/ddia/pull/338) | [@YKIsTheBest](https://github.com/YKIsTheBest) | ch1: 最佳化一處翻譯 |
| [335](https://github.com/Vonng/ddia/pull/335) | [@kimi0230](https://github.com/kimi0230) | 修正一處繁體中文錯誤 | | [335](https://github.com/Vonng/ddia/pull/335) | [@kimi0230](https://github.com/kimi0230) | 修正一處繁體中文錯誤 |
| [334](https://github.com/Vonng/ddia/pull/334) | [@soulrrrrr](https://github.com/soulrrrrr) | ch2: 修正一處繁體中文錯誤 | | [334](https://github.com/Vonng/ddia/pull/334) | [@soulrrrrr](https://github.com/soulrrrrr) | ch2: 修正一處繁體中文錯誤 |
| [332](https://github.com/Vonng/ddia/pull/332) | [@justlorain](https://github.com/justlorain) | ch5: 修正一處翻譯錯誤 | | [332](https://github.com/Vonng/ddia/pull/332) | [@justlorain](https://github.com/justlorain) | ch5: 修正一處翻譯錯誤 |

View File

@ -239,7 +239,7 @@
> #### 實踐中的百分位點 > #### 實踐中的百分位點
> >
> 在多重呼叫的後端服務裡,高百分位數變得特別重要。即使並行呼叫,終端使用者請求仍然需要等待最慢的並行呼叫完成。如 [圖 1-5](../img/fig1-5.png) 所示只需要一個緩慢的呼叫就可以使整個終端使用者請求變慢。即使只有一小部分後端呼叫速度較慢如果終端使用者請求需要多個後端呼叫則獲得較慢呼叫的機會也會增加因此較高比例的終端使用者請求速度會變慢效果稱為尾部延遲放大【24】 > 在多重呼叫的後端服務裡,高百分位數變得特別重要。即使並行呼叫,終端使用者請求仍然需要等待最慢的並行呼叫完成。如 [圖 1-5](../img/fig1-5.png) 所示,只需要一個緩慢的呼叫就可以使整個終端使用者請求變慢。即使只有一小部分後端呼叫速度較慢,如果終端使用者請求需要多個後端呼叫,則獲得較慢呼叫的機會也會增加,因此較高比例的終端使用者請求速度會變慢(效果稱為尾部延遲放大,即 tail latency amplification【24】
> >
> 如果你想將響應時間百分點新增到你的服務的監視儀表板則需要持續有效地計算它們。例如你可以使用滑動視窗來跟蹤連續10分鐘內的請求響應時間。每一分鐘你都會計算出該視窗中的響應時間中值和各種百分數並將這些度量值繪製在圖上。 > 如果你想將響應時間百分點新增到你的服務的監視儀表板則需要持續有效地計算它們。例如你可以使用滑動視窗來跟蹤連續10分鐘內的請求響應時間。每一分鐘你都會計算出該視窗中的響應時間中值和各種百分數並將這些度量值繪製在圖上。
> >

View File

@ -116,7 +116,7 @@
} }
``` ```
有一些開發人員認為 JSON 模型減少了應用程式程式碼和儲存層之間的阻抗不匹配。不過,正如我們將在 [第四章](ch4.md) 中看到的那樣JSON 作為資料編碼格式也存在問題。缺乏一個模式往往被認為是一個優勢;我們將在 “[文件模型中的模式靈活性](#文件模型中的模式靈活性)” 中討論這個問題。 有一些開發人員認為 JSON 模型減少了應用程式程式碼和儲存層之間的阻抗不匹配。不過,正如我們將在 [第四章](ch4.md) 中看到的那樣JSON 作為資料編碼格式也存在問題。無模式對 JSON 模型來說往往被認為是一個優勢;我們將在 “[文件模型中的模式靈活性](#文件模型中的模式靈活性)” 中討論這個問題。
JSON 表示比 [圖 2-1](../img/fig2-1.png) 中的多表模式具有更好的 **區域性locality**。如果在前面的關係型示例中獲取簡介,那需要執行多個查詢(透過 `user_id` 查詢每個表),或者在 User 表與其下屬表之間混亂地執行多路連線。而在 JSON 表示中,所有相關資訊都在同一個地方,一個查詢就足夠了。 JSON 表示比 [圖 2-1](../img/fig2-1.png) 中的多表模式具有更好的 **區域性locality**。如果在前面的關係型示例中獲取簡介,那需要執行多個查詢(透過 `user_id` 查詢每個表),或者在 User 表與其下屬表之間混亂地執行多路連線。而在 JSON 表示中,所有相關資訊都在同一個地方,一個查詢就足夠了。
@ -276,7 +276,7 @@ UPDATE users SET first_name = substring_index(name, ' ', 1); -- MySQL
文件通常以單個連續字串形式進行儲存,編碼為 JSON、XML 或其二進位制變體(如 MongoDB 的 BSON。如果應用程式經常需要訪問整個文件例如將其渲染至網頁那麼儲存區域性會帶來效能優勢。如果將資料分割到多個表中如 [圖 2-1](../img/fig2-1.png) 所示),則需要進行多次索引查詢才能將其全部檢索出來,這可能需要更多的磁碟查詢並花費更多的時間。 文件通常以單個連續字串形式進行儲存,編碼為 JSON、XML 或其二進位制變體(如 MongoDB 的 BSON。如果應用程式經常需要訪問整個文件例如將其渲染至網頁那麼儲存區域性會帶來效能優勢。如果將資料分割到多個表中如 [圖 2-1](../img/fig2-1.png) 所示),則需要進行多次索引查詢才能將其全部檢索出來,這可能需要更多的磁碟查詢並花費更多的時間。
區域性僅僅適用於同時需要文件絕大部分內容的情況。資料庫通常需要載入整個文件,即使只訪問其中的一小部分,這對於大型文件來說是很浪費的。更新文件時通常需要整個重寫。只有不改變文件大小的修改才可以容易地原地執行。因此通常建議保持相對小的文件並避免增加文件大小的寫入【9】。這些效能限制大大減少了文件資料庫的實用場景。 區域性僅僅適用於同時需要文件絕大部分內容的情況。即使只訪問文件其中的一小部分,資料庫通常需要載入整個文件,對於大型文件來說這種載入行為是很浪費的。更新文件時通常需要整個重寫。只有不改變文件大小的修改才可以容易地原地執行。因此通常建議保持相對小的文件並避免增加文件大小的寫入【9】。這些效能限制大大減少了文件資料庫的實用場景。
值得指出的是為了區域性而分組集合相關資料的想法並不侷限於文件模型。例如Google 的 Spanner 資料庫在關係資料模型中提供了同樣的區域性屬性允許模式宣告一個表的行應該交錯巢狀在父表內【27】。Oracle 類似地允許使用一個稱為 **多表索引叢集表multi-table index cluster tables** 的類似特性【28】。Bigtable 資料模型(用於 Cassandra 和 HBase中的 **列族column-family** 概念與管理區域性的目的類似【29】。 值得指出的是為了區域性而分組集合相關資料的想法並不侷限於文件模型。例如Google 的 Spanner 資料庫在關係資料模型中提供了同樣的區域性屬性允許模式宣告一個表的行應該交錯巢狀在父表內【27】。Oracle 類似地允許使用一個稱為 **多表索引叢集表multi-table index cluster tables** 的類似特性【28】。Bigtable 資料模型(用於 Cassandra 和 HBase中的 **列族column-family** 概念與管理區域性的目的類似【29】。
@ -488,7 +488,7 @@ db.observations.mapReduce(function map() {
map 和 reduce 函式在功能上有所限制:它們必須是 **純** 函式這意味著它們只使用傳遞給它們的資料作為輸入它們不能執行額外的資料庫查詢也不能有任何副作用。這些限制允許資料庫以任何順序執行任何功能並在失敗時重新執行它們。然而map 和 reduce 函式仍然是強大的:它們可以解析字串、呼叫庫函式、執行計算等等。 map 和 reduce 函式在功能上有所限制:它們必須是 **純** 函式這意味著它們只使用傳遞給它們的資料作為輸入它們不能執行額外的資料庫查詢也不能有任何副作用。這些限制允許資料庫以任何順序執行任何功能並在失敗時重新執行它們。然而map 和 reduce 函式仍然是強大的:它們可以解析字串、呼叫庫函式、執行計算等等。
MapReduce 是一個相當底層的程式設計模型,用於計算機叢集上的分散式執行。像 SQL 這樣的更高階的查詢語言可以用一系列的 MapReduce 操作來實現(見 [第十章](ch10.md)),但是也有很多不使用 MapReduce 的分散式 SQL 實現。請注意SQL 中沒有任何內容限制它在單個機器上執行,而 MapReduce 在分散式查詢執行上沒有壟斷權 MapReduce 是一個相當底層的程式設計模型,用於計算機叢集上的分散式執行。像 SQL 這樣的更高階的查詢語言可以用一系列的 MapReduce 操作來實現(見 [第十章](ch10.md)),但是也有很多不使用 MapReduce 的分散式 SQL 實現。須注意SQL 並沒有限制它只能在單一機器上執行,而 MapReduce 也並沒有壟斷所有的分散式查詢執行
能夠在查詢中使用 JavaScript 程式碼是高階查詢的一個重要特性,但這不限於 MapReduce一些 SQL 資料庫也可以用 JavaScript 函式進行擴充套件【34】。 能夠在查詢中使用 JavaScript 程式碼是高階查詢的一個重要特性,但這不限於 MapReduce一些 SQL 資料庫也可以用 JavaScript 函式進行擴充套件【34】。
@ -594,7 +594,7 @@ CREATE INDEX edges_heads ON edges (head_vertex);
Cypher 是屬性圖的宣告式查詢語言,為 Neo4j 圖形資料庫而發明【37】它是以電影 “駭客帝國” 中的一個角色來命名的而與密碼學中的加密演算法無關【38】 Cypher 是屬性圖的宣告式查詢語言,為 Neo4j 圖形資料庫而發明【37】它是以電影 “駭客帝國” 中的一個角色來命名的而與密碼學中的加密演算法無關【38】
[例 2-3]() 顯示了將 [圖 2-5](../img/fig2-5.png) 的左邊部分插入圖形資料庫的 Cypher 查詢。可以類似地新增圖的其餘部分,為了便於閱讀而省略。每個頂點都有一個像 `USA``Idaho` 這樣的符號名稱,查詢的其他部分可以使用這些名稱在頂點之間建立邊,使用箭頭符號:`Idaho - [WITHIN] ->USA` 建立一條標記為 `WITHIN` 的邊,`Idaho` 為尾節點,`USA` 為頭節點。 [例 2-3]() 顯示了將 [圖 2-5](../img/fig2-5.png) 的左邊部分插入圖形資料庫的 Cypher 查詢。你可以以類似的方式把圖的剩餘部分新增進去,但這裡為了文章可閱讀性而省略這部分的示例。每個頂點都有一個像 `USA``Idaho` 這樣的符號名稱,查詢的其他部分可以使用這些名稱在頂點之間建立邊,使用箭頭符號:`Idaho - [WITHIN] ->USA` 建立一條標記為 `WITHIN` 的邊,`Idaho` 為尾節點,`USA` 為頭節點。
**例 2-3 將圖 2-5 中的資料子集表示為 Cypher 查詢** **例 2-3 將圖 2-5 中的資料子集表示為 Cypher 查詢**