문서 메뉴
문서 홈
/
MongoDB Atlas
/

합성 데이터 생성

이 페이지의 내용

  • 전제 조건
  • 절차

실제 데이터의 스키마와 일치하는 합성 데이터를 생성할 수도 있습니다. 합성 데이터는 테스트 및 개발 환경에 유용합니다.

이 튜토리얼에서는 Atlas 클러스터에 연결하고 Node.js 및 faker.js 를 사용하여 합성 데이터를 생성합니다. . 자세한 내용은 Fker JS 문서를 참조하세요.

이 튜토리얼의 단계를 사용하여 합성 데이터를 생성하려면 다음을 수행해야 합니다.

  • 데이터를 로드할 Atlas cluster를 만듭니다. 자세한 내용 은 클러스터 생성을 참조하세요.

  • Node, NPM, MongoDB Node.js 드라이버를 설치합니다.

  • Faker.js를 설치합니다:

    npm install --save-dev @faker-js/faker

클러스터에서 합성 데이터를 생성하려면 다음 단계를 따릅니다.

1
  1. 다음 명령을 실행하여 앱 디렉토리를 만들고 이동합니다.

    mkdir syntheticdata
    cd syntheticdata
  2. 다음 명령을 실행하여 프로젝트를 초기화하고 npm 에 연결합니다.

    npm init

    entry point: (index.js)제외한 모든 기본값을 수락하려면 Enter 을 누릅니다. 터미널이 entry point: (index.js) 을 반환하면 이 텍스트를 입력하고 Enter 를 누릅니다.

    myapp.js

    모든 기본값을 계속 수락하고 메시지가 표시되면 Yes를 입력합니다.

  3. 다음 명령을 실행하여 웹 애플리케이션 프레임워크인 express를 설치합니다.

    npm install express --save
  4. 생성한 디렉토리에서 이름이 myapp.js인 파일을 생성합니다.

2

myapp.js 파일에 다음 코드를 추가합니다. 다음 자리 표시자 값을 원하는 값으로 바꾸고 파일 내용을 저장합니다.

  • <YOUR-ATLAS-URI>: Atlas cluster에 대한 연결 문자열입니다. 연결 문자열을 찾는 방법을 알아보려면 MongoDB Atlas 연결 문자열 찾기를 참조하세요.

  • <DATABASE-NAME>: Atlas에서 생성할 데이터베이스의 이름입니다.

  • <COLLECTION-NAME>: Atlas에서 생성할 컬렉션의 이름입니다.

// require the necessary libraries
const { faker } = require("@faker-js/faker");
const MongoClient = require("mongodb").MongoClient;
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min + 1) + min);
}
async function seedDB() {
// Connection URL
const uri = "<YOUR-ATLAS-URI>";
const client = new MongoClient(uri);
try {
await client.connect();
console.log("Connected correctly to server");
const collection = client.db("<DATABASE-NAME>").collection("<COLLECTION-NAME>");
// make a bunch of time series data
let timeSeriesData = [];
for (let i = 0; i < 5000; i++) {
const firstName = faker.person.firstName();
const lastName = faker.person.lastName();
let newDay = {
timestamp_day: faker.date.past(),
cat: faker.lorem.word(),
owner: {
email: faker.internet.email({firstName, lastName}),
firstName,
lastName,
},
events: [],
};
for (let j = 0; j < randomIntFromInterval(1, 6); j++) {
let newEvent = {
timestamp_event: faker.date.past(),
weight: randomIntFromInterval(14,16),
}
newDay.events.push(newEvent);
}
timeSeriesData.push(newDay);
}
await collection.insertMany(timeSeriesData);
console.log("Database seeded with synthetic data! :)");
} catch (err) {
console.log(err.stack);
}
}
seedDB();

예를 들어 코드에는 synthetic-data-db 데이터베이스와 synthetic-data-collection 컬렉션을 지정하는 다음 줄이 포함될 수 있습니다.

const collection = client.db("synthetic-data-db").collection("synthetic-data-collection");

이 코드는 고양이에 대한 time-series 컬렉션을 생성하고, 각 문서에 다음 필드를 추가하고,faker.js의 합성 데이터로 필드를 채웁니다.

  • timestamp_day

  • cat

  • owner.email

  • owner.firstName

  • owner.lastName

  • events

코드의 필드와 값을 데이터와 일치하는 필드와 값으로 바꿀 수 있습니다.Faker.js 에서 사용 가능한 필드에 대해 자세히 알아보려면 자세한 내용은 Faker API 참조를 참조하세요.

3

터미널에서 다음 코드를 실행하여 앱을 실행합니다.

node myapp.js

앱에서 myapp.js의 데이터 패턴을 반영하는 5,000개의 문서를 생성합니다.

이 코드를 실행한 후 CTRL + C를 눌러 실행 중인 애플리케이션을 종료할 수 있습니다.

4
  1. 이미 표시되어 있지 않은 경우 탐색 모음의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 이미 표시되어 있지 않은 경우 Projects 탐색 모음의 프로젝트 메뉴에서 원하는 프로젝트를 선택합니다.

  3. Clusters 페이지가 아직 표시되지 않은 경우 사이드바에서 Database를 클릭합니다.

5
  1. 클러스터 이름을 클릭합니다.

  2. Collections 탭을 클릭합니다.

6

생성한 데이터베이스의 이름을 확장하고 생성한 컬렉션의 이름을 클릭합니다. 합성 데이터가 표시됩니다.

← 샘플 날씨 데이터 세트

이 페이지의 내용