이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
MongoDB GridFS: 대용량 파일 저장 및 검색 방법
MongoDB는 다양한 유형의 데이터를 저장하고 관리할 수 있는 확장성, 고성능 및 유연성을 제공하는 널리 사용되는 NoSQL 데이터베이스입니다. 파일을 포함하여 대량의 데이터를 처리하기 위해 최신 웹 개발에서 널리 사용됩니다. 그러나 MongoDB에는 기본 문서 크기 제한이 16MB로, 이미지, 비디오 또는 문서와 같은 대용량 파일을 저장하고 검색해야 하는 경우 제한이 될 수 있습니다. 여기에서 MongoDB GridFS가 등장합니다. 이 기사에서는 MongoDB GridFS가 무엇인지, 어떻게 작동하는지, 이를 사용하여 대용량 파일을 저장하고 검색하는 방법을 살펴보겠습니다.
MongoDB GridFS는 MongoDB에서 대용량 파일을 저장하고 검색하기 위한 사양입니다. 파일을 저장하기 위해 fs.files
및 fs.chunks
라는 두 개의 컬렉션을 사용합니다. fs.files
컬렉션은 파일 이름, 콘텐츠 유형, 크기 및 업로드 날짜와 같은 파일에 대한 메타데이터를 저장합니다. fs.chunks
컬렉션은 파일의 이진 데이터를 255KB 청크로 저장합니다. 파일이 청크 크기보다 크면 MongoDB에 의해 자동으로 청크로 분할되고 각 청크는 fs.chunks
컬렉션에 별도의 문서로 저장됩니다. 파일.
GridFS는 별도의 데이터베이스나 스토리지 시스템이 아니라 MongoDB를 대용량 파일을 저장하고 검색하기 위한 파일 시스템으로 사용하는 방법입니다. 파일 저장, 검색 및 삭제를 위한 통합 API를 제공하므로 MongoDB 애플리케이션과 쉽게 통합할 수 있습니다. GridFS는 Node.js, Java, Python 및 .NET을 비롯한 여러 프로그래밍 언어 및 플랫폼을 지원합니다.
GridFS를 사용하여 파일을 저장하면 MongoDB는 자동으로 파일을 청크로 분할하여 fs.chunks
컬렉션에 저장합니다. 파일의 메타데이터는 다음 필드가 있는 문서로 fs.files
컬렉션에 저장됩니다.
_id
: 파일의 고유 식별자filename
: 파일 이름contentType
: 파일의 MIME 유형(예: image/jpeg
)length
: 바이트 단위의 파일 크기chunkSize
: 파일이 저장되는 청크의 크기(기본값은 255KB)uploadDate
: 파일이 업로드된 날짜 및 시간md5
: 파일 내용의 MD5 해시fs.chunks
컬렉션은 다음 필드가 있는 하나 이상의 청크 문서에 파일의 이진 데이터를 저장합니다.
_id
: 청크의 고유 식별자files_id
: fs.files
컬렉션에서 해당 문서의 _id
값n
: 파일 내 청크의 시퀀스 번호data
: 청크의 바이너리 데이터GridFS를 사용하여 파일을 검색하면 MongoDB는 fs.files
컬렉션에서 메타데이터 문서와 fs.chunks
컬렉션에서 청크 문서를 검색하고 결합하여 원본 파일을 재구성합니다.
MongoDB GridFS를 사용하려면 프로그래밍 언어 또는 플랫폼에 대한 MongoDB 드라이버를 설치해야 합니다. 여기에서는 Node.js 드라이버를 예로 사용합니다.
Node.js에서 GridFS를 사용하여 파일을 저장하려면 MongoDB Node.js 드라이버에서 제공하는 GridFSBucket
클래스를 사용할 수 있습니다. 다음은 파일을 저장하는 예입니다.
const { MongoClient } = require('mongodb');
const { GridFSBucket } = require('mongodb');
const uri = 'mongodb://localhost:27017/mydb';
const client = new MongoClient(uri);
await client.connect();
const db = client.db('mydb');
const bucket = new GridFSBucket(db);
const stream = bucket.openUploadStream('myFile.txt');
fs.createReadStream('/path/to/myFile.txt').pipe(stream);
이 예제에서는 먼저 MongoClient
클래스를 사용하여 MongoDB 서버에 연결합니다. 그런 다음 mydb
데이터베이스에 대한 연결을 열고 이에 대한 GridFSBucket
인스턴스를 생성합니다. GridFSBucket
인스턴스의 openUploadStream()
메서드를 사용하여 myFile.txt
파일에 대한 업로드 스트림을 생성합니다. 그런 다음 파일 내용을 읽을 수 있는 스트림(fs.createReadStream('/path/to/myFile.txt')
)에서 업로드 스트림으로 파이프합니다. MongoDB는 자동으로 파일을 청크로 분할하여 fs.chunks
컬렉션에 저장하고 파일의 메타데이터는 fs.files
컬렉션에 저장합니다.
Node.js에서 GridFS를 사용하여 파일을 검색하려면 MongoDB Node.js 드라이버에서 제공하는 GridFSBucket
클래스를 사용할 수 있습니다. 다음은 파일 검색의 예입니다.
const { MongoClient } = require('mongodb');
const { GridFSBucket } = require('mongodb');
const uri = 'mongodb://localhost:27017/mydb';
const client = new MongoClient(uri);
await client.connect();
const db = client.db('mydb');
const bucket = new GridFSBucket(db);
const downloadStream = bucket.openDownloadStreamByName('myFile.txt');
downloadStream.pipe(fs.createWriteStream('/path/to/downloadedFile.txt'));
이 예제에서는 먼저 MongoClient
클래스를 사용하여 MongoDB 서버에 연결합니다. 그런 다음 mydb
데이터베이스에 대한 연결을 열고 이에 대한 GridFSBucket
인스턴스를 생성합니다. GridFSBucket
인스턴스의 openDownloadStreamByName()
메서드를 사용하여 myFile.txt
파일에 대한 다운로드 스트림을 생성합니다. 그런 다음 다운로드 스트림의 내용을 쓰기 가능한 스트림(fs.createWriteStream('/path/to/downloadedFile.txt')
)으로 파이프하여 파일을 디스크에 저장합니다.
Node.js에서 GridFS를 사용하여 파일을 삭제하려면 MongoDB Node.js 드라이버에서 제공하는 GridFSBucket
클래스를 사용할 수 있습니다. 다음은 파일을 삭제하는 예입니다.
const { MongoClient } = require('mongodb');
const { GridFSBucket } = require('mongodb');
const uri = 'mongodb://localhost:27017/mydb';
const client = new MongoClient(uri);
await client.connect();
const db = client.db('mydb');
const bucket = new GridFSBucket(db);
bucket.delete('myFile.txt');
이 예제에서는 먼저 MongoClient
클래스를 사용하여 MongoDB 서버에 연결합니다. 그런 다음 mydb
데이터베이스에 대한 연결을 열고 이에 대한 GridFSBucket
인스턴스를 생성합니다. GridFSBucket
인스턴스의 delete()
메서드를 사용하여 myFile.txt
파일을 삭제합니다. MongoDB는 fs.files
컬렉션에서 메타데이터 문서를 자동으로 삭제하고 fs.chunks
컬렉션에서 청크 문서를 삭제합니다.
MongoDB GridFS는 MongoDB에 대용량 파일을 저장하고 검색할 수 있는 강력한 기능입니다. 파일 처리를 위한 통합 API를 제공하고 여러 프로그래밍 언어 및 플랫폼을 지원합니다. GridFS를 사용하면 MongoDB를 애플리케이션의 파일 시스템으로 사용할 수 있으므로 대용량 데이터 관리가 간소화됩니다. 이 기사에서는 GridFS의 기본 사항, 작동 방식, Node.js를 사용하여 파일을 저장, 검색 및 삭제하는 방법을 다루었습니다. 이 기사가 유용하고 유익한 정보였기를 바랍니다.