如果我們在程式執行期間有暫存資料的需求,不一定都一定要儲存在磁碟機,假使資料的生命週期是在執行期間內,放在記憶體內也是一個選項,LiteDB 的資料庫檔案除了放在磁碟機,還可以改儲存在記憶體中,而且只要改一個地方就可以。
2018-05-08
如果我們在程式執行期間有暫存資料的需求,不一定都一定要儲存在磁碟機,假使資料的生命週期是在執行期間內,放在記憶體內也是一個選項,LiteDB 的資料庫檔案除了放在磁碟機,還可以改儲存在記憶體中,而且只要改一個地方就可以。
上一篇介紹 LiteDB 基本的 CRUD,但是我相信這還是有點不太夠的,隨著寫入的資料愈來愈多,做非主鍵條件查詢肯定是會愈來愈慢的,LiteDB 在沒有建 Index 的情況之下,如果查詢條件不是主鍵,它是對整個 DB 做 Full Document Scan,意謂著 LiteDB 必須將每一筆資料反序化出來之後一筆一筆去比對,不僅慢又浪費記憶體。
LiteDB 預設會拿我們類別裡面名稱為 Id 的屬性來當作 PrimaryKey,如果我們的類別裡面沒有名稱為 Id 這個屬性會怎樣? 會發生 Exception!這是 LiteDB 預設的一個限制,那如果我們的 PrimaryKey 就不叫 Id 要怎麼辦?我們就來看一下怎麼解決?
LiteDB 是一個 Document-Oriented 的資料庫,是屬於 NoSQL 這一邊的,經常被拿來跟 SQL 陣營的 SQLite 比較,不過我個人是覺得這沒什麼好比的,都很好用,但是 LiteDB 不用下 SQL 語法,而且它有支援到 .Net Standard 2.0,意謂著 LiteDB 是可以跨平台的,我們可以在 Windows、Linux、macOS、Android、iOS 上使用它,非常適合在 Local 端拿來儲存資料,甚至於網站在 POC 期間這種使用者人數不多的情況之下,都可以先用 LiteDB 撐著。