Database-Recommendation

儲存和檢索文章/部落格文章/論壇文章等的最佳數據庫

  • February 15, 2022

我正在嘗試創建一個數據庫來儲存文章、文章等。它們通常包含標題列、內容和一些元數據,如作者或日期時間戳,我假設每一個都是不同的列。內容和標題可以是任意長度。

我的第一直覺是將 PostgreSQL 與 varchar 列一起使用。但我正在閱讀 NoSQL,它似乎是編寫、排序和檢索這類數據的更好選擇,我正在研究 mongodb 和 Cassandra。

對於推薦系統,數據收集將產生高寫入率和數據的高讀取率。

我也在看 aws,我看到有 documentdb(mongodb)、keyspaces(Cassandra) 和 dynamodb。對於我的情況,哪個是最佳選擇?還是我應該堅持使用 PostgreSQL?

請參閱我最近關於 SQL 與 NoSQL 數據庫的回答以獲取更多資訊,但其中最相關的部分是:

何時選擇 NoSQL 數據庫系統而不是 RDBMS 取決於許多因素,我認為這些因素主要與性能無關。但是,對於確定何時選擇哪種類型的數據庫系統很有用的主要因素之一是基於您是否具有明確定義的模式這一事實。

NoSQL 數據庫的主要優點之一是缺乏嚴格的模式強制執行。這允許開發人員不必在數據層中管理模式,並在他們確實需要具體定義它時推遲到數據在應用程序層中使用。

這是一個好處的原因是因為如果您的架構更改非常頻繁、定義不明確或超出您的控制範圍(例如從外部來源獲取數據),那麼 NoSQL 使您能夠不必在數據儲存在數據庫中時對其進行管理。相反,您可以在使用數據時處理您希望如何利用鬆散結構,這通常位於堆棧的更下方(例如,在應用程序層中)。

如果你有一個具體的模式,或者一個會以你可以在數據層中管理的速度變化的模式,那麼像 PostgreSQL 這樣的 SQL (RDBMS) 就可以了。

您能夠表達具體對象(articlesposts)和這些對象的屬性(header列,content以及一些元數據,如author日期時間戳)這一事實表明您具有某種具體的模式。同樣在您提到的評論中“它總是相同的,標題,內容,元數據明智。 ”這是您擁有具體架構並且可以利用 RDBMS 的另一個好兆頭。

問題是每個的長度和我們可能得到的數據類型

這通常不是問題,因為大多數現代數據庫系統(SQL 和 NoSQL)都具有儲存列數據的能力。例如,PostgreSQL 有VARCHAR(N)TEXT列數據類型,我相信它VARCHAR(N)可以在單行中大約容納 1 GB(大約 10 億個字元串字元)的數據,並且TEXT它可以儲存的數據量沒有限制。有些人確實將原始圖像數據儲存在他們的關係數據庫中,儘管無論您選擇哪種類型的數據庫(NoSQL 與 SQL),人們都在爭論這是否通常是好的做法 - 我的意見是將數據庫中的文件路徑儲存到儲存的文件中在其他地方的文件系統中。

因此,由您來決定您的模式定義得有多好、它可能多久更改一次,以及您是否要管理數據庫中的這些更改。但是在這種情況下沒有“最好的數據庫”,它們的性能都會相對相等。

您可能會發現更多有用的資訊,進一步閱讀我寫的另一個答案,該答案更深入地介紹了在 NoSQL 與 SQL 數據庫選擇的上下文中具體與鬆散模式定義的細節。

引用自:https://dba.stackexchange.com/questions/307514