SQL 或/與 Nosql
我正在設計一個具有基本功能的移動應用程序,例如註冊、身份驗證、文章、實時消息等。我認為對於這種工作,Nosql 應該更好。但在很長一段時間內,我也想介紹支付交易。由於最終的一致性,NoSql 在這裡應該是一個問題(我可能錯了)。所以我可以只對來自 Nosql 使用者數據的使用者 ID 欄位的事務使用 SQL。將兩者混合使用是否是一個好習慣。
我知道我可以從一開始就使用 SQL 數據庫,但我認為 NoSql 將非常適合基於縮放、分佈式數據庫等因素。
PS:我也是一名軟體開發人員,但主要從事機器學習和電腦視覺方面的工作。在數據庫上沒有太多工作。
所以我可以只對來自 Nosql 使用者數據的使用者 ID 欄位的事務使用 SQL。將兩者混合使用是否是一個好習慣。
我不認為將兩個不同的數據庫系統,尤其是不同類型的數據庫系統(RDBMS 和 NoSQL)如此緊密地耦合在一起以用於相關案例是一個好主意。它將被證明難以管理,並且難以保持跨數據庫系統的一致性(尤其是對於可能不符合 ACID 的 NoSQL 系統)。
我認為 NoSql 將非常適合基於縮放、分佈式數據庫等因素。
RDMBS 可以像 NoSQL 數據庫一樣進行擴展。通常,從硬體的角度來看,RDBMS 是垂直擴展的,而 NoSQL 數據庫是水平擴展的,但是一種方法相對於另一種方法沒有固有的優勢。還有可以水平擴展的 RDBMS,以及能夠垂直擴展的 NoSQL 數據庫系統。
從軟體的角度來看,隨著數據的增長而擴展的性能主要取決於一個人如何建構他們的數據庫,並且可以忽略不計地取決於選擇的實際數據庫系統,因為大多數現代數據庫系統可以在單個邏輯儲存單元中處理數以 PB 數據為基礎的數万億記錄(例如表格或文件)。
我正在設計一個具有基本功能的移動應用程序,例如註冊、身份驗證、文章、實時消息等。
何時選擇 NoSQL 數據庫系統而不是 RDBMS 取決於許多因素,我認為這些因素主要與性能無關。但是,對於確定何時選擇哪種類型的數據庫系統很有用的主要因素之一是基於您是否具有良好定義的模式這一事實。
NoSQL 數據庫非常適合儲存沒有具體架構的數據,可能會隨意更改結構/超出您的控制範圍,或者結構更改的速度超出您作為開發人員維護的容忍度數據層的結構。聽起來您有某種程度的具體模式,因此 RDBMS可以適用於您的案例,但您還應該考慮模型的結構是否容易頻繁更改或超出您的控制範圍,以及您是否作為開發人員不想管理維護數據層中的這些更改。
簡而言之,NoSQL 數據庫非常適合在您需要具體定義資料結構時推遲到應用層使用它。但它們不一定在擴展、分佈或性能方面天生就更好。不幸的是,網際網路上有很多關於這一點的誤解。