NoSQL 資料庫的選型和比較
2024 年 6 月 16 日 by Dex
思考情境和需求
由於工作上後端任務的需求,開始進行了 資料庫的選型研究,這也身為資料工程師的職責之一,同時也是想晉升至雲端架構師前,很重要的學習
再開始選擇工具時,一定要考量的便是使用情境、需求和使用者,從這三點去著手思考,才能找出最佳解決方案。
- 使用者:這次得使用者是我們後端開發者所需,因為這是安裝在後台的地端主機上,為了傳輸和串接方便所使用的,所以使用者上這次不要琢磨太多。
- 情境 : 需安裝在地端環境,需要一個輕量級的DB即可,因為是位於內網,不需要和外部互聯,所以可以是無需Server的。
- 需求:資料是以JSON 檔方式存在,導入到其中,且這個JSON檔的資料內容和資料格式可能會不一致,也就是有些JSON可能是有第1~5個key值,有些JSON資料又是第2~6個key值,這對需要固定相同欄位關聯式資料庫的Table較無法適用,所以在一開始設定就先不考慮一般的SQL資料庫
調研與解析
三種輕量型且符合JSON使用格式的NoSQL資料庫
為了找到最合適的的solution,我開始調研各種輕量級的 NoSQL 資料庫。與其他大型 NoSQL 資料庫相比,我決定探討三種符合 JSON 格式的 NoSQL :NeDB、LokiJS 、 PouchDB。這些資料庫都不需要伺服器,可以方便地安裝在本地端環境中,同時也能滿足我們對資料操作和查詢的需求。
其他常見的NoSQL資料庫比較
我也一並把其他常見的NoSQL,一起做調研和比較,以此確認自己的判斷是否合理和正確。
MongoDB
- MongoDB 是一個文件型 NoSQL 資料庫,適用於多種規模的應用。它具有高擴展性和靈活性。
- 優點: 1.強大的查詢和聚合功能。 2.高擴展性,適合大規模應用。
- 缺點: 1.需要伺服器運行,資源消耗較大。 2.安裝和管理較為複雜。
Redis
- 介紹:Redis 是一個高性能的鍵值型 NoSQL 資料庫,常用於高速緩存和實時應用。
- 優點: 1.高性能和低延遲。 2.支持多種數據結構。
- 缺點: 1.記憶體限制可能影響資料集大小。 2.不適合複雜查詢。
Cassandra
- 介紹: Cassandra 是一個高度可擴展和分散式的 NoSQL 資料庫,適合需要高可用性和大規模數據存儲的應用。
- 優點: 1.高擴展性和高可用性。 2.適合處理大規模數據和多數據中心複製。
- 缺點: 1.維護較為複雜。 2.不如其他資料庫靈活。
確認以上這些較大型的NoSQL都不符合我需要的解決方案後,我便要從三種輕量型JSON格式NoSQL挑選
最終選型結果
先公佈我的答案,如果需要處理大量JSON檔且頻繁地進行更新和讀取操作,最佳選擇是 PouchDB。
為什麼選擇 PouchDB?
- JSON 格式:這點是必須的,一定要符合,使用 JSON 格式存儲數據,與我們的需求完全契合。
- 數據可靠性:PouchDB 支持本地存儲和與 CouchDB雲端能夠同步,確保數據的一致和可靠性。
- 離線功能:PouchDB 特別適合離線應用,能在斷網時正常運行,並在恢復網絡時自動同步數據,這對於要安裝在地端環境的情境非常適合。
比較與考量
雖然LokiJS 在操作速度上具有優勢,但其數據持久性和大量數據的管理有一定挑戰。而 NeDB 雖然簡單易用,但在高併發下性能不佳且不支持同步功能。在更大規模和更高複雜度的應用場景下。MongoDB 和 Redis 提供了強大的功能和靈活性,而 Cassandra 和 CouchDB 則適合高可用性和分散式數據存取的應用。但這些大型的就先不考慮。綜合上述,PouchDB 在可靠性、靈活性和數據一致方面,使其成為我處理大量JSON文件並頻繁進行更新和讀取的最佳選擇。
最後附上調研比較的表格,給大家參考