V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
willwen
V2EX  ›  JavaScript

MinDB - Database on JavaScript

  •  
  •   willwen · 2014-10-26 08:21:25 +08:00 · 4390 次点击
    这是一个创建于 3679 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 你熱愛前端麼?
    • 你做過複雜的Web App麼?

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

    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之類的)

    第 1 条附言  ·  2014-10-26 13:21:17 +08:00
    10 条回复    2014-10-26 15:46:39 +08:00
    fising
        1
    fising  
       2014-10-26 08:22:35 +08:00
    果然是HTML5 Web Storage
    willwen
        2
    willwen  
    OP
       2014-10-26 08:27:41 +08:00
    @fising 默認是,也可以通過應用不同的Store來遷移。API層無變化。
    yourtion
        3
    yourtion  
       2014-10-26 09:55:17 +08:00 via iPhone
    顶一下!支持!!!
    tcsky
        4
    tcsky  
       2014-10-26 12:16:21 +08:00
    有个storage.js 库, 差不多吧?
    atan
        5
    atan  
       2014-10-26 12:39:32 +08:00
    firebase不是更简单吗
    willwen
        6
    willwen  
    OP
       2014-10-26 13:14:59 +08:00 via iPhone
    @tcsky 不知道你说的是哪一个,不过MinDB更专注于数据库和数据结构,而不是存储。
    willwen
        7
    willwen  
    OP
       2014-10-26 13:18:38 +08:00 via iPhone
    @atan Firebase是不错的,不过它依赖网络,而且没有MinDB这么多的类型和操作,也是更倾向于存储而不是数据操作。而且MinDB也是可以用Firebase作为Store的,另外下一个Store Interface标准会有更多的可选接口,让Firebase的特性能更好的融入MinDB。
    chinvo
        8
    chinvo  
       2014-10-26 14:58:12 +08:00
    給點個贊,當初在 Event'14 聽你們介紹沒有聽明白,後來還是查閱資料才理解的。
    wh1100717
        9
    wh1100717  
       2014-10-26 15:05:54 +08:00
    哈哈 支持一下。 顺便说一下...Donate链接失效了...
    willwen
        10
    willwen  
    OP
       2014-10-26 15:46:39 +08:00 via iPhone
    @wh1100717 thanks,已更新
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2435 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:05 · PVG 00:05 · LAX 08:05 · JFK 11:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.