Node.js에서 사용하기위한 경량 자바 스크립트 DB [닫기]


130

누구나 Javascript로 작성된 가벼우면서도 내구성있는 데이터베이스를 알고 있으며 Node.js와 함께 사용할 수 있습니다.

Mongo 나 Couch와 같은 (대량) 솔루션의 '무게'를 원하지 않습니다. 디스크로 파일로 유지할 수있는 기능이있는 단순한 메모리 JS 데이터베이스이면 충분합니다. 소량의 데이터를 저장하는 데만 사용합니다.

요구 사항 :

  • node.js 서버 애플리케이션으로 프로세스에서 실행할 수 있습니다.
  • 전체 데이터베이스를 디스크에 저장하고 장애 발생 후 복구 가능
  • 원자 쓰기 또는 트랜잭션 지원 불필요
  • 빠른 쿼리 및 정렬이 좋을 것입니다.
  • 최대 1MB의 작은 데이터 볼륨 만 지원하면됩니다.

지금까지 TAFFY db를 보았지만 Node.js에서 사용하기에 실제로 최적화되지 않은 것 같습니다. 내가 찾고있는 것을 본 사람이 있습니까?

감사


답변:



103

나는 당신과 같은 요구 사항을 가지고 있지만 적합한 데이터베이스를 찾을 수 없습니다. nStore는 유망했지만 API는 거의 완벽하지 않고 일관성이 없습니다.

그래서 Node.js 프로젝트를위한 의존성이없는 임베디드 데이터베이스 인 NeDB를 만들었습니다 . 간단 require()하고 영구적으로 사용할 수 있으며 API는 잘 알려진 MongoDB API의 가장 일반적으로 사용되는 하위 집합입니다.

https://github.com/louischatriot/nedb


8
nedb는 훌륭하지만 여러 프로세스에서 사용할 수 없다는 점에 유의하십시오. 각 프로세스는 시작시 자체 사본을 얻습니다.
Meekohi

12
헤즈 업으로 NeDB가 버린 것 같습니다.
Guy

3
1.5 년 전에 최신 커밋이 프로젝트가 중단되었음을 의미하는 이유를 이해하지 못합니다. 그것은 절대 목표가 아니며,
기능적

7
"이 프로젝트는 여전히 <오늘 날짜>-NeDB (c) 2013- <오늘 >> Louis Chatriot"라는 마지막 행을 대체하여 3 개월마다 README를 업데이트하는 간단한 스크립트를 고려하십시오. 커밋 메시지는 "<today 's date 현재 프로젝트가 여전히 활성 상태임을 알리는 것"과 같은 것이어야합니다. 이는 사람들이 github의 맨 처음에 보게 될 것입니다.
Giacomo Lacava

6
@LouisChatriot 동의해야합니다. 3 년 전에 107 개의 이슈, 32 개의 PR이 있으며 마지막으로 코드를 변경했습니다. 그것을보고, 나는 비 호환성 (js dev에서 3 년은 영원함), 무시하고있는 문제 등을 가져오고 다루고 싶지 않은 소프트웨어입니다. 적절한 별의 별이지만 신선한 비명을 지르지 않습니다.
Carles Alcolea

18

NeDB 는 당신이 찾고있는 것 같습니다. 블 러브에서 :

Javascript로 작성된 Node.js 용 내장형 영구 데이터베이스 (npm 모듈 제외). 간단한 require 문과 함께 사용할 수있는 Node.js 프로젝트의 SQLite로 생각할 수 있습니다. API는 MongoDB의 하위 집합입니다. 영구 또는 인 메모리 전용 데이터 저장소로 사용할 수 있습니다.


@ Deilan 1.5 년 전 최신 커밋이 프로젝트가 포기되었다는 것을 이해하지 못합니다. 그것은 절대적으로, 목표를 달성하지 못했고 나는 기능 크리프에서 어떤 가치도 보지 못했습니다 ...
Louis Chatriot

@LouisChatriot 나는 지금까지 어떤 판단에도 틀렸다는 데 동의한다. 그래서 나는 초기 의견에서 그것을 제거했습니다.
Deilan

16

Lokijs : node.js, 브라우저 및 코르도바를위한 빠른 메모리 내 문서 지향 데이터 저장소

  • 인 메모리 Javascript 데이터 스토어
  • 동기화 및 지속 기능이있는 In-Browser NoSQL db
  • npm을 설치 한 Redis 스타일의 상점
  • Cordova를위한 지속 가능한 NoSQL db
  • node-webkit에 대한 Persistence가있는 임베드 가능 NoSQL db

LokiJS는 이상적인 솔루션입니다.

  • 모바일 애플리케이션-특히 HTML5 기반 (Cordova, Phonegap 등)
  • 중소 규모 앱을위한 Node.js 임베디드 데이터 스토어
  • Node Webkit을 사용하여 데스크탑 애플리케이션에 임베드

https://github.com/techfort/LokiJS


로컬 저장소를 지우면 lokiJS의 데이터가 지워 집니까?
HIRA THAKUR

@LeonardoDaCodinchi-사용 방법에 따라 다르지만 Node에서는 지속성을 위해 json 파일에 저장됩니다.
BryanGrezeszak

데이터베이스는 시작시 여전히 메모리에 저장됩니다. 내가 이해하게 된 것에서.
mjwrazor

14

http://www.tingodb.com보십시오 . 나는 그것이 당신이 찾고있는 것을한다고 믿습니다. 또한 MongoDB API와 완벽하게 호환됩니다. 이렇게하면 구현 위험이 줄어들고 앱이 커짐에 따라 강력한 솔루션으로 전환 할 수 있습니다.

https://github.com/sergeyksv/tingodb


1
MongoDB와의 완벽한 호환성은 매우 유용한 기능입니다. 작은 로컬 DB와 함께 작동하도록 앱을 개발 한 다음 필요한 경우 MongoDB까지 확장하십시오 .... 감사합니다!
Brad Parks

...하지만 mongoDB 와 호환되는 nedb 와 비교하고 어느 것이 당신에게 적합한 지 확인하는 것을 잊지 마십시오
Brad Parks

2016 년 12 월 26 일에 최근 커밋
Deilan


8

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}"

공유 주셔서 감사합니다, 나는 잠시 동안 이와 같은 것을 찾고 있습니다. 작은 웹 사이트와 함께 사용하면 잘 작동합니다!
Dieterg

1
@DieterGoetelen 환영합니다! 또한 최근에는 MongoDB와 유사한 구문을 가지고 Node.js에서 바인딩이 있고 github.com/Softmotions/ejdb-node를 넘어서는 더 강력한 EJDB를 사용하여 매우 기뻤 습니다
Radek


5

어쩌면 LocallyDB 를 사용해보십시오. 자바 조건 조건 표현식과 유사한 고급 선택 시스템 외에도 사용하기 쉽고 가볍습니다 ...

https://github.com/btwael/locallydb


감사합니다 Wael Amine Boutglay LocallyDB는 노드 js에 대해 제 역할을했습니다. 이전에는 PHP로 작업하고 있으며 자체 플랫 파일 데이터베이스 github.com/sguha-work/LifeDB
Angshu Guha를 작성

LocallyDB는 로컬 테스트에 적합합니다! 블록 IO를 사용합니다. 프로덕션 환경 에서는 사용 하지 마십시오 .
Junle Li

1
링크가 작동하지 않습니다. 도메인 파킹 페이지입니다.
rsp


2016 년 8 월 1 일에 최근 커밋
Deilan


1

데모 또는 테스트 프로젝트를 위해 "작은"데이터베이스가 필요하고 mongoDB 또는 다른 실제 데이터베이스에 의존하고 싶지 않기 때문에 언급 한 것들을 처리하기 위해 jaguarDb를 작성했습니다.

https://github.com/hectorcorrea/jaguarDb


2
2013 년 4 월 3 일에 최근 커밋
Deilan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.