Docs Menu
Docs Home
/ /
Atlas App Services

MongoDB 데이터 소스에 연결

이 페이지의 내용

  • 개요
  • 데이터 읽기, 쓰기 및 애그리게이션
  • 데이터 보안 및 유효성 검사
  • 데이터 자동 동기화
  • 변화하는 데이터에 대한 React
  • 데이터 소스 연결
  • 데이터 소스 제한
  • Atlas Data Federation
  • Serverless Instances

데이터 소스 는 앱 과 동일한 프로젝트 에 있는 MongoDB Atlas 인스턴스 를 나타냅니다. 데이터 소스를 사용하여 애플리케이션의 데이터를 저장 하고 조회 합니다.

대부분의 앱은 단일 데이터 소스에 연결하지만, 데이터가 여러 인스턴스에 분산되어 있는 경우에는 여러 데이터 소스를 구성할 수 있습니다. 애플리케이션에 연결된 각 데이터 소스에 대해 고유한 이름을 정의하고 이 이름을 사용하여 앱 전체에서 데이터 소스를 참조할 수 있습니다.

데이터 소스에 대한 요청은 Atlas App Services를 통해 라우팅됩니다. 이 때문에 App Services는 데이터베이스 연결을 자동으로 열고 닫습니다. 즉, 데이터 소스를 사용할 때 db.close()를 호출할 필요가 없습니다.

참고

백엔드 암호화

App Services와 Atlas 간의 모든 내부 통신은 x509 인증서로 암호화됩니다.

서버 측 함수에서 데이터 소스의 데이터를 읽고 쓰거나, 클라이언트 애플리케이션에서 연결할 수 있습니다. 표준 MongoDB 쿼리 구문을 사용하여 쿼리를 작성합니다.

exports = async function() {
const mongodb = context.services.get("mongodb-atlas");
return mongodb
.db("myDatabase")
.collection("myCollection")
.findOne()
}

Atlas Function에서 데이터 소스로 작업하는 방법을 알아보려면 다음 가이드를 참조하세요.

Realm SDK의 데이터 소스로 작업하는 방법을 알아보려면 클라이언트 앱에서 Atlas 쿼리를 참조하세요.

참고

연결된 데이터 소스는 모든 MongoDB CRUD 및 집계 작업을 지원하지 않습니다. 특정 사용자로 MongoDB를 쿼리하는 경우 스키마 검증 및 데이터 액세스 규칙의 오버헤드로 인해 일부 작업을 사용할 수 없습니다. 대신 시스템 사용자로 MongoDB를 쿼리하여 일부 제한을 우회할 수 있습니다.

지원되는 작업에 대한 자세한 내용은 CRUD 및 집계 API를 참조하세요.

데이터 소스를 사용하면 해당 소스에 포함된 데이터에 대한 액세스 규칙문서 스키마를 정의할 수 있습니다. 규칙은 사용자에게 데이터의 하위 집합을 읽고 쓸 수 있는 권한을 동적으로 부여하고 스키마는 각 문서의 모양과 내용을 제어합니다.

연결된 데이터 소스에 대한 읽기 및 쓰기 작업은 기본적으로 안전합니다. 규칙에서 명시적으로 허용하지 않은 경우, 사용자는 데이터를 읽거나 쓸 수 없습니다. 권한이 있는 사용자가 삽입하거나 수정한 모든 데이터는 해당 스키마를 준수해야 합니다.

컬렉션에 대한 규칙을 정의하지 않으면 컬렉션에 대한 쿼리가 실패합니다. 즉, 클라이언트 애플리케이션에서 적절하게 구성된 데이터 소스 인터페이스를 데이터 손상이나 유출의 위험 없이 안전하게 노출할 수 있습니다.

Atlas Device Sync 애플리케이션은 데이터를 저장하고 데이터 변경 사항을 동기화된 클러스터라고 하는 연결된 클러스터에 동기화합니다. 동기화 프로토콜은 데이터가 모든 동기화 클라이언트와 동기화된 클러스터에서 최종적으로 일관성을 유지하도록 합니다.

Atlas Device Sync 및 앱의 데이터 소스와 상호 작용하는 방식에 대해 자세히 알아보려면 Atlas Device Sync를 참조하세요.

참고

Device Sync 를 위한 데이터 소스 요구 사항

Device Sync 를 활성화 하려면 App Services App 에 다음 요구 사항을 충족하는 연결된 데이터 소스 가 하나 이상 있어야 합니다.

데이터 변경에 따라 자동으로 함수를 실행하는 데이터베이스 트리거를 생성할 수 있습니다. 트리거는 MongoDB 변경 스트림을 사용하여 데이터 소스를 관찰하고 변경 이벤트가 트리거 구성과 일치할 때마다 함수를 실행합니다. 트리거 함수는 임의의 코드를 실행할 수 있으며 변경 이벤트에 액세스하여 실행을 유발한 변경 사항에 대한 자세한 정보를 확인할 수 있습니다.

트리거의 작동 방식과 직접 트리거를 정의하는 방법에 대해 자세히 알아보려면 데이터베이스 트리거를 참조하세요.

중요

트리거는 변경 스트림을 지원하는 데이터 소스에서만 사용할 수 있습니다. 연합 데이터베이스 인스턴스 또는 서버리스 Atlas 인스턴스에서는 트리거를 정의할 수 없습니다.

앱에 구성된 데이터 소스는 Atlas의 기본 인스턴스에 연결됩니다. 여러 인스턴스를 앱에 연결할 수 있으며 동일한 기본 인스턴스에 연결되는 여러 데이터 소스를 만들 수도 있습니다.

App Services UI에서 새 연결된 데이터 소스를 구성하거나, App Services CLI 또는 GitHub 배포를 통해 구성 파일을 정의하고 푸시하여 구성할 수 있습니다:

1

App Services UI Linked Data Sources Manage 왼쪽 탐색 메뉴의 아래에서 를 클릭합니다.

2

Link a Data Source을(를) 클릭하고 Data Source Configuration 화면에 다음 구성 정보를 제공합니다.

필드
설명
Data Source
앱과 동일한 프로젝트에 연결된 MongoDB Atlas 클러스터 또는 연합 데이터베이스 인스턴스입니다.
App Services Service Name

데이터 소스에 연결하는 App Services 서비스의 이름입니다. MongoDB 서비스 클라이언트를 인스턴스화할 때와 같이 애플리케이션의 다른 부분에서 데이터 소스를 참조할 때 이 이름을 사용합니다.

예시

App Services Service NamemyAtlasCluster 를 갖고 MongoDB 클러스터 데이터 원본을 고려해봅니다. 함수에서 서비스 클라이언트를 만들려면 다음 코드를 사용하세요.

const myAtlasCluster = context.services.get("myAtlasCluster");
MongoDB Connection String
config.wireProtocolEnabled
Atlas 클러스터에 필요합니다. 연합 데이터베이스 인스턴스에는 사용할 수 없습니다. App Services에서 클라이언트가 유선 프로토콜을 통해 연결 문자열을 사용하여 이 클러스터에 연결할 수 있도록 허용해야 하는지 여부를 나타내는 부울입니다.
Read Preference
Atlas 클러스터에 필요합니다. 연합 데이터베이스 인스턴스에는 사용할 수 없습니다. 클러스터의 읽기 설정을 지정합니다. 대부분의 사용 사례에는 기본 읽기 설정(프라이머리)이면 충분합니다.
3

MongoDB 클러스터 또는 연합 데이터베이스 인스턴스를 선택하고 구성한 후 Save을(를) 클릭합니다. App Services는 데이터 소스에 연결하는 프로세스를 즉시 개시하며, 이 작업은 최대 5분 정도 걸릴 수 있습니다.

1

MongoDB Atlas cluster 또는 연합 데이터베이스 인스턴스 를 App Services CLI 와 연결하려면 애플리케이션 구성 파일의 로컬 복사본이 필요합니다.

최신 버전의 앱의 로컬 사본을 가져오려면 다음을 실행하세요.

appservices pull --remote="<Your App ID>"

Realm UI의 Deploy > Export App 화면에서 애플리케이션의 구성 파일 사본을 다운로드할 수도 있습니다.

2

/data_sources 에서 데이터 소스 에 사용할 이름으로 새 하위 디렉토리를 만듭니다.

mkdir -p data_sources/<Data Source Name>
3

데이터 소스 하위 디렉토리에 config.json 이라는 파일 을 추가합니다. 이 파일 은 MongoDB Atlas cluster 또는 연합 데이터베이스 인스턴스 를 구성할 수 있습니다.

구성 파일은 다음과 같은 일반적인 형식을 가져야 합니다.

/data_sources/<Service Name>/config.json
{
"name": "<Service Name>",
"type": "mongodb-atlas",
"config": {
"clusterName": "<Atlas Cluster Name>",
"readPreference": "<Read Preference>",
"wireProtocolEnabled": <Boolean>,
"sync": <Sync Configuration>
}
}

참고

클러스터 구성 파일 의 내용에 대한 자세한 내용은 연결된 MongoDB 클러스터 구성을 참조하세요.

/data_sources/<Service Name>/config.json
{
"name": "<Service Name>",
"type": "datalake",
"config": {
"dataLakeName": "<Federated database instance name>"
}
}
4

데이터 소스에 대한 config.json 파일을 정의하고 저장한 후에는 구성을 원격 앱에 푸시할 수 있습니다. App Services는 데이터 소스에 연결하는 프로세스를 즉시 개시하며, 이 작업은 최대 5분 정도 걸릴 수 있습니다.

appservices push --remote="<Your App ID>"

연결된 데이터 소스는 여러 인스턴스 MongoDB Atlas 인스턴스 유형 중 하나를 나타낼 수 있습니다. 기본 인스턴스의 유형에 따라 일부 기능이 지원되지 않을 수 있습니다.

데이터 소스를 연결한 후에는 기본 인스턴스 유형을 변경할 수 없습니다. 대신 새 데이터 소스를 다른 인스턴스 유형과 연결할 수 있습니다.

연합 데이터베이스 인스턴스를 MongoDB 데이터 소스로 앱에 연결할 수 있습니다. 하지만 Atlas Data Federation으로 작업할 때 유의해야 할 몇 가지 주의 사항이 있습니다:

서버리스 인스턴스를 앱에 MongoDB 데이터 소스로 연결할 수 있습니다. 그러나 서버리스 인스턴스는 현재 변경 스트림을 지원하지 않으므로 다음 기능이 제한됩니다.

  • 서버리스 인스턴스에서는 데이터베이스 트리거를 만들 수 없습니다.

  • 서버리스 인스턴스는 앱의 Device Sync 클러스터로 사용할 수 없습니다.

  • 서버리스 MongoDB Atlas 인스턴스인 변경 데이터 소스에 대한 컬렉션을 볼 수 없습니다.

돌아가기

Okta (Custom JWT)