是否有任何記憶體中 NoSQL 數據庫?
鑑於 NoSQL 數據庫旨在通過添加更多伺服器來支持水平可擴展性,那麼有沒有設計為完全不使用持久磁碟儲存的數據庫?
我正在研究一個需要水平可擴展性但也需要加密任何靜態數據的應用程序。這最終可能意味著將大量數據從 NoSQL 數據庫中提取到記憶體記憶體中,例如 memcached。這讓我想知道:是否有任何單一產品具有 NoSQL 數據庫的規模和容錯特性,但僅在記憶體中執行?
將數據庫儲存在記憶體中的問題是,如果您有任何類型的記憶體問題或伺服器必須重新啟動,或者任何此類問題,您的所有記憶體都會被刷新。
這就是人們不將數據庫儲存在記憶體中的原因。
現在,有一些記憶體工具在記憶體中,可以作為一個非常簡單的數據庫,比如 memcached。這可能會滿足您的需求。如果您查看 tmpfs 和 ramfs ,您可以創建一個存在於記憶體中的文件夾並將您的文件正常移動到那裡。
因此,如果您使用 MongoDB、mysql 或任何您使用的工具,您可以將數據文件夾放在 RAM 文件夾中。這將使數據庫具有超快的讀寫速度。一切都會非常快。您將受限於您擁有的 RAM 減去作業系統和其他正在執行的東西的大小。
另外,請注意:MongoDB 喜歡將寫入儲存在記憶體中,直到磁碟有機會寫入,因此您可能希望關閉該功能,因為它的速度相同。
我的建議是使用 memcached,然後將它與位於磁碟上的普通數據庫混合使用。這個概念是通過某些系統上的 PHP 會話完成的。
http://mickeyben.com/2009/12/30/using-nginx-as-a-load-balancer.html
它的基本工作方式是,如果在 memcached 中找到您的記錄,則它不會檢查數據庫。如果未找到,則執行三 (3) 項操作:
- 檢查數據庫
- 將數據發送到 memcached
- 將數據發送到呼叫函式
:)
通過禁用基於 rdb 和 aof 的持久性,Redis 可以用作記憶體數據庫。