MongoDB Atlas Data Lake는 MongoDB Atlas가 제공하는 새로운 서비스입니다.
많은 고객들이 S3, GCP, Azure Blobs와 같은 저렴한 오브젝트 스토리지에 장기 보관용 데이터를 저장합니다.
하지만 그 중 다수는 의사 결정을 위한 분석이 필요 시 , 효과적으로 해당 데이터를 활용할 수 있는 강력한 시스템이나 도구가 없습니다. MongoDB Atlas Data Lake는 장기간 저장된 고객의 데이터 분석을 가능하게 하며, 해당 비즈니스에 의미있고, 가치있는 정보를 제공할 수 있습니다.
해당 세션에서는 MongoDB Atlas Data Lake에서 사용할 수 있는 기능과 그 구현 방법에 대해 자세히 설명합니다.
4. Atlas Data Lake를 구축하려는 이유
• 기업들은 엄청난 양의 데이터를 보유하고 있습니다.
• 클라우드 스토리지는 장기 데이터를 보관하는 데 비용
효과적이지만
• 운영이 까다롭습니다.
IDC는 2025년이면 전 세계 데이터가
175제타바이트에 육박하게 될 것이고,
이 가운데 49%는 퍼블릭 클라우드에
상주할 것으로 전망하고 있습니다.
5. Atlas Data Lake의 이점
액세스– 다양한 형식으로 오랜 기간을 저장하는 데이터
쿼리 실행 - MQL을 이용한 쿼리
분석 - 온디맨드 방식을 기반으로 데이터 분석
6. Atlas Data Lake의 특징
다양한 데이터 형식
확장성
MongoDB 쿼리 언어
서버리스
온디맨드
Atlas에 통합
7. 구현 요구 사항
• MongoDB와 동일한 인터페이스 및 작동 방식
• 장기 실행 쿼리를 처리
• 고객 데이터에 안전하게 액세스
• 고객이 완벽한 제어권을 보유
• 대량의 데이터에 대한 쿼리 실행 지원
• 효율적인 리소스 사용
• 다양한 데이터 형식 지원
8. MongoDB 와이어 프로토콜 지원
요구 사항
MongoDB와 유사한 외관 및
작동 방식
솔루션
GO기반의 TCP 서버를 실행
MongoDB Go Driver의 와이어
프로토콜 패키지 사용
MongoDB Go Driver의 BSON 패키지
사용
9. MongoDB 쿼리 언어(MQL) 지원
요구 사항
MongoDB와 유사한 인터페이스
및 작동 방식
장기 실행 쿼리 처리
솔루션
읽기 전용 mongod 서버에서 명령어
실행
커서와 getMore 명령 지원 포함
서버의 집계(aggregation) 엔진 사용
10. MongoDB 보안 모델
요구 사항
MongoDB와 유사한 인터페이스
및 작동 방식
고객 데이터에 안전하게 액세스
솔루션
MongoDB Atlas에서 사용자 구성
TLS와 SNI의 동시 사용 필요성
11. 고객 데이터 보안
요구 사항
고객이 완벽한 제어권을 보유
솔루션
사용자에게 IAM 역할 제공
버킷 구성
Atlas에서 사용자 구성
12. 확장 가능한 처리
요구 사항
대량의 데이터에 대한 쿼리
실행 지원
효율적인 리소스 사용
솔루션
분산된 MQL 처리
지능적인 파일 타겟팅
13. 데이터 형식
요구 사항
다양한 데이터 형식 지원
솔루션
Apache Avro
Apache Parquet
BSON
JSON
CSV/TSV
(더 많은 형식 추가 중)
24. Data Lake 구성
1. Atlas에서 새 Data Lake 구성
2. Data Lake 연결
3. 데이터베이스 및 컬렉션 구성
4. Data Lake 쿼리 실행
25. 구성: S3 저장소
let DataLakeS3 = {
"s3": {
name: "ent-archive", // S3 store name for Data Lake config
bucket: "ent-archive", // Name of the S3 bucket
region: "ap-northeast-2", // Bucket region code
prefix: "/archive/" // Base path in the S3 bucket
}
}
27. 구성: 데이터베이스 및 컬렉션
let DataLakeDatabases = {
history: {
customers: [{
store: "ent-archive",
definition: "/customers/*"
}],
invoices: [{
store: "ent-archive",
definition: "/invoices/{year int}/*"
}, {
store: "ent-archive",
definition: "/invoices/{year int}.json.gz"
}]
}}
고객 컬렉션에서 히스토리 데이터베이스를 정의합니다. 이
정의는 일치하는 파일이 어떤 것인지 판단합니다.
28. 구성: 데이터베이스 및 컬렉션
let DataLakeDatabases = {
history: {
customers: [{
store: "ent-archive",
definition: "/customers/*"
}],
invoices: [{
store: "ent-archive",
definition: "/invoices/{year int}/*"
}, {
store: "ent-archive",
definition: "/invoices/{year int}.json.gz"
}]
}}
정의에 * 와일드카드 문자를 추가하면 Data Lake에게 경로의 해당
지점에서 모든 파일과 폴더를 포함시키도록 명령할 수 있습니다.
29. 구성: 데이터베이스 및 컬렉션
let DataLakeDatabases = {
history: {
customers: [{
store: "ent-archive",
definition: "/customers/*"
}],
invoices: [{
store: "ent-archive",
definition: "/invoices/{year int}/*"
}, {
store: "ent-archive",
definition: "/invoices/{year int}.json.gz"
}]
}}
파일 이름에 대해 여러 개의 구문 분석 함수를 지정할 수 있습니다.
30. 구성: 데이터베이스 및 컬렉션
let DataLakeDatabases = {
history: {
customers: [{
store: "ent-archive",
definition: "/customers/*"
}],
invoices: [{
store: "ent-archive",
definition: "/invoices/{year int}/*"
}, {
store: "ent-archive",
definition: "/invoices/{year int}.json.gz"
}]
}}
파일 이름에서 정적 문자열과 더불어 구문 분석 함수를 지정할 수
있습니다.
31. Data Lake 구성 저장
db.adminCommand({"storageSetConfig": {
"stores": [
DataLakeS3
],
databases": DataLakeDatabases
})
32. Data Lake 구성
1. Atlas에서 새 Data Lake 구성
2. Data Lake 연결
3. 데이터베이스 및 컬렉션 구성
4. Data Lake 쿼리 실행
33. MongoDB Atlas를 통한 쿼리 실행
• Atlas 사용자에게는 readWriteAnyDatabase 또는 readAnyDatabase
역할이 필요
• Mongo 셸 및 MongoDB Compass가 포함된 MongoDB
드라이버/클라이언트 사용
• MQL(MongoDB Query Language)로 쿼리 작성
34. MQL을 사용한 쿼리 실행
> use history
> show collections
customers
> db.customers.find({…})
> db.customers.aggregate({…})
37. Atlas Data Lake 아키텍처
Atlas
제어
제어
플레인
컴퓨팅
플레인
데이터
플레인
DataLake
프론트엔
드
DataLake
에이전트
로드 밸런서
로드 밸런서
DataLake
프론트엔드
DataLake
에이전트
로드 밸런서
로드 밸런서
DataLake
프론트엔
드
DataLake
에이전트
로드 밸런서
로드 밸런서
38. 지능적 파일 타겟팅
invoices: [{
store: "ent-archive",
definition: "/invoices/{year int}/*"
}, {
store: "ent-archive",
definition: "/invoices/{year int}.json.gz"
}]
Data Lake가 연도 필드에서 쿼리를 수신할 때 쿼리와 일치하는
데이터가 포함된 파일을 식별할 수 있습니다.