아폴로 몽구스 플러그인

새 라이브러리 apollo-mongoose-plugin 를 소개하겠습니다.

It's a plugin to add mongoose query information on the Apollo GraphQL response extensions node.





이 플러그인이 필요한 이유는 무엇입니까?


apollo-mongoose-plugin의 목적은 중복되거나 길거나 일괄 처리되지 않은 MongoDB 쿼리를 식별하는 데 도움을 주는 것입니다.
GraphQL 덕분에 주문형으로 연결된 데이터를 로드하는 필드 확인자를 정말 쉽게 만들 수 있습니다.
그러나 작은 데이터 조각으로 작업하면 큰 그림을 놓치고 성능 문제로 이어질 수 있습니다.
이 플러그인을 사용하면 전역 성능과 Mongo 쿼리의 실행 계획을 계속 확인할 수 있습니다.

어떻게 작동합니까?



라이브러리는 2개의 플러그인으로 구성되어 있습니다. 한 번은 Mongoose에서 쿼리 정보를 수집하고 두 번째는 수집된 쿼리를 Apollo GraphQL 응답에 추가합니다.

용법


npm install apollo-mongoose-plugin로 플러그인을 설치한 다음 mongoCollectorPlugin를 Mongoose에 등록하고 ApolloMongoosePluginApolloServer에 등록합니다.

import {
  ApolloMongoosePlugin,
  mongoCollectorPlugin,
} from 'apollo-mongoose-plugin';
import { ApolloServer } from 'apollo-server';
import mongoose from 'mongoose';

// first: register mongoose query collector plugin
// 🔔  Make sure you are registering the mongoose plugin
//     before you are creating mongoose models
mongoose.plugin(mongoCollectorPlugin);

// then: register apollo plugin
const server = new ApolloServer({
  // ...schema, dataSources
  plugins: [new ApolloMongoosePlugin()],
});


성능 문제를 어떻게 처리할 수 있습니까?



나는 이 주제에 대한 전문가는 아니지만 내 경험을 통해 적어도 다음 몇 가지 팁을 사용했음을 인정해야 합니다.
  • 색인을 추가하여 검색 최적화
  • Dataloader를 사용하여 호출된 그룹을 하나로 묶습니다.
  • 나중에 제공하기 위해 캐시 쿼리 결과(예: Redis에서)
  • 지속형 GraphQL 쿼리 사용
  • 좋은 웹페이지 즐겨찾기