2010-09-10 91 views
8

我有一個哥們誰爲列出待售汽車的人運行一個web應用程序。有幾千個客戶使用它,每個客戶在數據庫中有數百甚至數千行(有些已經使用了5年,每月有數百輛汽車銷售,每銷售10行)(評論,消息,等等))。他已經在一臺物理服務器上的一個SQL Server數據庫中運行了這個系統,並且一直有20GB或者RAM和一對處理器,沒有任何問題。這是一種奇蹟嗎?什麼是數據庫太大?

就像大多數程序員一樣,我不是DBA,只是拜託了,感謝ORM等等。無論我看到什麼地方,人們都會談論需要爲Web應用程序的大用戶分割或獲取單獨的數據庫服務器。爲什麼是這樣?擁有大量數據庫或行的大型數據庫真的是低效的嗎?我應該計劃使用Cassandra還是其他方法?還是我可以依靠Postgres進行擴展?

+7

太大的時候,樹木被砍伐或拆除舊建築物,爲服務器騰出空間。 – BoltClock 2010-09-10 23:20:32

+0

爲什麼大多數程序員需要DBA?人們不再學習關係數據庫的東西了嗎?無論如何,當你擁有數千甚至數百萬用戶的數量不一定是數據庫的大小時,與分片等等的交易必須進行擴展。 – BobbyShaftoe 2010-09-11 18:30:10

+0

@BobbyShaftoe - 關於需要DBA的程序員的事情與程序員來自哪裏有關。程序員不習慣成爲軟件架構師或邏輯學家。他們是機器編碼員和系統管理員,以及DBA;計算機科學家,如果你願意。隨着高級編程語言的猛攻(例如Python,Ruby等),出現了新的程序員;那些根本不關心二進制文件,主板或真正的計算機科學的人。我自己感興趣,不是來自計算機科學背景,但我沒有足夠的時間來學習這一切。 – orokusaki 2010-09-11 20:04:27

回答

9

我個人不認爲你所描述的是那麼大的數據庫。服務器(20公里ram?;))聽起來不錯。這更多關於使用和設計。如果數據庫建立索引並且設計良好,那麼在當前的硬件上它可以增長很多。

在做任何類型的切換之前,我只會考慮歸檔無用的數據並優化查詢,以防出現性能問題。

+1

我不認爲它接近大。在效率方面,決定一個或多個措施並進行一些評估,這可能很有趣。日誌可能需要截斷,如果它已經運行了5年! – MikeAinOz 2010-09-10 23:47:50

3

在SQL服務器,Oracle或任何現代關係數據庫或非關係數據庫中應該沒有問題。我管理的數據庫有數百萬條記錄和數TB的數據。

2

在我看來,這沒什麼。在數據庫大小超過10 GB的多個表上擁有數千萬行並未導致MS SQL Server出現問題。當然,對於那麼多的數據來說速度並不是很快,但是它的工作原理很好。

並回答這個問題,太大太大了,它會造成問題。而當它開始導致問題取決於表結構和你的性能需求。

2

數據庫在存儲和檢索關係數據(即結構化數據和對其他數據的引用)方面非常高效 - 這就是他們設計的目的。老實說,有99%的人在關鍵價值商店和卡桑德拉身上散發着什麼,也不知道他們在幹什麼。數據庫服務器對於存儲大量數據來說非常合適,特別是如果您願意投入一些工作來正確調整數據。

也就是說,有Cassandra等人的用例。人。 - 如果您的密鑰/數值數據大部分是非結構化的,或者不需要一致性或想要冗餘碎片,則可能值得研究。

除非你是一個非常受歡迎的網站,你可能可以通過就好了一個體面的數據庫服務器中獲取 - 不轉,直到你確定爲什麼你需要切換。交換是很好,只是確保你的開關,因爲它提供您的需求更好,,因爲它是「酷網絡規模的事」

+0

當你回答這個問題時,我的意思是要回過頭來:在調整數據庫(除調整查詢和避免無關的查詢,這是我目前知道該怎麼做的)之外,什麼是一些基本的明顯步驟? – orokusaki 2011-05-22 03:46:33

5

原因拆分和獨立的數據庫服務器是在一些點使用多臺便宜的機器要比一臺昂貴的機器要便宜。硬件價格並不隨性能成線性增長,一旦達到某個特定點,獲得兩倍於機器的成本就會比獲得兩倍速度的機器便宜得多。

+0

非常有趣的考慮 - 你能否給出定價 - 性能比率中至少一個非常粗略的例子?即使是過時的,也是好的,我只是感興趣,它在實踐中看起來如何。 – 2016-02-13 06:37:47

3

通常情況下,您可以將組件分佈到不同的服務器上,以便更輕鬆地管理時間,恢復能力和性能。

確實有可能擁有一臺這樣的怪物機器,但是如果你的主板死掉,或者你的數據中心不可用,那麼你可能需要另一臺怪物機器。

通過分割一個網站或應用程序,在不同的服務器之間,獲得更便宜的機器更容易,而且更多。因此,您可以建立韌性,並且不會有對硬件衝突有類似要求的組件。

考慮服務器的恢復時間和恢復計劃也很重要。
當你的機器死機時會發生什麼,你能在商定的時間內更換它嗎?你可以在那段時間從備份恢復嗎?

SQL Server或其他企業級數據庫應該不會對10或100GB數據庫有任何問題,只要它們的設計不是太糟糕。 (我們有幾臺具有這種容量/使用的機器,根本沒有掙扎。)。