MinDB - Database on JavaScript

2014-10-26 08:21:25 +08:00
 willwen

如果以上兩個問題你都回答是,請繼續看下來吧。

MinDB是什麼?一針見血——Database on JavaScript。如果你曾經做過需要操作或存儲大量數據的前段項目,你應該能遇到過這兩個問題:
1. 數據放哪裡?
1. 怎麼操作才比較簡便?

MinDB

在介紹MinDB之前,我們先來講講JavaScript在數據存儲方面的黑歷史。

作為開發者,你一定知道Cookies這一技術,這個本來用於在服務端和瀏覽器之間進行數據傳輸的技術,就是最原始的前端數據存儲方案。早已作為標準的它,擁有接近100%的兼容份額,可是就是⋯⋯太難用了!容量太小了!

後來,我們的MS巨頭在IE中率先實現了DOM存儲技術,那就是User Behavior,它允許腳本程序在瀏覽器中,進行少量的數據存儲,可還是太難用了⋯

再然後,黎明的曙光來了:HTML5標準中的Web Storage API被推出,我們的前端工程師終於可以稍微優雅地進行數據的存儲和操作,這時候Web App的浪潮才剛剛掀起。

再後來,主說:要有更完善的數據操作!於是,IndexedDB便來了,作為至今仍是非完善標準的它,已經被人們追捧得很厲害了。因為它真正讓我們感到了「DB」的感覺。(不過作為有理想的JS工程師,那API能忍?!)


那麼問題來了,前端數據處理哪家強?好吧,我還是選擇了造輪子。

MinDB誕生的初衷就是為了解決在Web App開發過程中,複雜數據存儲和操作的問題。它模仿了Redis的數據結構和API設計,提供簡單而豐富的操作方法,以解決JavaScript中數據操作困難的問題。

min.set('foo', 'bar', function(err) {
  if (err) {
    return console.error(err);
  }

  min.get('foo', function(err, value) {
    if (err) {
      return console.error(err);
    }

    console.log(value); //=> bar
  });
});

好!你一定想問,數據放在哪?作為一個負責任的工程師,我肯定盡可能地提供優秀的兼容性(遠超W3C標準的)。

MinDB實現了一個名為“Store Interface”的標準,MinDB通過實現了這一標準的實例與存儲介質進行交流。而這一標準的實現,最簡單的只有不到15行代碼!只需要提供3個接口即可!(就是Web Storage的接口,默認使用的Store也是它。你可以實現自己的Store,也是我所推薦的。)

Store Interface

通過這一標準,使MinDB基本可以在「所有提供簡單存儲接口的、支持標準JavaScript的平台」上運行,IE自然也在其列。這一標準由知名MongoDB Node.js Driver—mongoskin的作者桂林在3年前向我提出,沿用至今。

如果你曾經使用Redis作為項目的應用數據庫的話,你一定會知道Redis的設計優良性是很多NoSQL數據庫無法比擬的。MinDB目前支持90%的Redis命令(其餘便是Sever和Lua等),基本可以滿足90%的各類Web App在開發中需要用到的數據結構和操作需求。

安全性?

雖然有點不負責任,不過我還是會說:MinDB不關心安全性。原因是MinDB只通過開發者做提供的Store進行存儲,安全風險由其中的存儲介質來承擔,你可以通過實現Store Interface標準來把數據放在更安全的地方。


目前MinDB已經被來自全球大小公司的工程師進行研究和實踐(BAT、YY之類的)

4240 次点击
所在节点    JavaScript
10 条回复
fising
2014-10-26 08:22:35 +08:00
果然是HTML5 Web Storage
willwen
2014-10-26 08:27:41 +08:00
@fising 默認是,也可以通過應用不同的Store來遷移。API層無變化。
yourtion
2014-10-26 09:55:17 +08:00
顶一下!支持!!!
tcsky
2014-10-26 12:16:21 +08:00
有个storage.js 库, 差不多吧?
atan
2014-10-26 12:39:32 +08:00
firebase不是更简单吗
willwen
2014-10-26 13:14:59 +08:00
@tcsky 不知道你说的是哪一个,不过MinDB更专注于数据库和数据结构,而不是存储。
willwen
2014-10-26 13:18:38 +08:00
@atan Firebase是不错的,不过它依赖网络,而且没有MinDB这么多的类型和操作,也是更倾向于存储而不是数据操作。而且MinDB也是可以用Firebase作为Store的,另外下一个Store Interface标准会有更多的可选接口,让Firebase的特性能更好的融入MinDB。
chinvo
2014-10-26 14:58:12 +08:00
給點個贊,當初在 Event'14 聽你們介紹沒有聽明白,後來還是查閱資料才理解的。
wh1100717
2014-10-26 15:05:54 +08:00
哈哈 支持一下。 顺便说一下...Donate链接失效了...
willwen
2014-10-26 15:46:39 +08:00
@wh1100717 thanks,已更新

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/141556

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX