합성 데이터 생성
실제 데이터의 스키마와 일치하는 합성 데이터를 생성할 수도 있습니다. 합성 데이터는 테스트 및 개발 환경에 유용합니다.
이 튜토리얼에서는 Atlas 클러스터에 연결하고 Node.js 및 faker.js 를 사용하여 합성 데이터를 생성합니다. . 자세한 내용은 Fker JS 문서를 참조하세요.
전제 조건
이 튜토리얼의 단계를 사용하여 합성 데이터를 생성하려면 다음을 수행해야 합니다.
데이터를 로드할 Atlas cluster를 만듭니다. 자세한 내용 은 클러스터 생성을 참조하세요.
npm install --save-dev @faker-js/faker
절차
클러스터에서 합성 데이터를 생성하려면 다음 단계를 따릅니다.
Node.js 앱을 생성합니다.
다음 명령을 실행하여 앱 디렉토리를 만들고 이동합니다.
mkdir syntheticdata cd syntheticdata 다음 명령을 실행하여 프로젝트를 초기화하고
npm
에 연결합니다.npm init entry point: (index.js)
를 제외한 모든 기본값을 수락하려면Enter
을 누릅니다. 터미널이entry point: (index.js)
을 반환하면 이 텍스트를 입력하고Enter
를 누릅니다.myapp.js 모든 기본값을 계속 수락하고 메시지가 표시되면
Yes
를 입력합니다.다음 명령을 실행하여 웹 애플리케이션 프레임워크인
express
를 설치합니다.npm install express --save 생성한 디렉토리에서 이름이
myapp.js
인 파일을 생성합니다.
합성 데이터를 생성하는 코드를 추가합니다.
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 참조를 참조하세요.