mongoose vs mongodb(nodejs 모듈/확장) 중 어느 쪽이 나을까요?그리고 왜?
방금 Node.js에 도착했는데 MongoDB에서 사용할 수 있는 lib가 많이 있다는 것을 알게 되었습니다.가장 인기 있는 것은 (mongoose와 mongodb)입니다.그 연장에 대한 장단점을 알 수 있을까요?이 두 가지에 대한 더 나은 대안이 있을까요?
편집: "Mongolian DeadBeef는 mongodb 쉘에 근접하려고 하는 멋진 Mongo DB node.driver입니다."(readme.md)라는 새로운 라이브러리를 발견했습니다.
https://github.com/marcello3d/node-mongolian
이것은 단지 이것을 보는 새로운 사람들에게 더 많은 자원을 제공하기 위한 것입니다. 그래서 기본적으로 몽골어는 ODM과 같습니다.
Mongoose는 상위 레벨로 MongoDB 드라이버(의존관계이므로 package.json을 체크해 주세요)를 사용하고 있기 때문에, 이러한 옵션에서는 어느 쪽이든 사용할 수 있습니다."원시 드라이버를 사용할 것인가, 아니면 객체 문서 모델링 도구가 필요한가?"라고 자문해 보아야 합니다.하위 수준의 작업을 건너뛰기 위해 객체 모델링(ODM, SQL World의 ORM에 대응) 도구를 찾고 있다면 Mongoose가 필요합니다.
드라이버를 필요로 하는 경우는, ODM 에 의해서 강제되는 많은 룰을 어길 예정이므로, MongoDB 를 사용해 주세요.빠른 드라이버를 원하시면 몽골의 DeadBeef에 접속해 보세요.https://github.com/marcello3d/node-mongolian
몽구스는 단연코 가장 인기가 있다.나는 그것을 사용하고 있고, 다른 것은 사용하지 않는다.다른 사람들에 대해서는 말할 수 없지만 몽구스와의 불만은 말할 수 있어요
- 어려운/불량한 문서
- 모델이 사용됩니다.또한 문서의 구조를 정의합니다.그러나 Mongo의 장점 중 하나는 컬럼(err, attribute)을 넣을 수 있다는 것입니다.또는 단순히 추가하지 않습니다.
- 이치노모델이 정의된 컬렉션 이름의 대소문자가 모델을 저장하지 않는 문제가 있습니다.류가없없 없없없다다예를 들어, 예를 들면, g something와 같은 것을 , 를g something something something something something something something somethinggsomething something something something something something something something something something something something something.
mongooseInstace.model('MyCollection', { "_id": Number, "xyz": String })
이 좋다( (컬렉션명이)MyCollection
):mongooseInstace.model('mycollection', { "_id": Number, "xyz": String })
하지만 솔직히 정말 유용해요.가장 큰 문제는 서류입니다.있긴 한데, 건조해서 필요한 걸 찾기가 어려워요.그것은 더 나은 설명과 더 많은 예시를 필요로 할 것이다.하지만 일단 이런 것들을 지나치면 정말 잘 작동해요.
저는 새로운 앱을 만들고 그 구조를 디자인하고 있습니다.mongoose를 사용하는 이유와 사용하지 않는 이유에 대해 몇 가지 생각을 하고 있습니다.
- Mongoose는 속도가 느려집니다(대형 앱의 경우).
- Mongoose는 더 복잡한 질의로 인해 더 어렵다.
- 더 빠른 속도를 원하는 경우 mongoose를 사용하지 않고 mongoose와 w/o를 절반으로 쿼리할 수 있습니다.말도 안 되는 상황이네요, 한 번은..
- Mongoose는 심플한 DB 구조의 심플한 앱으로 빠르게 코드화할 수 있습니다.
- 몽구스가 당신에게 몽구스 문서를 읽게 할 것이고 몽구스 문서를 읽게 할 것이다.
- mongoose를 사용하면 당신의 스택이 하나 더 의지할 수 있게 될 것이고 그것은 추락하여 재가 될 가능성이 하나 더 생길 것입니다.
mongodb 드라이버는 raw 드라이버이며, 당신은 mongodb와 직접 통신합니다. mongoose는 추상화 레이어입니다.DB 구조는 단순하지만 I/O는 더 쉬워집니다.
추상화에는 그 요건이 따르게 되어 있습니다.애플리케이션 속도가 느려지고 RAM이 많아지고 복잡해지지만 사용법을 알면 간단한 오브젝트를 빠르게 쓰고 데이터베이스에 저장할 수 있습니다.
mongoose가 없으면 mongodb에 직접 접속하여 더 빠르게 응용할 수 있습니다.DB에 저장하기 위해 직접 모델을 작성할 수 없다고 말하는 사람은 없습니다.넌 할 수 있다.그리고 그게 더 쉬울 것 같아요.코드를 작성하면 필요한 게 뭔지 알 수 있을 거예요넌 몽구스 층보다 훨씬 작을 거야
저는 PHP 세계에서 왔습니다.여기서는 감가상각된 mysql_ 함수를 가진 raw sql이 있었고, 다음으로 PDO - 객체 지향 추상화 레이어가 sql과 통신했습니다.또는 독트린과 같은 무거운 ORM을 선택하여 mongoDB에 mongoose와 비슷한 것을 넣을 수도 있습니다.setter/getters/save 메서드 등의 오브젝트.괜찮지만 추상화를 추가하면 파일, 논리, 문서, 종속성을 더 많이 추가할 수 있습니다.나는 일을 단순하게 하고 스택에 의존하지 않는 것을 좋아한다.근데 그게 바로 내가 PHP에서 서버 클라이언트 Javascript로 옮긴 이유야.
mongoose를 사용하면 sql과 유사한 단순한 DB 구조를 가진 간단한 앱을 작성할 수 있습니다.당신이 하위 문서를 가지고 있고 그 모든 이상한 질문들을 하고 싶을 때, 나는 mongoose가 정말 힘들다는 것을 알았다.원하는 쿼리를 만드는 방법을 알아보려면 mongodb 문서를 살펴본 다음 mongoose 문서를 살펴봐야 합니다.때때로 mongodb의 X 미래는 mongoose에 있지 않다는 것을 알게 될 것입니다.그래서 raw mongodb 드라이버로 가서 raw mongodb 쿼리를 작성합니다.mongoose가 없으면 mongodb 문서를 보고 질문을 합니다.
저는 mongodb밖에 안 써봤어요.제 개인적인 의견으로는 낮은 레벨부터 시작해서 올라가는 것을 추천합니다.그렇지 않으면 mongoose 등 고급 드라이버가 제공하는 추가 고급 기능을 사용할 수 있지만 실제로는 아무런 이점이 없습니다.
node.js 특유의 mongodb에 문제가 있는 것은 문서화가 불충분하다는 것입니다.문서와 많은 자료가 있지만 그것이 항상 가장 도움이 되는 것은 아닙니다.지금까지 제가 본 드라이버의 실제 사용 예로는 훌륭하고 철저한 예가 없습니다.이 문서에는 접속을 열고 명령어를 발행하여 접속을 닫는 것과 같은 템플릿화된 예가 기재되어 있습니다.각 예제에 필요한 것뿐만 아니라 모든 예제에 필요한 모든 것이 포함되므로 템플릿에서 복사하여 붙여넣은 것임을 알 수 있습니다.
완전히 무작위로 취해진 예를 들자면:
- raw {Boolean, default:false}은(는) raw bson 버퍼를 사용하여 작업을 수행합니다.
"원시 bson 버퍼를 사용하여 작업을 수행합니다"는 정확히 어떤 역할을 합니까?어디에서도 설명을 찾을 수 없고 구글에서 그 문구를 검색해도 도움이 되지 않습니다.아마도 나는 구글을 더 찾을 수 있지만 그럴 필요는 없다.정보가 거기에 있을 거예요.이 옵션을 활성화/비활성화할 때 성능, 안정성, 무결성, 호환성, 휴대성 또는 기능상의 이점이 있습니까?암호에 깊이 파고들지 않고선 정말 모르겠어요 당신이 내 배에 있다면 그건 심각한 문제죠완벽한 지속성은 필요하지 않지만 실행 시 프로그램이 매우 안정적이어야 하는 데몬이 있습니다.이는 JSON에 대한 역직렬화 및 시리얼화를 기대하거나 사용자에게 낮은 수준의 내부 투과적인 것을 의미한다고 생각할 수 있지만, 제가 틀릴 수도 있습니다.나는 좋은 추측을 하는 편이지만 중요한 시스템을 만들 때 추측과 추측에 의존할 수 없다.여기서 제 주장을 코드로 테스트하거나 구글이나 그들의 코드로 더 깊이 파고들 수 있습니다.일회성으로 이것은 나쁘지 않지만 나는 그들의 문서를 읽으면서 여러 번 내 자신을 발견하게 된다.그 차이는 작업에 소요되는 일수가 몇 시간이 아닌 것을 의미합니다.확인이 필요한데 서류상 확인은커녕 설명도 거의 없어요.
서류가 급박하게 됩니다.이벤트에 대해서는 설명하지 않고, 에러가 발생한 시점이나 에러의 성질에 대해 애매한 상세를 나타내고 있습니다.또, 접속을 실현하는 방법에는 불명확한 것이 많은 경우가 있습니다.그럭저럭 버틸 수 있고, 전혀 쓸모없는 것은 아니지만, 가장자리가 매우 거칠다.추측과 실험의 여지가 있다는 것을 알게 될 것이다.
언급URL : https://stackoverflow.com/questions/9232562/mongoose-vs-mongodb-nodejs-modules-extensions-which-better-and-why
'programing' 카테고리의 다른 글
JSON 문자열을 JsonResult로 변환할 수 있습니까? (0) | 2023.03.21 |
---|---|
대신 Python JSON 인코더는 NaN을 null로 변환합니다. (0) | 2023.03.21 |
WP 'body' 클래스에 Woocommerce 상위 범주 추가 (0) | 2023.03.21 |
AngularJS 조건부 ng-disabled가 다시 활성화되지 않음 (0) | 2023.03.21 |
로컬 데이터베이스의 스트라이프 미러링(구독, 청구서, 쿠폰 등)은 효율적입니까? (0) | 2023.03.21 |