node.js 데이터베이스 [닫힘]


115

node.js 앱과 페어링 할 데이터베이스를 찾고 있습니다. 나는 json / nosql db가 관계형 DB보다 더 낫다고 가정하고있다 [json / sql 임피던스 불일치없이 할 수있다]. 고려 중입니다.

  • couchdb
  • Mongodb
  • 레디 스

누구든지 node.js와 위의 호환성 / 배포 가능성에 대한 견해 / 전쟁 이야기가 있습니까? 분명 좋아하는 것이 있습니까?


2
더 광범위한 요구 사항이 언급된다면 질문에 답하는 것이 도움이 될 것이라고 생각합니다. 각 DB에는 고유 한 장단점 및 전문성이 있습니다. 사양을 알려주세요!
Samyak Bhuta

답변:


79

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

node.js 용 Mongodb 드라이버

(뻔뻔한 플러그) 드라이버에 대한 질문이 있으시면 언제든지

mongodb 드라이버 용 Google 그룹

또는 여기 Stackoverflow에서

node.js로 재미있게 보내십시오. 나는 절대적으로 플랫폼을 사랑한다 : D


1
또한 mongoose를 살펴보십시오. 이는 node.js 용 mongodb 드라이버를 기반으로 구축 / 사용하는 상당히 멋진 ORM입니다
taxilian 2011 년

2
우리는 Node.js + MongoDB를 꽤 오랫동안 사용하고 있으며 훌륭하게 진행되고 있습니다. 그리고 @christkv에 대한 완전한 명성, 드라이버는 견고하며 실패하지 않을 것입니다. EC2에 node.js / express.js + mongodb를 쉽게 배포했습니다. 또한 Mongoose를 사용하지 않습니다. 문제에 대해 이야기하면서 (이미 Node를 능숙하다고 가정 할 때), 심각한 애플리케이션 또는 서비스 개발을 위해 Mongo 방식 (쿼리 및 집계)에 능숙해야합니다. Mongo가 다른 DB와 어떻게 다른지 배우는 것은 아직 평가 단계에 있다면 먼저해야 할 것입니다.
Samyak Bhuta

mongodb에서 집계 속도를 높이기 위해 정말 멋진 기능이 출시된다는 것을 이해합니다. 그중 하나는 기본 집계 함수입니다. slideshare.net/cwestin63/mongodb-aggregation-mongosf-may-2011 및 각 map-reduce 명령이 자체 스레드에서 실행될 수 있도록하는 자바 스크립트 엔진 용 spidermonkey 대신 v8로 전환 가능 (bye bye singlethreaded map-reduce )
christkv

25

귀하의 선택은 귀하가 원하는 기능에 따라 크게 다르지만 CouchDB의 네이티브 JavaScript 환경에 대해 정말 감사드립니다. 데이터와 뷰는 모두 JavaScript로 작성되었으므로 내 의견으로는 node.js에 매우 적합합니다.

다른 클라이언트 라이브러리도 있습니다. 사용할 수 있으며 일부는 다소 낮은 수준이고 다른 일부는 매우 추상화되어 있습니다.

그러나 내가 말했듯이 데이터베이스에 필요한 기능에 대해서도 생각해야합니다.


18

Redis는 인기있는 선택입니다. 당신이 추구하는 것은 차단되지 않는 데이터베이스 드라이버입니다.

나열한 데이터베이스는 모두 매우 다릅니다. Redis는 키-값 저장소에 대한 아이디어를 가져와 실행하여 다양한 데이터 유형과 데이터 쿼리 방법을 추가합니다. 사람들은 종종 redis가 매우 잘 축소된다는 점에 주목합니다. 수행 능력이 있음에도 불구하고 오버 헤드가 매우 낮습니다.

다음은 사용 가능한 데이터베이스 모듈 목록입니다. http://wiki.github.com/ry/node/modules#database


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

정말? 이진 데이터를 저장하는 데 사용 (Node의 Buffer 클래스 사용)했는데 제대로 작동했습니다. Redis / Node의 버전은 무엇입니까?
다니엘스

12
기본적으로 node_redis는 모든 명령에 대해 JavaScript 문자열을 반환합니다. 대신 버퍼를 얻으려면 createClient (port, host, {return_buffers : true});를 사용하여 클라이언트를 만듭니다.
Matt Ranney 2011 년

4
@MattRanney, 당신은 저에게 파기 시간을 더 절약했습니다! 나는 node-Redis 문서의 어느 곳에서도 이것을 보지 못했고 말 그대로 5 시간 동안 시간을 ​​보냈습니다. 이 순간 감사합니다.
ghayes

이론 상으로는 모든 것이 좋게 들리지만 실용적인 예를 들어 보면 배열을 반환하는 20 초마다 쿼리하는 JSON API가 있습니다.이를 캐시 할 수 있기를 원합니다. Redis를 계속 사용 하시겠습니까? 또한이 배열을 통해 퍼지 검색을 수행해야합니다
PirateApp 2017

15

저는 CouchDB를 정말 좋아합니다. 약간의 학습 곡선이지만 뷰를 사용하는 방법을 이해하면 뷰가 정말 강력합니다. github 에는 cradle 이라는 모듈이 있습니다. 및 npm에는 작업하기 매우 쉬운 . 얼마나 빠른지 테스트하지는 못했지만 정말 유연합니다 (원하는 경우 브라우저에서도 데이터에 액세스 할 수 있습니다).

여기서 중요한 문제는 애플리케이션에 적합한 데이터베이스 디자인입니다. 본질적으로 키-값이 큰 데이터가 있습니까? 그렇다면 Redis를 사용하십시오. 모든 문서에 반드시 동일한 필드가있는 것은 아닌 데이터가 있습니까? 그렇다면 CouchDB와 같은 NoSQL 데이터베이스를 사용하십시오.

차단 데이터베이스를 사용하는 것보다 더 나쁜 것은 데이터에 잘못된 데이터베이스를 사용하는 것입니다. CouchDB는 Apache에서 관리하므로 품질이 좋다는 것을 알고 있지만 데이터가 SQL 테이블이나 간단한 키-값 저장소에서 더 의미가있는 경우 사용하는 것은 의미가 없습니다.

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


8

node.js에 대한 Persistence , 높은 수준의 지속성 / 데이터베이스 시스템 을 확인하고 싶을 수 있습니다.

에서 thechangelog.com :

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

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

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

13
지속성은 2010 년 3 월 이후로 업데이트되지 않았으며 0.0.4 릴리스에 있으므로 포기되었을 수 있습니다.
래커를 칠


3

올바른 해결책이 데이터베이스를 웹 스택에 매핑하는 데만 집중하는 것이 아니라 응용 프로그램 별 요구 사항도 고려하는 것입니다.

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

몇 가지 테이블에 정말 기본적인 정보를 저장하고 싶은데 현재 "엔터프라이즈에 초점을 맞춘"앱이 아닌가? 그런 다음 학습 할 멋진 것을 선택하십시오.

아마도 당신은 클라이언트에게 정말 중요하고, 강력하고, 트랜잭션이 필요하고, 원격 호스팅 시설에 대한 라이브 복제가 필요한 데이터를 저장할 것입니다. 그런 다음 postgresql과 같은 것을 볼 수 있습니다. 또한 미러링되지는 않지만 node.js 드라이버는 꽤 잘 작동하며 SQL을 두려워하지 않으면 원하는 것을 매우 쉽게 가져옵니다.

내 의견으로는 node.js (php / java의 기존 프레임 워크에 비해)와 같은 새로운 스택을 사용하는 것이 한 번에 추가 레이어를 추가해서는 안되는 충분한 "새"복잡성을 추가하는 것이라고 생각합니다. 이것은 다음을 논의하는 좋은 기사입니다.

http://nodeguide.com/convincing_the_boss.html


2

내 경험을 통해 이야기하겠습니다. CouchDB는 명확한 학습 곡선을 제공하는 반면 MongoDB는 배우고 설정하기가 매우 쉽습니다. 나는 redis를 사용한 적이 없습니다. 나는 MongoDB를 제안합니다. 그러나 그것은 아마도 뻔뻔스러운 팬보이 즘일 것입니다. 나는 숫자가 없습니다.


1

dirty는 또 다른 플랫 파일 키-값 저장소입니다. 이름에서 알 수 있듯이 간단한 경우에는 빠르고 더럽지 만 성능이 뛰어난 솔루션입니다. 나는 저자가 아니다 :)



0

CouchDB 는 마스터하기가 매우 쉽다는 것을 알았습니다 . Node.js 와 함께 CouchDB를 사용하는 방법을 알려주는 많은 전자 책이 인터넷에 있습니다 .

이 책 은 CouchDB 학습에 매우 유용하다는 것을 알았습니다 .

Node.js와 함께 CouchDB를 사용하려면 NANO 모듈을 사용 합니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.