IT Share you

MongoDB 데이터베이스 연결 유지

shareyou 2020. 11. 28. 13:12
반응형

MongoDB 데이터베이스 연결 유지


MongoDB를 사용하는 많은 입문 예제에서 다음과 같은 코드를 볼 수 있습니다.

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
    /* Some operation... CRUD, etc. */
    db.close();
});

MongoDB를은 다른 데이터베이스 시스템처럼, 경우 openclose작업 시간이 많다는 일반적으로 비싸다.

그래서, 내 질문은 이것입니다 : MongoClient.connect("...한 번만 수행하고 반환 된 db값을 일부 모듈 전역에 할당하고 모듈의 다양한 기능이 다양한 데이터베이스 관련 작업을 수행하도록하는 것이 좋습니다 (문서를 컬렉션에 삽입, 문서 업데이트 등). ) 응용 프로그램의 다른 부분에서 호출 될 때 (따라서 해당 db을 재사용 ) 응용 프로그램이 완료되면 close.

즉, open그리고 close당신이 가서 일부 데이터베이스 관련 작업을 수행 할 필요가 없습니다 때마다 - 한 번 수행됩니다. 그리고 db초기 open\connect에서 반환 된 객체 를 계속 재사용 하고 close, 데이터베이스 관련 작업을 모두 마쳤을 때 마지막에 폐기하기 위해서만 .

분명히 모든 I / O가 비동기이기 때문에 .NET close을 실행하기 전에 마지막 데이터베이스 작업이 완료되었는지 확인해야합니다 close. 이것이 괜찮을 것 같지만 MongoDB를 처음 접했기 때문에 뭔가 빠진 경우를 대비하여 다시 확인하고 싶었습니다. 감사!


예, 그것은 훌륭하고 전형적인 행동입니다. 앱을 시작하고, db에 연결하고, 오랫동안 db에 대해 작업을 수행하고, 연결이 예기치 않게 중단되면 다시 연결 한 다음 연결을 닫지 마십시오 (프로세스가 중단 될 때 발생하는 자동 닫기에 의존). .


mongodb 버전 ^ 3.1.8

약속으로 연결을 초기화하십시오.

const MongoClient = require('mongodb').MongoClient
const uri = 'mongodb://...'
const client = new MongoClient(uri)
const connection = client.connect() // initialized connection

그런 다음 데이터베이스에서 작업을 수행 할 때마다 연결을 호출합니다.

    // if I want to insert into the database...
    const connect = connection
    connect.then(() => {
        const doc = { id: 3 }
        const db = client.db('database_name')
        const coll = db.collection('collection_name')
        coll.insertOne(doc, (err, result) => {
            if(err) throw err
        })
    })

참고 URL : https://stackoverflow.com/questions/18650890/keeping-open-a-mongodb-database-connection

반응형