2010-05-01 4 views
112

node.js 앱과 페어링 할 데이터베이스를 찾고 있습니다. 나는 json/nosql db가 관계형 DB보다 더 좋을 것이라고 가정하고있다. [나는 json/sql impedance mismatch없이 할 수있다.] 나는 고려 중이 야 :node.js 데이터베이스

  • CouchDB를
  • MongoDB를
  • 레디 스

누구나 어떤 뷰/전쟁 이야기는 Node.js를 가진 위의 compatiability/효율적 사용을 다시 있나요? 확실한 즐겨 찾기?

+2

보다 광범위한 요구 사항이 언급되는 경우 질문에 대답하는 것이 도움이 될 것이라고 생각합니다. 각 DB에는 고유 한 장단점과 단점이 있습니다. 사양을 알려주세요! –

답변

18

Redis가 가장 많이 사용되는 선택입니다. 당신이 쫓고있는 것은 차단하지 않는 데이터베이스 드라이버입니다.

나열된 데이터베이스가 모두 매우 다릅니다. Redis는 키 - 값 저장소에 대한 아이디어를 가지고 다양한 데이터 유형과 데이터 쿼리 방법을 추가하여이를 실행합니다. 사람들은 종종 redis가 너무 잘 아래로 확장한다는 점에주의합니다. 이는 수행 능력이 있음에도 불구하고 오버 헤드가 매우 낮다는 것을 의미합니다. 당신의 선택은 매우 당신이하려고하는 기능에 따라 다르지만 http://wiki.github.com/ry/node/modules#database

+0

예 Redis는 훌륭하지만 바이너리 데이터를 저장할 수는 있지만 검색 할 수는없는 것 같습니다! 적어도 이진 데이터에 대한 Redis 명령을 찾을 수 없었습니다. – AppleGrew

+0

정말요? 노드의 버퍼 클래스를 사용하여 이진 데이터를 저장하는 데 사용하고 잘 작동했습니다. Redis/Node의 버전은 무엇입니까? – DanielS

+12

기본적으로 node_redis는 모든 명령에 대해 JavaScript 문자열을 반환합니다. 버퍼를 대신 얻으려면 createClient (port, host, {return_buffers : true})로 클라이언트를 생성하십시오. –

25

, 난 정말 네이티브 자바 스크립트 환경에 CouchDB를 감사 : 여기

사용할 데이터베이스 모듈의 목록입니다. 데이터와 뷰 모두 JavaScript로 작성되므로 제 생각에는 node.js와 잘 어울립니다.

client libraries도 사용할 수 있습니다. 일부는 다소 낮은 수준이고 다른 일부는 실제로 매우 추상화되어 있습니다.

하지만 내가 말한 것처럼 데이터베이스에 필요한 기능에 대해서도 생각해 봐야합니다.

79

저는 node.js 용 mongodb 드라이버의 개발자입니다. 저는 제 자신의 프로젝트를 위해 mongodb를 사용하고 있으며 mongodb의 성능에 매우 만족해하고 있습니다.

Mongodb driver for node.js

(뻔뻔 플러그)

가 node.js. 재미 있으 유래

여기

Google group for the mongodb driver

또는에서 드라이버에 대한 질문을 자유롭게 나는 플랫폼을 절대적으로 좋아한다 : D

+1

또한 상당히 멋진 ORM 인 mongoose를 보거나 node.js 용 mongodb 드라이버를 사용합니다. – taxilian

+2

우리는 Node.js + MongoDB를 꽤 오랫동안 사용하고 있습니다. 훌륭해. 그리고 @ kristkv에 대한 완전한 명성은 드라이버가 단단하고 실패하지 않을 것입니다.우리는 EC2에 node.js/express.js + mongodb를 손쉽게 배포했습니다. 또한, 우리는 몽구스를 사용하지 않습니다. 도전 과제에 대해 말하면 (이미 Node를 잘 알고 있다고 가정), 진지한 애플리케이션이나 서비스 개발을 위해 Mongo가하는 일 (질의와 집계)을 잘 수행 할 필요가 있습니다. Mongo가 다른 DB와 다른 점을 배우는 것이 평가 단계에 있다면 먼저해야합니다. –

+0

에서 mongodb의 집계 속도를 높이기 위해 정말 멋진 기능을 이해하고 있습니다. 그 중 하나가 네이티브 집계 함수입니다. http://www.slideshare.net/cwestin63/mongodb-aggregation-mongosf-may-2011 및 각 map-reduce 명령을 실행할 수있는 javascript 엔진의 spidermonkey 대신 v8로 전환 할 수도 있습니다 그것 자체 스레드 (bye bye singlethreaded map-reduce) – christkv

8

node.js를위한 높은 수준의 지속성/데이터베이스 시스템 인 Persistence을 확인하고 싶을 것이다. thechangelog.com에서

:

지속성은 데이터를 지속하기위한 높은 수준의 API를 허용하는 프로세스가 실행 사이에 프로젝트입니다. 가능한 경우 의 강력하거나 유연한 모든 백엔드 또는 지원되는 을 지원하는 것이 목표입니다.

지원되는 데이터베이스는 다음과 같습니다

  • PostgreSQL을 - 엔터프라이즈 수준 관계형 데이터베이스를. 드라이버는 순수 JavaScript로 구현 된 이고 은 PostgreSQL 유선 프로토콜을 사용하여 TCP를 통해 통신합니다.
  • Sqlite3 - 간단하고 빠른 서버리스 관련 데이터베이스입니다. 이 드라이버는 명령 줄 sqlite3 프로그램 주위의 래퍼 입니다. sqlite3은 경로에 있어야합니다. 통신은 매우 빠르지 만 유형은 매우 정확하지 않습니다. 입니다. 문자열 만 있고 null이 리턴되었습니다.
  • MongoDB - A 확장 가능, 고성능, 오픈 소스, 스키마 프리, 문서 지향 데이터베이스. 이 드라이버는 또한 JavaScript에서 와이어 프로토콜을 으로 구현하고 TCP를 통해 서버와 통신하는 을 구현합니다.
  • JSON-DB - JSON 개체가 포함 된 간단한 플랫 파일 을 사용하는 자체 작성 시스템 스키마가 필요없는 문서 지향적 인 데이터베이스입니다. 여기에는 노드를 제외한 요구 사항과 파일 시스템이 없습니다. 을 구현하면 성능이 으로 결정됩니다.
+13

2010 년 3 월 이후 지속성이 업데이트되지 않았고 릴리스 0.0.4이기 때문에 버려진 것처럼 보입니다. – lacker

15

정말 CouchDB를 좋아합니다. 약간의 학습 곡선이지만 사용법을 이해하면보기가 정말 강력합니다. cradle on github이라는 모듈과 npm은 정말 사용하기 쉽습니다. 얼마나 빠를 지 테스트 할 수 없었지만 실제로는 유연합니다 (원하는 경우 브라우저에서 데이터에 액세스 할 수 있습니다).

여기서 중요한 문제는 응용 프로그램에 적합한 데이터베이스 디자인입니다. 당신은 실제로 본질적으로 핵심 가치가있는 데이터를 가지고 있습니까? 그렇다면 Redis를 사용하십시오. 모든 문서가 반드시 같은 필드를 가지고 있지는 않은 데이터가 있습니까? 그렇다면 CouchDB와 같은 NoSQL 데이터베이스를 사용하십시오.

블로킹 데이터베이스를 사용할 때 다음으로 나쁜 것은 데이터에 잘못된 데이터베이스를 사용하는 것입니다. CouchDB는 Apache에서 관리하기 때문에 좋은 품질이지만 SQL 테이블이나 간단한 키 - 값 저장소에서 데이터를 이해하는 것이 좋을 경우 사용하지 않는 것이 좋습니다.

사례를 생각해보십시오. 전체 텍스트 검색을 수행하거나, 키로 데이터를 가져 오거나, 유사한 속성을 가진 문서 범위를 얻고 싶습니까?

3

데이타베이스를 웹 스택에 매핑하는 것이 올바른 해결책 일뿐만 아니라 응용 프로그램 별 요구 사항을 고려하고 있는지 확신 할 수 없습니다.

패턴에 대한 트위터 피드 나 기타 대용량 데이터를 분석하고 있지만 거래 지원이 필요하지 않습니까? 그런 다음 정말로 빠른 것을 선택하십시오.

몇 가지 테이블에 실제 정보를 저장하고 싶습니까? 현재는 "엔터프라이즈 중심"앱이 아닙니다.그런 다음 멋진 것을 배워보십시오.

아마도 클라이언트에 중요한 데이터를 저장하고, 트랜잭션을 처리해야하며, 원격 호스팅 시설 등에 실시간 복제가 있어야합니다. 그러면 아마도 postgresql과 같은 것을 보게 될 것입니다. 미러도되지 않지만 node.js 드라이버는 꽤 잘 작동합니다. SQL을 두려워하지 않으면 원하는 것을 쉽게 얻을 수 있습니다.

내 의견으로는 node.js (php/java의 전통적인 프레임 워크와 비교하여)와 같은 새로운 스택을 사용하면 충분한 "새로운"복잡성이 추가되어 한꺼번에 추가 레이어를 추가해서는 안된다고 생각합니다.

http://nodeguide.com/convincing_the_boss.html

1

더러운 또 다른 플랫 파일 키 - 값 저장소입니다 :이 있다고 설명 좋은 기사입니다. 이름에서 알 수 있듯이, 단순한 경우에는 빠르고 더럽지 만 성능이 뛰어난 솔루션입니다. 나는 좀 더 고려해야 저자 :

2

내 경험에 비추어 볼 때 CouchDB는 명확한 학습 곡선이 있지만 M ongoDB 나는 배우고 설정하는 것이 매우 쉬운 것으로 나타났습니다. 나는 redis를 사용한 적이 없다. 나는 MongoDB를 제안한다 - 그러나 그것은 아마도 부끄러움을 자아내는 fanboyism 다 - 나는 어떤 숫자도 가지지 않는다, heh (단지 사용의 용이성의 주장).

0

나는 CouchDB을 매우 쉽게 마스터했습니다. Node.js으로 CouchDB를 사용하는 방법을 가르쳐 줄 많은 전자 책이 인터넷에서 제공됩니다.

this book은 CouchDB 학습에 매우 유용합니다.

Node.js에서 CouchDB를 사용하려면 NANO 모듈을 사용하십시오.

Iriscouch 또는 Cloudant에서 CouchDB를 호스팅 할 수 있습니다.