2011-08-29 95 views
108

任何人都知道用JavaScript編寫的輕量級但耐用的數據庫,可以與Node.js一起使用。用於Node.js的輕量級Javascript DB

我不想像Mongo或Couch這樣的(優秀)解決方案的「重量」。一個簡單的內存JS數據庫能夠以磁盤形式保存爲文件就足夠了。我只會用它來存儲少量的數據。

要求:

  • 可在過程與node.js的服務器應用程序
  • 運行可以將整個數據庫保存到磁盤,恢復失敗後
  • 不需要原子寫入或交易支持
  • 快速查詢和排序會很好
  • 只需要支持小數據量,總共高達1MB

到目前爲止,我已經遇到過TAFFY db,但它在Node.js中似乎並沒有被優化。有人看到我在那裏尋找什麼?

感謝

+0

嘗試使用https://github.com/rvagg/node-levelup – hellboy

回答

9

我只熟悉蒙戈和沙發,但也有一個命名爲Persistence

+8

你還會認爲這是一個解決方案嗎?最後一次提交是7年前。 – mjwrazor

+0

最新提交於2010年3月31日。 – Deilan

7

我遇到了SQLite3,nStore和Alfred的問題。

我什麼工作是node-dirty

path = "#{__dirname}/data/messages.json" 
messages = db path 

message = 'text': 'Lorem ipsum dolor sit...' 

messages.on "load", ->  
    messages.set 'my-unique-key', message, -> 
     console.log messages.get('my-unique-key').text 

    messages.forEach (key, value) -> 
     console.log "Found key: #{key}, val: %j", value 

messages.on "drain", -> 
    console.log "Saved to #{path}" 
+0

感謝您的分享,我一直在尋找類似的東西。這與小網站相結合的工作很好! – Dieterg

+0

@DieterGoetelen歡迎您!我最近也很高興使用功能更強大的EJDB,它具有類似MongoDB的語法,並且具有Node.js和更高版本的綁定功能https://github.com/Softmotions/ejdb-node – Radek

2

我寫jaguarDb處理一些,你都在提,因爲我有時需要進行演示或測試項目中的「小」數據庫太的東西,我不不想依賴mongoDB或其他真實數據庫。

https://github.com/hectorcorrea/jaguarDb

+0

2013年4月3日最新提交。 – Deilan

89

我有同樣的要求,你也沒有找到合適的數據庫。 nStore很有前途,但API並不夠完整,也不是非常一致。

這就是爲什麼我製作了NeDB,這是Node.js的一個無依賴嵌入式數據庫項目。你可以使用它簡單的require(),它是持久的,它的API是非常着名的MongoDB API中最常用的子集。

https://github.com/louischatriot/nedb

+6

nedb很棒,但請注意,您不能跨多個進程使用它 - 每個啓動時都會獲得自己的副本。 – Meekohi

+6

作爲單挑,它看起來像NeDB可能已被放棄。 – Guy

+1

我不明白爲什麼1.5年前的最新承諾意味着項目被放棄。它絕對不是,它只是實現了它的目標,我沒有看到功能蠕變的任何價值... –

10

看看http://www.tingodb.com。我相信它符合你的要求。另外它完全兼容MongoDB API。這可以降低實施風險,並可讓您隨着應用程序的增長切換到繁重的解決方案。

https://github.com/sergeyksv/tingodb

+0

與MongoDB完全兼容是一個非常不錯的功能 - 開發您的應用程序與小型本地數據庫一起工作,然後如果需要,可擴展到MongoDB ....謝謝! –

+0

...但絕對不要忘記與[nedb](https://github.com/louischatriot/nedb)相比,它也是MongoDB兼容的,看看哪些適合你 –

+0

最新提交於2016年12月26日 – Deilan

18

NeDB似乎是你在找什麼。從blurb:

嵌入的Node.js持久數據庫,用Javascript編寫,沒有依賴關係(當然npm模塊除外)。您可以將其視爲Node.js項目的SQLite,可以使用簡單的require語句。 API是MongoDB的一個子集。您可以將其用作持久存儲或僅存儲在內存中的數據存儲。

+0

@Deilan我不明白爲什麼1.5年前的最新承諾意味着項目被放棄。它絕對不是,它只是實現了它的目標,我沒有看到功能蠕變的任何價值... –

+0

@LouisChatriot我同意,一般來說我是錯誤的任何判決到目前爲止。所以我從最初的評論中刪除了它。 – Deilan

5

提供一個抽象也許你應該嘗試LocallyDB它易於使用,重量輕,除了有類似的JavaScript高級遴選制度條件表達式...

https://github.com/btwael/locallydb

+0

感謝Wael Amine Boutglay LocallyDB只是爲節點j做了我的事情。以前我使用php,並創建了自己的平面文件數據庫https://github.com/sguha-work/LifeDB –

+0

LocallyDB非常適合*本地*測試!請注意它使用塊IO。不要**在生產中使用它。 –

+1

鏈接不起作用。這是一個域名停放頁面。 – rsp

12

Lokijs:面向node.js,瀏覽器和cordova的快速內存面向文檔的數據存儲。

  • 在內存中的Javascript數據存儲王氏持久
  • 在瀏覽器中的NoSQL數據庫與同步,持續
  • 一個Redis的風格店的NPM安裝遠
  • 持久化的NoSQL數據庫的科爾多瓦
  • 嵌入的NoSQL db with persistence for node-webkit

LokiJS成爲理想的解決方案:

  • 移動應用 - 尤其是基於HTML5(科爾多瓦的PhoneGap, 等),用於在桌面應用程序的嵌入式與節點的Webkit
小到中等的應用程序
  • Node.js的嵌入式數據存儲

    https://github.com/techfort/LokiJS

  • +0

    我的數據在lokiJS會被清除,如果我清除我的本地存儲? –

    +0

    @LeonardoDaCodinchi - 取決於你如何使用它,但在節點它保存到一個JSON文件的持久性。 – BryanGrezeszak

    +0

    雖然啓動時數據庫仍然保存在內存中。從我所瞭解的東西開始。 – mjwrazor