MongoDB 데이터 소스에 연결
이 페이지의 내용
개요
데이터 소스 는 앱 과 동일한 프로젝트 에 있는 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 5.0 이상을실행 하는 비샤드 MongoDB Atlas cluster .
클러스터는 서버리스 인스턴스 또는 연합 데이터베이스 인스턴스 일 수 없습니다 . 데이터 소스 제한 사항을 참조하세요.
변화하는 데이터에 대한 React
데이터 변경에 따라 자동으로 함수를 실행하는 데이터베이스 트리거를 생성할 수 있습니다. 트리거는 MongoDB 변경 스트림을 사용하여 데이터 소스를 관찰하고 변경 이벤트가 트리거 구성과 일치할 때마다 함수를 실행합니다. 트리거 함수는 임의의 코드를 실행할 수 있으며 변경 이벤트에 액세스하여 실행을 유발한 변경 사항에 대한 자세한 정보를 확인할 수 있습니다.
트리거의 작동 방식과 직접 트리거를 정의하는 방법에 대해 자세히 알아보려면 데이터베이스 트리거를 참조하세요.
중요
트리거는 변경 스트림을 지원하는 데이터 소스에서만 사용할 수 있습니다. 연합 데이터베이스 인스턴스 또는 서버리스 Atlas 인스턴스에서는 트리거를 정의할 수 없습니다.
데이터 소스 연결
앱에 구성된 데이터 소스는 Atlas의 기본 인스턴스에 연결됩니다. 여러 인스턴스를 앱에 연결할 수 있으며 동일한 기본 인스턴스에 연결되는 여러 데이터 소스를 만들 수도 있습니다.
App Services UI에서 새 연결된 데이터 소스를 구성하거나, App Services CLI 또는 GitHub 배포를 통해 구성 파일을 정의하고 푸시하여 구성할 수 있습니다:
새 데이터 소스 연결
Link a Data Source을(를) 클릭하고 Data Source Configuration 화면에 다음 구성 정보를 제공합니다.
필드 | 설명 | |
---|---|---|
Data Source | 앱과 동일한 프로젝트에 연결된 MongoDB Atlas 클러스터 또는 연합 데이터베이스 인스턴스입니다. | |
App Services Service Name | 데이터 소스에 연결하는 App Services 서비스의 이름입니다. MongoDB 서비스 클라이언트를 인스턴스화할 때와 같이 애플리케이션의 다른 부분에서 데이터 소스를 참조할 때 이 이름을 사용합니다. 예시App Services
Service Name
| |
MongoDB Connection String config.wireProtocolEnabled | Atlas 클러스터에 필요합니다. 연합 데이터베이스 인스턴스에는 사용할 수 없습니다. App Services에서 클라이언트가 유선 프로토콜을 통해 연결 문자열을 사용하여 이 클러스터에 연결할 수 있도록 허용해야 하는지 여부를 나타내는 부울입니다. | |
Read Preference | Atlas 클러스터에 필요합니다. 연합 데이터베이스 인스턴스에는 사용할 수 없습니다. 클러스터의 읽기 설정을 지정합니다. 대부분의 사용 사례에는 기본 읽기 설정(프라이머리)이면 충분합니다. |
데이터 소스 구성 파일 추가
데이터 소스 하위 디렉토리에 config.json
이라는 파일 을 추가합니다. 이 파일 은 MongoDB Atlas cluster 또는 연합 데이터베이스 인스턴스 를 구성할 수 있습니다.
구성 파일은 다음과 같은 일반적인 형식을 가져야 합니다.
{ "name": "<Service Name>", "type": "mongodb-atlas", "config": { "clusterName": "<Atlas Cluster Name>", "readPreference": "<Read Preference>", "wireProtocolEnabled": <Boolean>, "sync": <Sync Configuration> } }
참고
클러스터 구성 파일 의 내용에 대한 자세한 내용은 연결된 MongoDB 클러스터 구성을 참조하세요.
{ "name": "<Service Name>", "type": "datalake", "config": { "dataLakeName": "<Federated database instance name>" } }
참고
자세한 내용은 연합 데이터베이스 인스턴스 구성을 참조하세요.
데이터 소스 제한
연결된 데이터 소스는 여러 인스턴스 MongoDB Atlas 인스턴스 유형 중 하나를 나타낼 수 있습니다. 기본 인스턴스의 유형에 따라 일부 기능이 지원되지 않을 수 있습니다.
데이터 소스를 연결한 후에는 기본 인스턴스 유형을 변경할 수 없습니다. 대신 새 데이터 소스를 다른 인스턴스 유형과 연결할 수 있습니다.
Atlas Data Federation
연합 데이터베이스 인스턴스를 MongoDB 데이터 소스로 앱에 연결할 수 있습니다. 하지만 Atlas Data Federation으로 작업할 때 유의해야 할 몇 가지 주의 사항이 있습니다:
연합 데이터 소스는 쓰기 작업을 지원하지 않습니다.
연합된 데이터 소스에는 시스템 기능에서만 액세스할 수 있습니다.
유선 프로토콜을 통해서는 연합된 데이터 소스에 연결할 수 없습니다.
연합 데이터 소스에 대한 역할 및 사용 권한을 정의할 수 없습니다.
연합 데이터 소스에 대한 읽기 설정(read preference)을 지정할 수 없습니다.
연합 데이터 소스에서는 데이터베이스 트리거를 만들 수 없습니다.
연합 데이터 소스는 앱의 Device Sync 클러스터로 사용할 수 없습니다.
Serverless Instances
서버리스 인스턴스를 앱에 MongoDB 데이터 소스로 연결할 수 있습니다. 그러나 서버리스 인스턴스는 현재 변경 스트림을 지원하지 않으므로 다음 기능이 제한됩니다.
서버리스 인스턴스에서는 데이터베이스 트리거를 만들 수 없습니다.
서버리스 인스턴스는 앱의 Device Sync 클러스터로 사용할 수 없습니다.
서버리스 MongoDB Atlas 인스턴스인 변경 데이터 소스에 대한 컬렉션을 볼 수 없습니다.