為什麼資料庫不能通過不斷的新增伺服器節點來實現擴充套件呢?

時間 2021-05-09 22:40:56

1樓:紀路

這個問題還是問的太籠統。

首先資料庫是可以通過不斷新增伺服器節點來實現擴充套件的,即使是MySQL也有集群模式,更不用說那些天生就是為了分布式優化的資料庫了,比如MongoDB,memcache,更不用說那些生來就是分布式的資料庫了Hive,Impala。這種分布式資料庫都可以部署在數千台伺服器上。但是這其中有幾個概念要科普一下:

原教旨CAP主義:

2023年Eric Brewer提出CAP,即「強一致性/可用性/分割槽容忍性」,這個概念,並且他同時證明了對於乙個大規模分布式資料系統來說CAP三要素不可兼得。其中:

強一致性指,在分布式系統中同一資料多分副本的情況下,對於資料的更新操作體現出的結果只跟乙份資料是一樣的

可用性指,分布式資料系統對於讀/寫操作都要保證在一定時限內完成。

分割槽容忍性指,在大規模分布式資料系統下,資料必然分布在不同的機器上,不同的機器可能處在不同的網路分割槽中,而這些機器之間出現通訊問題的情況必然會發生,系統要在此種情況下仍能正常工作。

*關於如何證明這三要素為什麼不可兼得,有興趣可以自行google。

也就是如果增加了機器來對資料庫進行擴充套件,必然要面臨痛苦的抉擇,如何抉擇這是乙個見仁見智的問題,儘管如此工程上還是有乙個統一的共識就是BASE原則,即「基本可用/軟狀態/最終一致性」。當然BASE也只是個指導原則,最終的選擇還是百家齊放的。

2樓:蹲在樓梯口

可以,但是增加節點意味著成本增加,不僅僅是購買硬體的成本,還有部署維護成本,還有因多台伺服器之間同步問題所帶來的bug。我就遇到過因兩台伺服器時間相差30秒,導致乙個本來每天只能簽到一次的功能,可以在一定時間內無限簽到,無限刷積分,汗

3樓:

加節點擴效能是有上限的。資料量一定大時,為了效能上得去一般需要選擇一兩條性質放棄/放鬆,比如放鬆強一致性的要求,改成eventual consistency。

為什麼void pv new void 不能通過?

已登出 void型別沒有辦法申請記憶體,因為它不像int double,要分配記憶體的大小不確定。我猜你應該是想要申請乙個任意型別的記憶體空間,這個的話你查一查template 模板 關鍵字。 涇渭漳淮 你 老闆,我要買雙鞋。老闆 要多大的?你 就要鞋那麼大的。老闆 滾!你 編譯器,我要申請一塊記憶...

為什麼不能在前端連線資料庫呢?

codefollower 前端直接訪問後端資料庫很容易實現的,只是這麼用的人不多,通常是不想把業務邏輯直接暴露在前端。我做的資料庫 Lealone 幾年前就可以在前端直接訪問了。比如在前端像後端一樣用 ORM 框架來訪問後端資料庫lealone Lealone Plugins在前端還可以控制後端事務...

資料庫到底指的什麼?

Sugar Star 我認為資料庫可以簡單地理解為存放資料的容器,但是現在的資料庫產品不僅僅擁有存放資料的功能,還擁有複雜的計算功能,支援各種複雜的查詢,甚至支援庫內的機器學習 深度學習等。 肖堂 數蠶 現代社會計算機具有強大的計算能力,網路化能力,對工作的效率提高是巨大的。但計算機可以處理的資料實...