Docs Menu
Docs Home
/ / /
Scala
/

MongoDB에 연결

이 페이지의 내용

  • 전제 조건
  • 몽고클라이언트
  • 연결 URI
  • MongoDB Atlas에 연결
  • 로컬 MongoDB 배포에 연결
  • 복제본 세트에 연결
  • 샤딩된 클러스터에 연결
  • 연결 옵션
  • 연결 튜토리얼

이 가이드 에서는 Scala 운전자 를 사용하여 MongoDB 에 연결하는 방법을 설명합니다.

MongoClient() 메서드를 사용하여 실행 중인 MongoDB deployment에 연결합니다.

중요

다음 예시에서는 MongoClient 을(를) 인스턴스화하는 방법의 전체 목록을 제공하지 않습니다. MongoClient 컴패니언 메서드의 전체 목록은 MongoClient API 설명서를 참조하세요.

참고

시스템 연결 유지 설정은 제한 시간을 더 짧게 구성 하는 것이 좋습니다 .

TCP 킵얼라이브 시간이 MongoDB 배포에 영향을 미치나요?를 참조하세요. 자세한 내용은 서버 매뉴얼 FAQ 의 질문과 답변 을 참조하세요.

이 가이드의 코드 예제를 실행하려면 다음 구성 요소를 설정해야 합니다.

  • 연결할 MongoDB deployment 가 실행 어야 합니다. 예를 예시, 독립형 배포서버 에 연결하려면 실행 독립형 배포서버 에 액세스 이 있어야 합니다.

  • 프로젝트 에 설치된 드라이버 종속성. 운전자 설치 방법을 학습 보려면 설치를 참조하세요.

  • 다음 가져오기 문:

    import org.mongodb.scala._
    import scala.collection.JavaConverters._

MongoClient 인스턴스 는 데이터베이스 에 대한 연결 풀을 나타냅니다. 여러 개의 동시 작업을 실행 하는 경우에도 MongoClient 인스턴스 는 하나만 필요합니다.

중요

일반적으로 독립형 배포, 복제본 세트 또는 샤드 클러스터와 같은 특정 MongoDB 배포에 대해 MongoClient 인스턴스를 하나만 만들고 애플리케이션 전체에서 클라이언트를 사용합니다. 그러나 여러 인스턴스를 만드는 경우 다음 사항에 유의하세요.

  • 모든 리소스 사용량 제한(예: 최대 연결 수)은 각 MongoClient 인스턴스에 적용됩니다.

  • 인스턴스를 삭제하려면 MongoClient.close() 메서드를 호출하여 리소스를 정리합니다.

연결 URI는 드라이버가 MongoDB 배포에 연결하는 데 사용하는 일련의 지침을 제공합니다. 이는 MongoDB에 연결하는 방법과 연결된 동안 작동하는 방법에 대해 드라이버에 지시합니다. 다음 그림에서는 샘플 연결 URI의 각 부분을 설명합니다.

프로토콜, 자격 증명, 호스트 이름 또는 IP, 포트 및 연결 옵션을 보여주는 연결 문자열의 예시

이 예시에서는 DNS SRV 레코드가 있는 MongoDB deployment에 연결합니다. 자세한 내용은 DNS 시드 목록 연결 형식 문서를 참조하세요. 이 형식은 배포 유연성을 제공하고 클라이언트를 재구성하지 않고도 서버를 순환적으로 변경할 수 있는 기능을 제공합니다.

참고

배포가 MongoDB Atlas 에 있는 경우, Atlas 드라이버 연결 가이드 를 참조하고 언어 드롭다운에서 Scala 를 선택하여 연결 string 을 검색합니다.

DNS SRV 주소가 없는 인스턴스 또는 복제본 세트에 연결하는 경우 프로토콜에 표준 연결 문자열 형식을 지정하는 mongodb를 사용해야 합니다.

암호 기반 인증 메커니즘을 사용하는 경우 프로토콜 다음에는 연결 문자열에 자격 증명이 포함됩니다. user의 값을 사용자 이름으로 바꾸고 pass를 비밀번호로 바꿉니다. 인증 메커니즘에 자격 증명이 필요하지 않은 경우 연결 URI에서 이 부분을 생략합니다.

연결 URI의 다음 부분은 호스트 이름 또는 IP 주소를 지정하고 그 뒤에 MongoDB 인스턴스의 포트를 지정합니다. 이 예에서 sample.host 은 호스트 이름을 나타내고 27017 은 포트 번호입니다. 이 값을 MongoDB 인스턴스의 포인트 정보로 바꿉니다.

연결 URI의 마지막 부분에는 연결 옵션이 매개 변수로 포함되어 있습니다. 이 예시 에서는 maxPoolSize=20w=majority 라는 두 가지 연결 옵션을 설정합니다.

다음 연결 스니펫을 사용하여 Atlas에서 MongoDB deployment에 대한 연결을 테스트할 수 있습니다.

import com.mongodb.{ServerApi, ServerApiVersion}
import org.mongodb.scala.{ConnectionString, MongoClient, MongoClientSettings}
import org.mongodb.scala.bson.Document
import scala.concurrent.Await
import scala.concurrent.duration.DurationInt
import scala.util.Using
object MongoClientConnectionExample {
def main(args: Array[String]): Unit = {
// Replace the placeholder with your Atlas connection string
val connectionString = "<connection string>";
// Construct a ServerApi instance using the ServerApi.builder() method
val serverApi = ServerApi.builder.version(ServerApiVersion.V1).build()
val settings = MongoClientSettings
.builder()
.applyConnectionString(ConnectionString(connectionString))
.serverApi(serverApi)
.build()
// Create a new client and connect to the server
Using(MongoClient(settings)) { mongoClient =>
// Send a ping to confirm a successful connection
val database = mongoClient.getDatabase("admin")
val ping = database.runCommand(Document("ping" -> 1)).head()
Await.result(ping, 10.seconds)
System.out.println("Pinged your deployment. You successfully connected to MongoDB!")
}
}
}

연결 스니펫은 Stable API(Stable API) 기능을 사용합니다. 이 기능은 Scala 드라이버 v4.3 이상 사용 시 활성화할 수 있으며 MongoDB Server v5.0 이상에 연결할 수 있습니다. 이 기능을 사용하면 Stable API에서 다루는 모든 명령의 하위 호환성 문제에 대한 걱정 없이 드라이버나 서버를 업데이트할 수 있습니다.

Stable API 기능에 대해 자세히 알아보려면 서버 매뉴얼에서 Stable API를 참조하세요.

다음과 같은 방법으로 로컬 MongoDB deployment에 연결할 수 있습니다.

  • 매개 변수 없이 MongoClient 객체를 인스턴스화하여 포트 27017 의 로컬 호스트에서 실행 중인 MongoDB 서버에 연결합니다.

    val mongoClient = MongoClient()
  • 포트 27017 의 지정된 호스트에서 실행 중인 MongoDB 인스턴스에 연결하려면 hostname 를 명시적으로 지정합니다.

    val mongoClient = MongoClient("mongodb://host1")
  • hostnameport 을 명시적으로 지정합니다.

    val mongoClient = MongoClient("mongodb://host1:27017")

복제본 세트 에 연결하려면 MongoClient 적용 메서드에 하나 이상의 멤버를 지정해야 합니다. 복제본 세트에 학습 보려면 서버 매뉴얼의 복제 를 참조하세요.

참고

MongoDB는 복제본 세트에서 프라이머리 및 세컨더리 노드를 자동으로 검색합니다.

ConnectionString 에 멤버를 지정하여 MongoDB 복제본 세트 에 연결할 수 있습니다.

다음 예시 에서는 복제본 세트 의 세 멤버를 지정하는 방법을 보여줍니다.

val mongoClient = MongoClient("mongodb://host1:27017,host2:27017,host3:27017")

다음 예에서는 복제본 세트 이름과 함께 복제본 세트의 멤버와 replicaSet 옵션을 지정하는 방법을 보여 줍니다.

val mongoClient = MongoClient("mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet")

다음 예시 에서는 모든 복제본 세트 멤버에 해당하는 ServerAddress 인스턴스 목록을 지정하는 방법을 보여줍니다.

val mongoClient = MongoClient(
MongoClientSettings.builder()
.applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(
new ServerAddress("host1", 27017),
new ServerAddress("host2", 27017),
new ServerAddress("host3", 27017)).asJava))
.build())

샤드 클러스터에 연결하려면 mongos 인스턴스를 MongoClient 적용 메서드에 지정합니다. 샤드 클러스터에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 샤딩 을 참조하세요.

다음과 같은 방법으로 단일 mongos 인스턴스에 연결할 수 있습니다.

  • ConnectionString 에 호스트 이름과 포트를 지정합니다.

    val mongoClient = MongoClient( "mongodb://localhost:27017" )
  • localhost:27017에서 mongos 가 실행 중인 경우 연결 string 을 제외합니다.

    val mongoClient = MongoClient()

다음과 같은 방법으로 여러 mongos 인스턴스에 연결할 수 있습니다.

  • 호스트 이름과 포트를 포함할 ConnectionString 을(를) 지정합니다.

    val mongoClient = MongoClient("mongodb://host1:27017,host2:27017")
  • 각 인스턴스에 해당하는 ServerAddress 객체 목록을 지정합니다.

    val mongoClient = MongoClient(
    MongoClientSettings.builder()
    .applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(
    new ServerAddress("host1", 27017),
    new ServerAddress("host2", 27017)).asJava))
    .build())

ConnectionString 유형이나 MongoClientSettings 유형 또는 둘 다를 사용하여 연결 설정을 지정할 수 있습니다.

예를 예시 연결 string 에 TLS/SSL 및 인증 설정을 지정할 수 있습니다.

val mongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true")

MongoClientSettings 인스턴스 를 사용하여 TLS/SSL을 지정하고 MongoCredential 유형을 사용하여 인증 정보를 저장 수도 있습니다.

val user: String = // the user name
val source: String = // the source where the user is defined
val password: Array[Char] = // the password as a character array
// ...
val credential = MongoCredential.createCredential(user, source, password)
val mongoClient: MongoClient = MongoClient(
MongoClientSettings.builder()
.applyToSslSettings((builder: SslSettings.Builder) => builder.enabled(true))
.applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(new ServerAddress("host1", 27017)).asJava))
.credential(credential)
.build())

경우에 따라 연결 string 을 프로그래밍 구성과 결합해야 할 수도 있습니다.

val connectionString = ConnectionString("mongodb://host1:27107,host2:27017/?ssl=true")
val myCommandListener: CommandListener = ???
val mongoClient = MongoClient(
MongoClientSettings.builder()
.addCommandListener(myCommandListener)
.applyConnectionString(connectionString)
.build())

다른 연결 기능을 구현하는 방법을 알아보려면 다음 튜토리얼을 참조하세요.

돌아가기

Tutorials