node.js 앱과 페어링 할 데이터베이스를 찾고 있습니다. 나는 json / nosql db가 관계형 DB보다 더 낫다고 가정하고있다 [json / sql 임피던스 불일치없이 할 수있다]. 고려 중입니다.
- couchdb
- Mongodb
- 레디 스
누구든지 node.js와 위의 호환성 / 배포 가능성에 대한 견해 / 전쟁 이야기가 있습니까? 분명 좋아하는 것이 있습니까?
node.js 앱과 페어링 할 데이터베이스를 찾고 있습니다. 나는 json / nosql db가 관계형 DB보다 더 낫다고 가정하고있다 [json / sql 임피던스 불일치없이 할 수있다]. 고려 중입니다.
누구든지 node.js와 위의 호환성 / 배포 가능성에 대한 견해 / 전쟁 이야기가 있습니까? 분명 좋아하는 것이 있습니까?
답변:
저는 node.js 용 mongodb 드라이버의 개발자입니다. 나는 내 프로젝트에 mongodb를 사용하고 있으며 mongodb의 성능에 매우 만족했습니다.
(뻔뻔한 플러그) 드라이버에 대한 질문이 있으시면 언제든지
또는 여기 Stackoverflow에서
node.js로 재미있게 보내십시오. 나는 절대적으로 플랫폼을 사랑한다 : D
귀하의 선택은 귀하가 원하는 기능에 따라 크게 다르지만 CouchDB의 네이티브 JavaScript 환경에 대해 정말 감사드립니다. 데이터와 뷰는 모두 JavaScript로 작성되었으므로 내 의견으로는 node.js에 매우 적합합니다.
다른 클라이언트 라이브러리도 있습니다. 사용할 수 있으며 일부는 다소 낮은 수준이고 다른 일부는 매우 추상화되어 있습니다.
그러나 내가 말했듯이 데이터베이스에 필요한 기능에 대해서도 생각해야합니다.
Redis는 인기있는 선택입니다. 당신이 추구하는 것은 차단되지 않는 데이터베이스 드라이버입니다.
나열한 데이터베이스는 모두 매우 다릅니다. Redis는 키-값 저장소에 대한 아이디어를 가져와 실행하여 다양한 데이터 유형과 데이터 쿼리 방법을 추가합니다. 사람들은 종종 redis가 매우 잘 축소된다는 점에 주목합니다. 수행 능력이 있음에도 불구하고 오버 헤드가 매우 낮습니다.
다음은 사용 가능한 데이터베이스 모듈 목록입니다. http://wiki.github.com/ry/node/modules#database
저는 CouchDB를 정말 좋아합니다. 약간의 학습 곡선이지만 뷰를 사용하는 방법을 이해하면 뷰가 정말 강력합니다. github 에는 cradle 이라는 모듈이 있습니다. 및 npm에는 작업하기 매우 쉬운 . 얼마나 빠른지 테스트하지는 못했지만 정말 유연합니다 (원하는 경우 브라우저에서도 데이터에 액세스 할 수 있습니다).
여기서 중요한 문제는 애플리케이션에 적합한 데이터베이스 디자인입니다. 본질적으로 키-값이 큰 데이터가 있습니까? 그렇다면 Redis를 사용하십시오. 모든 문서에 반드시 동일한 필드가있는 것은 아닌 데이터가 있습니까? 그렇다면 CouchDB와 같은 NoSQL 데이터베이스를 사용하십시오.
차단 데이터베이스를 사용하는 것보다 더 나쁜 것은 데이터에 잘못된 데이터베이스를 사용하는 것입니다. CouchDB는 Apache에서 관리하므로 품질이 좋다는 것을 알고 있지만 데이터가 SQL 테이블이나 간단한 키-값 저장소에서 더 의미가있는 경우 사용하는 것은 의미가 없습니다.
사용 사례를 생각해보십시오. 전체 텍스트 검색을 수행하거나 키로 데이터를 얻거나 유사한 속성을 가진 문서 범위를 얻고 싶습니까?
node.js에 대한 Persistence , 높은 수준의 지속성 / 데이터베이스 시스템 을 확인하고 싶을 수 있습니다.
에서 thechangelog.com :
지속성은 프로세스 실행 사이에 데이터를 지속하기위한 높은 수준의 API를 허용하는 프로젝트입니다. 목표는 사용하기 쉽고 강력하고 유연하거나 가능하면 위의 모든 것을 지원하는 백엔드를 지원하는 것입니다.
지원되는 데이터베이스는 다음과 같습니다.
- PostgreSQL-엔터프라이즈 수준의 관계형 데이터베이스. 드라이버는 순수 JavaScript로 구현되며 PostgreSQL 유선 프로토콜을 사용하여 TCP를 통해 통신합니다.
- Sqlite3-간단하고 빠른 서버리스 관계형 데이터베이스입니다. 이 드라이버는 명령 줄 sqlite3 프로그램을 둘러싼 래퍼입니다. 경로에 sqlite3가 있어야합니다. 통신은 매우 빠르지 만 유형은 그다지 정확하지 않습니다. 반환되는 문자열과 null 만 있습니다.
- MongoDB-확장 가능한 고성능 오픈 소스 스키마가없는 문서 지향 데이터베이스입니다. 이 드라이버는 JavaScript로 유선 프로토콜을 구현하고 TCP를 통해 서버와 통신합니다.
- JSON-DB-JSON 개체가 포함 된 간단한 플랫 파일을 사용하는 자체 개발 시스템 스키마가없는 문서 지향 데이터베이스입니다. 이것은 노드와 파일 시스템을 제외하고는 전혀 요구 사항이 없습니다. 성능은 완전히 구현되면 결정됩니다.
면책 조항 : 나는 저자입니다.
여기에 발표 된 BarricaneDB를 살펴보십시오 .
올바른 해결책이 데이터베이스를 웹 스택에 매핑하는 데만 집중하는 것이 아니라 응용 프로그램 별 요구 사항도 고려하는 것입니다.
패턴에 대해 트위터 피드 또는 기타 대용량 데이터를 분석하고 있지만 트랜잭션 지원이 필요하지 않습니까? 그런 다음 정말 빠른 것을 선택하십시오.
몇 가지 테이블에 정말 기본적인 정보를 저장하고 싶은데 현재 "엔터프라이즈에 초점을 맞춘"앱이 아닌가? 그런 다음 학습 할 멋진 것을 선택하십시오.
아마도 당신은 클라이언트에게 정말 중요하고, 강력하고, 트랜잭션이 필요하고, 원격 호스팅 시설에 대한 라이브 복제가 필요한 데이터를 저장할 것입니다. 그런 다음 postgresql과 같은 것을 볼 수 있습니다. 또한 미러링되지는 않지만 node.js 드라이버는 꽤 잘 작동하며 SQL을 두려워하지 않으면 원하는 것을 매우 쉽게 가져옵니다.
내 의견으로는 node.js (php / java의 기존 프레임 워크에 비해)와 같은 새로운 스택을 사용하는 것이 한 번에 추가 레이어를 추가해서는 안되는 충분한 "새"복잡성을 추가하는 것이라고 생각합니다. 이것은 다음을 논의하는 좋은 기사입니다.
내 경험을 통해 이야기하겠습니다. CouchDB는 명확한 학습 곡선을 제공하는 반면 MongoDB는 배우고 설정하기가 매우 쉽습니다. 나는 redis를 사용한 적이 없습니다. 나는 MongoDB를 제안합니다. 그러나 그것은 아마도 뻔뻔스러운 팬보이 즘일 것입니다. 나는 숫자가 없습니다.
고려해야 할 사항 :
글로벌 : http://globalsdb.org
GT.M ( 시작점 은 https://github.com/robtweed/node-mwire 참조 )
M / DB (SimpleDB의 오픈 소스 복제본) : https://github.com/robtweed/node-mdb 및 Node.js SimpleDB 클라이언트를 사용하여 액세스 할 수 있습니다. https://github.com/rjrodger/simpledb