我應該將 SQL 與 NoSQL 用於文件目錄嗎?
我將實施一個系統,該系統將儲存 2.5 億個文件/使用者。我想從客戶端執行列表操作,客戶端應用程序一次將獲取 100 條記錄。
我要獲取的記錄是什麼?
- 文件名
- 最後修改
- 儲存在 S3 中的該文件的 https URI,例如儲存。
在伺服器端,我應該使用 SQL 還是 No-SQL 來儲存這些元數據資訊?
我正在考慮使用具有以下架構的 RDBMS:
- 使用者身份
- 記錄ID
- 文件名
- 時間戳
- URI
由於 fetch 查詢一次只需要返回 100 條記錄,我在想 SQL。如果我們將所有使用者資訊保存在 NoSQL 中的一行中,那麼查詢下 100 條記錄或為特定使用者附加新文件將需要很長時間。
有什麼建議麼?我是新手,所以如果我的問題太模糊/太寬泛,請告訴我,我可以針對任何具體問題對其進行更新。
您的案例是最簡單的類型,因此無論您使用的是 RDBMS 還是 NoSQL 系統,您都可能會看到非常相似的性能。但在決定數據庫系統時,您應該考慮以下幾點:
- 你有一個結構良好的模式嗎?
回答:是的,當您能夠通過指定欄位及其數據類型直接闡明該架構的結構時,您似乎可以做到:
UserId, RecordId, FileName, Timestamp, URI
2. 您的架構是否會以高頻率更改,超過您能夠使數據庫實體結構保持最新的程度?答:根據您計劃在文件表中儲存的數據類型,我不這麼認為,但這由您決定。NoSQL 無模式的靈活性最適合當您擁有經常更改或非具體模式的情況,並且作為開發人員您不想承擔維護數據庫端結構更改的責任。但是,如果/當架構更改時您可以維護數據庫實體,那麼 RDBMS 也可以正常工作。 3. 你的數據是相關的嗎?
答:是的,聽起來很像,尤其是當您提到您還有“使用者資訊”時,我認為這可能與您的文件表有關
UserId
。您還可以考慮其他原因,例如成本效率、易於擴展的基礎設施可維護性、分片與垂直擴展,但這些是當今大多數數據庫系統都可以使用的更精細的細節(無論您選擇 SQL 還是 NoSQL 解決方案)它們更複雜,超出了何時選擇 SQL 或 NoSQL 解決方案的一般範圍。
上述問題是我認為應該用來確定何時選擇 RDBMS 還是 NoSQL 解決方案的主要問題。聽起來您的案例是您的模式定義良好且關係良好,RDBMS 將是一個不錯的選擇。