選擇 NoSQL 資料庫需要考慮的 10 個問題

2021-09-10 18:32:44 字數 2317 閱讀 6768

如果你是一家成熟的it軟體開發公司,那麼你很有可能已經有了熟悉sql的人。這個組不僅包括開發人員,還包括資料庫管理員(dba)。

除非您打算為新的nosql專案進行招聘,否則將會有對現有開發人員和dba的培訓成本。額外的培訓也可能會延長專案交付日期。

一種簡單的思考方式是:

在這個特定的專案中,這個團隊的開發人員以前都沒有nosql經驗,但是有大量的sql server經驗。使用nosql解決方案在培訓中增加了大約1個sprint,當然,這也是由於缺乏經驗和設計上的失誤。

如果您的系統需要acid屬性,那麼您最好還是堅持使用rdbms解決方案。否則,您將花費大量的時間試圖在您的應用程式/業務邏輯層複製acid保證,並且您可能仍然沒有rdbms解決方案那麼高效。

總是在先計算出您需要什麼樣的可伸縮性。在這個特殊的例子中,我們正在為微軟內部遊戲工作室構建系統。

有了以上粗略的估計,我們就可以計算併發性和儲存需求:

總併發數 = 工作室數量 * 標題數量每工作室 * 使用者數量每標題

=  15 * 5 * 5 =375 併發使用者

最大儲存 =  工作室數量 * 標題數量每工作室 * 環境數量 * 事件儲存大小每版本* 需要儲存的版本數

= 15 * 5 * 3 * 50 kb * 1000 = 11250000 kb =11.25 gb最大儲存

sql azure支援1024個併發開啟連線,並且能夠很容易地支援併發需求。另外,在考慮雲計算時,11.25 gb實際上是乙個非常小的數字。

這個系統並不是下乙個facebook或必應——那麼nosql的路線真的值得嗎?

在紙面上,azure表儲存是一種更便宜的選擇,因為它的每gb資料僅為美分,而sql azure則在此期間收取大約5美元的資料。

但是因為我們系統的儲存空間不會超過12 gb——這真的很重要嗎?每月60美元是我們在同乙個系統上花30分鐘寫**的錢。

因此,在決定使用nosql僅僅是因為它的單位成本更低之前,先弄清楚節省下來的錢是否佔了預算的很大一部分。

有趣的是,矽谷對nosql有偏見。這是因為感覺上nosql被認為具有內在的可伸縮性,並且rdbms被認為是不可伸縮的。記住,關鍵字是「感覺上」!

這種可擴充套件性的感覺可能會讓投資者相信,你的軟體正處於正確的軌道上,準備好接受大規模的採用,從而吸引他們的投資資金。

許多nosql公司本身就是風投公司,這也給他們帶來了積極的偏見。

最後,圍繞「nosql」的所有營銷活動都有助於推動投資者對你的產品的正面情緒。

如果你打算僱傭創業精神的人,他們中的很多人可能已經有nosql的知識了。

然而,如果你不在乙個主要的科技中心,那麼獲得這些人才的機會就很少了。您所在的區域可能有乙個現成的rdbms開發人員池——試圖在這樣的區域中招募nosql工程師和dba可能會延遲專案交付日期,並且由於**需求曲線,也會花費您更多的錢。

我的建議是與你的招聘機構/人力資源部門合作,對開發者進行市場調查,並將其納入你的技術選擇中。

考慮這樣乙個場景:您向客戶交付分析資料。您正在使用nosql來儲存分析資料。然而,您的乙個客戶決定堅持使用基於sql的報告系統。

這對你來說意味著什麼?

這意味著您現在需要將所有nosql資料轉換為sql格式,並通過azure資料工廠等服務將其向下推到客戶的sql資料庫。這是您需要承擔額外的開發和運營成本。如果您的所有下游客戶都在使用sql,那麼您需要認真地考慮是否使用nosql和做所有這些昂貴的資料轉換對您的系統有意義嗎?

如果你正在建立乙個像facebook newsfeed這樣的系統,你可能會希望這個系統是高可用性的,並且是最終一致。

另一方面,如果您正在構建乙個銀行系統(或者像我們的案例那樣的模式儲存),您可能希望支援強一致性,並放棄高可用性。

無論採用哪種方式,您都應該首先考慮cap定理的含義,然後決定您的系統是否需要sql或nosql解決方案。

如果您期望對資料庫模式進行大量更改,就像移動應用程式、實時分析、內容管理系統等經常發生的情況一樣,那麼nosql解決方案可能就是一種方法。

您可以使用乙個分割槽方案,它允許您以一種比大多數sql資料庫允許的更方便的方式更新您的資料庫模式。

請不要這樣做!

我曾見過一些人,他們只是迷戀於學習乙個nosql系統,並將其放入他們的簡歷中。這並沒有什麼錯——我對nosql技術也很著迷。

但是,請不要讓這成為選擇技術堆疊背後的驅動因素(有意識的或下意識的)。如果你願意的話,你可以在自己的時間裡學習。

坦率地說 – 沒有哪個玩家能贏者通吃!

在很多情況下,您可能需要sql和nosql技術在同一系統中並存。 例如,如果您正在構建像instagram這樣的**共享應用程式,則您的**可能位於nosql資料庫中,而您的登入/ acl資訊可能位於sql資料庫中。

如何根據效能選擇記憶體NoSQL資料庫?

本文主要內容是測試了不同nosql資料庫在測試工具ycsb中的表現。我們選取了3款流行的記憶體 in memory 資料庫管理系統 redis,tarantool 以及 couchbase,還有快取系統memchached。memchached雖然不屬於資料庫管理系統但常作為快速儲存系統使用。測試環...

常見的NoSQL資料庫

from nosql資料庫發展迅猛,據說現在已經有上百種nosql資料庫了,下面來了解下常見的一些nosql資料庫 先來看張表,了解下典型的nosql資料庫的分類 臨時性鍵值儲存 永久性鍵值儲存 面向文件的資料庫 面向列的資料庫 memcached tokyo tyrant mangodb cass...

常見的NoSQL資料庫

nosql資料庫發展迅猛,據說現在已經有上百種nosql資料庫了,下面來了解下常見的一些nosql資料庫 先來看張表,了解下典型的nosql資料庫的分類 臨時性鍵值儲存 永久性鍵值儲存 面向文件的資料庫 面向列的資料庫 memcached tokyo tyrant mangodb cassandra...