2009-11-19 82 views
2

我想知道使用數據庫的權衡和其他選項是什麼?另外,哪些問題不適合數據庫?數據庫的選擇?

我關心關係數據庫。

+0

像Facebook,Twitter,Wikipedia等Web應用程序不適合使用您所知道的數據庫。對於相關文章,我建議你看看:http://highscalability.com/ – 2009-11-19 07:40:04

+0

這三個實際上都是由MySQL運行的。 – 2009-11-19 07:49:30

+0

你應該在你的問題中更好地定義術語「數據庫」。 – 2009-11-19 07:49:57

回答

5

數據庫的概念是非常廣泛的。我將在這裏介紹的內容做一些簡化。

對於某些任務,最常見的數據庫是關係數據庫。它是基於關係模型的數據庫。關係模型假設您以行的形式描述數據,屬於表中每個表具有給定列數和固定列數的表。您以「每行」爲基礎提交數據,這意味着您必須在包含與您表的所有列相關的數據的單個鏡頭中提供一行。每個提交的行通常會獲得一個在表級別唯一的標識符,有時在數據庫級別。您可以在關係數據庫中的實體之間創建關係,例如通過說表中的給定單元格必須引用另一個表的行,以保持所謂的「參照完整性」。

這個模型運行良好,但它不是唯一一個。在某些情況下,數據更好地組織爲一棵樹。文件系統是一個分層數據庫。從一個根開始,並且所有東西都在這個根下面,像結構樹一樣。另一個模型是關鍵/值對。 Sleepycat BDB基本上是一個關鍵/價值實體的商店。

LDAP是另一個具有兩個優點的數據庫:存儲相當通用的數據,它是按設計分佈的,並且是爲閱讀而優化的。

圖形數據庫和三重存儲允許您存儲圖形並執行同構搜索。如果你有一個非常通用的數據集,通常需要這個數據集,這個數據集可以包含對你的實體的廣泛描述,如此廣泛,基本上是未知的。這與關係模型完全相反,在這種模型中,用一組非常精確的列創建表,並且知道每列將包含哪些內容。

也存在一些基於關係列的數據庫。不要逐行提交數據,而是按整列提交它們。

因此,要回答你的問題:數據庫是一種存儲數據的方法。從技術上講,即使是一個文本文件也是一個數據庫,雖然不是特別好的一個。數據庫背後的模型選擇主要與您的應用程序的典型需求相關。

將答案設置爲CW,因爲我可能會說一些嚴格不正確的東西。隨意編輯。

1

這是一個相當寬泛的問題,但數據庫非常適合管理relational data。替代品幾乎總是意味着設計你自己的數據存儲和檢索引擎,對於大多數標準/小型應用程序來說這是不值得的。

不適合數據庫的典型場景是大量數據的存儲,這些數據被組織爲相對較少的邏輯文件,在這種情況下,簡單的類似文件系統的系統就足夠了。

0
  • 對於搜索應用全文搜索引擎(其中一些被整合到傳統的DBMS,但其中一些是沒有),可以是一個很好的選擇,同時允許更多的功能(各種語言意識,具有半結構化數據的能力,排名......)以及更好的表現。

  • 另外,我在哪裏見過配置數據存儲在數據庫應用中,雖然這是有道理的在某些情況下,使用純文本文件(或YAML,XML和等)和裝載在初始化過程中的基礎對象可能是優選的,這是由於這種替代方案的自包含性質以及易於修改和複製這樣的文件。

  • 平面日誌文件,可以是一個很好的選擇,記錄到DBMS,這取決於過程的使用。

這表示,在過去的10年左右的時間,在DBMS系統,在一般情況下,增加了許多功能,以幫助他們處理不同形式的數據和不同的搜索功能(恩:全文檢索提到脫穎而出,XML,BLOB的智能存儲/處理,強大的用戶定義函數等),這使得它們更通用,因此是相當普遍的服務。 他們的實力主要依靠關係數據,但是

0

如果您有要存儲和查詢的數據,請使用數據庫。

從技術上講,大多數東西都適用於數據庫。計算機用於處理數據,數據庫用於存儲它們。

唯一要考慮的是成本。部署成本,維護成本,時間投入,但它通常是值得的。

如果你只需要存儲非常簡單的數據,平面文件將是一個替代(文本文件)。

注意:您使用的是通用術語「數據庫」,但這些術語有許多不同的類型和實現。

1

不要忘記看看NOSQL數據庫。這是非常新的技術,非常適合在關係數據庫中不適合/不適合的東西。

希望這會有所幫助。

問候,

Sebastiaan