自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數據庫擴展策略

譯文
數據庫
在本文中,您將了解數據庫服務器擴展的不同解決方案和技術,分為讀取和寫入兩大類策略。

了解數據庫擴展的不同技術,有助于我們選擇適合我們需求和目的的合適策略。

因此,在這篇文章中,我們將展示不同的數據庫服務器擴展解決方案和技術,分為讀取和寫入兩大類策略。

讀取/加載

為了解決應用程序有時負載過大的問題,我們匯總了三種技術:

 緩存

緩存技術將頻繁請求的數據或費時的計算操作響應存儲在臨時內存中。緩存中存儲的數據需要根據應用程序的性質進行更改,并且可以通過緩存失效和清除技術進行更新,以保持數據的一致性。可以通過緩存過期時間(TTL)方法或其他依賴于所使用的緩存模式來實現。

使用不同的緩存模式可以作為實施緩存解決方案的策略。Caching aside是針對大量讀取并且即使緩存失效也能工作的解決方案。Read-through和Write-through一起使用,這是適用于讀取密集型工作負載的良好選擇,但如果緩存失敗會導致系統(tǒng)故障。Write-back則適用于寫入密集型工作負載,并且被各種數據庫管理系統(tǒng)實現所使用。

緩存緩存

根據要求,例如需要大量讀取、大量寫入或二者混合,我們可以決定使用哪種模式以更好應對緩存或數據庫故障。

數據庫復制

復制是一種工作方式,其中有一個被稱為“主數據庫”的數據庫,所有寫入請求都流向該數據庫。此外,我們將主數據庫制作成精確的副本,作為稱為“輔助節(jié)點”的新節(jié)點副本,僅負責處理讀取請求。主數據庫不斷向從節(jié)點提供更新的數據,使得我們在集群中的所有節(jié)點之間保持數據一致性。

復制是處理容錯和維護CAP定理和系統(tǒng)可擴展性的有效策略。假設其中一個節(jié)點故障,我們仍然可以提供服務,因為我們在其他節(jié)點中進行了相同的數據復制。此外,在集群中,在主節(jié)點故障時,一個節(jié)點可以接管并成為主數據庫。復制還有助于減少應用程序的延遲,因為我們可以將數據庫部署并在不同地區(qū)進行數據復制,例如CDN,并且可以輕松地由本地用戶訪問。

數據庫復制數據庫復制

同步和異步

隨著節(jié)點數量的增加,維護副本節(jié)點數據的一致性變得更加復雜。根據需求,這個問題可以通過使用同步或異步復制策略來解決。

同步策略的優(yōu)勢在于延遲為零,并且數據始終保持一致,但劣勢是性能受到影響,因為需要等待所有副本更新并被發(fā)行者確認。在異步策略中,寫操作變得更快,因為主節(jié)點不需要等待確認,但如果某個副本未能更新數值,則會出現不一致狀態(tài)的問題。

請記住,并沒有萬能策略,最佳策略取決于我們的需求。在一致性、可用性或分區(qū)(CAP定理)之間必須做出權衡。CAP定理指出我們每次只能保證其中兩個。

索引

索引用于定位和快速訪問數據,提高數據庫活動的性能。一個數據庫表可以與之關聯(lián)的一個或多個索引。

通過索引,查詢性能得到提升,數據檢索速度更快;索引增強了數據訪問效率,減少了檢索數據的I/O次數;索引優(yōu)化了數據排序,因為數據庫不需要對整個表進行排序,只需對相關行進行排序;索引使得在數據量增加的情況下仍然能夠保持數據一致性;此外,索引還確保了數據庫的完整性,避免存儲重復數據。

但索引的缺點也很明顯——索引需要更多的存儲空間,增加了數據庫的大小。同時,在表中進行添加、刪除和修改時也會增加維護開銷。在特定查詢或應用程序中選擇適當的索引可能會比較困難。

寫入

對于頻繁向數據庫寫入大量數據的應用程序,我們可以采用分片(sharding)和NoSQL作為策略。

分片

分片或數據分區(qū)允許將大型數據庫數據拆分為更小、更快、更易管理的部分,將數據庫拆分為多個主要數據庫。有兩種類型的分片,垂直分片和水平分片。

分片的優(yōu)勢在于查詢優(yōu)化,提供更好的性能和減少延遲。它使得用戶數據可以跨不同地理位置進行訪問,從而可以更快地為特定地區(qū)的用戶提供服務。此外,它還避免了單點故障的問題。

但分片的一個缺點是當我們沒有正確地將數據在分區(qū)之間進行平衡時,可能會導致某些分區(qū)負載過重。根據所選擇的策略不同,可能會出現一些包含大量數據的分區(qū)和一些包含較少數據的分區(qū),從而導致對于大型分區(qū)上的查詢變慢。另一個缺點是一旦實施了切片策略并將數據拆分到不同的數據庫中后,很難回退并恢復到之前無切片策略時的狀態(tài)。

對于數據進行切片操作可以選擇邏輯切片或物理切片。邏輯切片是指在同一臺物理機器上具有不同的數據子集,而物理切片可以在一臺物理機器上擁有多個分區(qū)子集。

在進行數據切片時,我們可以選擇算法切片或動態(tài)切片。存在不同的算法和動態(tài)切片技術,其中基于鍵的、基于范圍的和基于目錄的分片是最常用的方法。

垂直分片

對于垂直分片,我們將每個表放置在不同的機器上。例如,用戶表、日志表或評論表都放置在不同的機器上。當查詢傾向于僅返回數據的子集時,垂直分片是有效的。例如,如果某些查詢僅請求名稱,而其他查詢僅請求地址,則可以將名稱和地址分片到單獨的服務器上。

垂直分片垂直分片

水平分片

如果我們有一個非常大的單個表,我們可以應用水平分片。我們將單個表中的一部分相關數據拆分到多臺機器上。當查詢傾向于返回經常分組的行的子集時,水平分片是有效的。例如,基于短日期范圍篩選數據的查詢非常適合水平分片,因為日期范圍將必然限制查詢到僅一部分服務器上。

水平分片水平分片

NoSQL

NoSQL不是一個關系型數據庫,本質上是一個鍵值對模型。鍵值對模型天然能夠輕松地在多臺不同的機器上進行自動擴展。NoSQL分為四個主要類別,列式存儲將數據按列族存儲,圖形存儲將數據存儲為節(jié)點和邊,鍵值存儲將數據存儲為鍵值對,文檔存儲將數據存儲為半結構化文檔。

NoSQL 數據庫種類NoSQL 數據庫種類

NoSQL數據庫允許動態(tài)模式,可以在不改變模式結構的情況下適應變化。此外,它提供了水平可擴展性,通過向數據庫集群添加更多節(jié)點來擴展。它還被設計為高可用性,能夠自動處理節(jié)點故障,并在集群中的多個節(jié)點之間進行數據復制。

與關系型數據庫相比,這種非關系型數據庫具有多個優(yōu)點,如可擴展性、靈活性和成本效益。然而,它們也有一些缺點,例如缺乏標準化、缺乏ACID兼容性以及對復雜查詢的支持不足。

總結

在本文中,我們介紹了處理數據庫可擴展性時可以實施的策略。

我們將策略分為讀取和寫入兩個方面。對于讀取方面,我們可以應用不同的緩存機制,使用主副本數據庫進行復制,以及實施索引來定位和快速訪問數據。對于寫入可擴展性,有分片或NoSQL等策略,它們都有各自的優(yōu)點和缺點。

最后,請記住,沒有完美的解決方案,我們需要了解自己的需求,并在選擇最佳策略時進行權衡。


作者 | Jailson Evora

原文鏈接 | Databases Scaling Strategies - DZone

責任編輯:劉芯
相關推薦

2023-02-16 17:44:13

2013-03-12 09:51:02

2024-07-16 08:22:09

2023-08-15 13:53:54

2024-08-21 08:27:30

擴展數據庫服務器

2017-06-26 08:28:41

PostgreSQL數據庫單機

2017-03-14 14:09:08

數據庫Oracle備份

2010-11-29 10:11:05

Sybase數據庫死鎖

2010-11-15 16:13:24

Oracle數據庫性能

2010-05-06 12:44:47

Oracle數據庫

2019-11-06 09:23:20

數據庫配置網絡

2010-11-11 14:36:17

MySQL

2011-03-04 13:17:33

2009-02-03 09:04:51

Oracle數據庫Oracle安全策略Oracle備份

2012-11-20 16:36:15

云數據庫

2011-08-11 10:37:48

2023-09-01 15:34:34

數據庫開發(fā)

2009-04-17 11:28:16

Oracle備份恢復

2017-05-03 11:43:51

Redis數據庫

2011-03-14 14:34:57

點贊
收藏

51CTO技術棧公眾號