SnappyDB—Android上的NoSQL資料庫
還是從需求出發。在開發App的時候,經常需要快取一些資料,不至於每次開啟App都是空的,需要從網路下載資料。例如新聞客戶端,需要快取上次開啟的新聞。
一般的做是使用SQLite資料庫來儲存資料,或者把資料序列化寫到本地檔案中。這兩中方法,我在之前的專案中都用過。我先來說一下這兩種方法的缺點:
使用SQLite資料庫儲存: 對於儲存快取資料來說,這樣做未免太重量級了,存取資料都比較麻煩。當然,你還要知道SQL語法。小心設計資料庫結構。對於相對複雜的資料,你還要設計多張表。還需要小心維護資料庫的升級。
使用檔案快取: 寫檔案儲存,需要你儲存的資料都實現
Serializable
介面,當然,這不是什麼大問題。你要維護你的檔案內容結構。如果資料比較多,你可能要維護多個檔案的讀寫。效能也是比較堪憂。
說了上面那些方法的缺點,自然是為了請出本文的主角——。
SnappyDB是一個鍵-值資料庫,是非常流行的NoSQL資料庫。可以儲存任何基本型別和序列化(Serializable
)安全的資料及其陣列。
首先來看一下基本用法,如下:
DB snappydb = DBFactory.open(context); //create or open an existing databse using the default namesnappydb.put("name", "Jack Reacher"); snappydb.putInt("age", 42); snappydb.putBoolean("single", true); snappydb.put("books", new String[]{"One Shot", "Tripwire", "61 Hours"}); String name = snappydb.get("name"); int age = snappydb.getInt("age"); boolean single = snappydb.getBoolean("single"); String[] books = snappydb.getArray("books", String.class);// get array of stringsnappydb.close();
可以看到使用非常方便,API簡單到不用去學習。
另外,SnappyDB在儲存和讀取序列物件的時候,使用的是庫,也Java內建序列化更快。更大的優勢是,你並不要為資料去顯式的去實現Serializable
介面。這就意味著你以前的程式碼完全不要做任何改動。
Number[] array = {new AtomicInteger (42), new BigDecimal("10E8"), Double.valueOf(Math.PI)};snappyDB.put("array", array);
更多API文件,請看官方的。
再來看看效能,如下圖:可以看到,效能上甩SQLite幾條街。
當然,SnappyDB在資料的穩定性上,還是有待驗證的,應該是不如成熟的SQLite。多執行緒訪問安全問題,作者也沒有提到。但是從我們的需求(用來快取資料)來看,SnappyDB應該是非常好的選擇。
這裡我並沒有橫向比較Android上的其他NoSQL資料庫。例如,是一個比較嚴謹NoSQL的實現,還有簡單輕量級的實現,如和。這些都沒有用過,也不好做判斷,以後如果用上了,再來補充。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4369/viewspace-2814833/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- NoSql資料庫SQL資料庫
- 四類NoSQL資料庫SQL資料庫
- NoSQL資料庫興起SQL資料庫
- 如何選擇合適的NoSQL資料庫SQL資料庫
- Nosql 資料庫 MemCache、Redis、MongoDB 的區別SQL資料庫RedisMongoDB
- 四大類NOSQL資料庫SQL資料庫
- redis(1)NoSQL資料庫簡介RedisSQL資料庫
- AWS Around---NoSql資料庫的不同型別SQL資料庫型別
- NoSQL資料庫的分散式演算法講解SQL資料庫分散式演算法
- 在 Android Studio 上除錯資料庫 ( SQLite )Android除錯資料庫SQLite
- NoSQL 資料庫案例實戰 -- MongoDB資料備份、恢復SQL資料庫MongoDB
- 分享 | 滴滴分散式NoSQL資料庫Fusion的演進之路分散式SQL資料庫
- Oracle、NoSQL和NewSQL 資料庫技術對比OracleSQL資料庫
- NoSQL資料庫漏洞可導致資料洩露 影響成千上萬Microsoft Azure客戶SQL資料庫ROS
- NoSQL最新現狀和趨勢:雲NoSQL資料庫將成重要增長引擎SQL資料庫
- 選擇 NoSQL 資料庫需要考慮的 10 個問題SQL資料庫
- 主流資料庫和 NoSQL 的 Rust 客戶端驅動程式資料庫SQLRust客戶端
- SDB :純 golang 開發、資料結構豐富、持久化的 NoSQL 資料庫Golang資料結構持久化SQL資料庫
- Oracle、NoSQL和NewSQL 資料庫技術對比(一)OracleSQL資料庫
- 40個最佳免費和開源NoSQL資料庫SQL資料庫
- 為什麼NoSQL資料庫這麼受歡迎?SQL資料庫
- 深入理解Amazon DynamoDB NoSQL雲資料庫服務ANSQL資料庫
- 悉數11種主流NoSQL文件型資料庫HQSQL資料庫
- 如何將資料從Hadoop匯出到關係型和NoSQL資料庫?HadoopSQL資料庫
- Spring Boot實戰系列(2)資料儲存之NoSQL資料庫MongoDBSpring BootSQL資料庫MongoDB
- 並推出了關係型資料庫功能來補充其核心NoSQL資料庫功能資料庫SQL
- 非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解資料庫SQL
- Android資料庫檢視庫---Android-Debug-DatabaseAndroid資料庫Database
- 分散式NoSQL資料庫MongoDB初體驗-v5.0.5分散式SQL資料庫MongoDB
- 從SOL到NoSQL,資料庫還要向何處演進?SQL資料庫
- Android 連線資料庫Android資料庫
- Android除錯資料庫的福音:Android-Debug-DatabaseAndroid除錯資料庫Database
- Oracle、NoSQL和NewSQL 資料庫技術對比(二)- 終結OracleSQL資料庫
- SQL與NoSQL資料庫入門基礎知識詳解SQL資料庫
- Python 潮流週刊#75:用 Python 開發 NoSQL 資料庫(摘要)PythonSQL資料庫
- Android 資料庫綜述(一) 資料庫片的升級與資料的遷移操作Android資料庫
- [Redis 系列]redis 學習一,資料庫的演進及 Nosql 的初步認知Redis資料庫SQL