在小型和小型項目中使用 Postgres 而不是 SQLite 的優缺點是什麼?
我是一個全棧初級程序員,有幾個副項目,每個項目最多有幾張表和幾百或幾千行。
即使對於小型項目,我也喜歡使用 dockerized Postgres,因為它功能更齊全(從 SQLite 沒有的內置 regexp 函式等小東西到更大的東西,例如基於行的訪問控制 - 所有這些我可以不用,但它們很方便)我的知識將延續到更大的項目中。即使對於 1GB 的 VM,它的記憶體佔用似乎也很容易管理,因為 Postgres 容器似乎最多消耗大約 100/200 MB,因此,至少就我的理由而言,這絕對不是資源方面的問題。
另一方面,SQLite 顯然使用的資源更少,而且似乎強烈暗示它應該用於如此小的項目,因為我不完全了解的其他原因。
在小型項目中使用 SQLite 而不是 Postgres 的潛在原因是什麼?
主要區別在於您需要的功能、您將開發的應用程序及其案例。聽起來,如果您的PostgreSQL實例一次只消耗最多 200 MB 的記憶體,那麼您已經擁有小型數據庫,並且由於數據大小而選擇一種或另一種方式並不重要,而是’ 將更加具體,當您意識到SQLite是一個更簡單的數據庫時,它缺少許多像PostgreSQL這樣的完整****RDBMS的附加功能。
就個人而言,我會說除非您正在工作/託管數據的環境受限於使用SQLite之類的移動開發(因為它具有離線儲存的可移植性),否則我會預設選擇完整的RDBMS系統。
SQLite 對嵌入式數據庫很重要的缺點:
- 更多的準系統,更少的功能,數據類型等
- 優化器不如 postgres 聰明
SQLite 優點:
- 進行中
這意味著沒有上下文切換或網路通信,大量快速查詢的成本要低得多,應用程序和數據庫之間的數據傳輸要快得多。此外,沒有鎖,因為它是單個使用者。差異是巨大的。
- 小記憶體/程式碼佔用 + 程序內
當然,您有 1 GB 極慢的 DDR-4 21666 RAM。但是不是特別慢的記憶體,也就是 CPU 記憶體,很小。對於大量隨機記憶體訪問的工作負載,較小的記憶體佔用總是更好。
- 易於備份的數據庫
這對可用性很重要。備份數據庫只是意味著關閉應用程序,複製文件。無需關閉伺服器,使用 pg_dump 等。