NoSQL 데이터베이스에 2천만 개의 레코드를 삽입하는 방법

게시 됨: 2022-11-24

NoSQL 데이터베이스에 2천만 개의 레코드를 삽입하는 다양한 방법이 있습니다. 한 가지 방법은 데이터베이스의 대량 로드 기능을 사용하는 것입니다. 이를 위해서는 데이터가 데이터베이스가 이해할 수 있고 데이터를 로드하는 가장 효율적인 방법 인 특정 형식이어야 합니다. 또 다른 방법은 스크립트나 응용 프로그램을 사용하여 한 번에 한 레코드씩 데이터를 삽입하는 것입니다. 이것은 더 느린 프로세스이지만 데이터가 특정 형식일 필요는 없습니다.

Mongodb는 수백만 개의 레코드를 처리할 수 있습니까?

크레딧: freecodecamp.org

수백만 개의 레코드를 실시간으로 처리하려면 MongoDB와 ElasticSearch를 사용해야 합니다. 대규모 데이터 세트 에서 이러한 구조와 개념을 사용하는 것도 유리합니다.

대규모 MongoDB 삽입을 최적화하여 5천만 개의 레코드를 33% 더 빠르게 로드할 수 있습니다! Github 설정 페이지에서 이러한 모든 프로그램의 코드를 찾을 수 있습니다. 업링크 속도 25~35Mbps, 연결 속도 25~35Mbps로 Macbook Pro를 테스트했습니다. 이 실험에서 결과는 프로덕션 준비가 된 EC2에서 얻은 결과와 다를 수 있습니다. Kaggle 데이터 테스트 플랫폼은 데이터 세트가 준비되어 있기 때문에 데이터 테스트 를 위한 탁월한 선택입니다. yelp_academic_dataset_review.json, 5GB 파일에는 690만 개의 레코드가 포함되어 있습니다. 노드가 파일을 읽은 후 Mongo가 100만 개의 레코드를 작성하는 데 2.5시간이 걸렸습니다.

이 도구는 2백만 개 이하의 데이터 포인트를 생성하는 데 권장됩니다. Node.js 버퍼 엔티티 는 2GB 이상의 파일을 포함할 수 없습니다. 여기서 Streams를 사용해야 한다는 것은 완전히 이치에 맞습니다. 이 예에서는 약간의 지연을 두고 순차적으로 100k를 삽입할 수 있습니다. 인서트를 삽입하는 데 29분이 걸렸습니다. EventEmitter는 모든 스트림에서 사용되기 때문에 이런 경우입니다. 이 CPU 사용량은 시퀀스된 100k 삽입보다 10% 더 많은 40%로 증가했습니다.

IOPS는 50에서 100으로 거의 두 배가 되었고 연결은 40에서 60으로 증가했습니다. 각 폴더를 반복하고 파일을 읽고 리뷰 어레이 길이 카운터를 저장해야 합니다. 이 접근 방식이 나중에 잘 작동하면 이후 삽입에 적용할 수 있습니다. 시간을 내어 어떻게 작동하는지 확인하세요. 이 섹션에서는 51936개의 폴더를 읽고 6300만 개의 레코드를 삽입하는 데 걸리는 시간을 살펴보았습니다. 나중에 데이터 삽입 을 병렬화할 수 있기 때문에 다음 백만 개의 레코드에 도달하려면 읽은 폴더 수를 알아야 합니다. 시스템은 6,300만 개의 레코드를 삽입하는 데 약 1시간 30분이 걸립니다. 우리는 이전에 그것보다 33% 더 빠를 것이라고 예측했습니다!

1시간 30분 만에 거의 45GB의 데이터를 로드했습니다. IOPS는 전체 기간 동안 125였으며 연결은 대부분의 시간 동안 약 100에 머물렀습니다. 이제 결과가 나왔으니 앞으로의 계획을 시작할 수 있을 것 같습니다. InsertMany를 사용하면 1분 이내에 1백만 개의 레코드를 삽입할 수 있습니다. 1미터에서 10미터 사이에 로드하는 경우 삽입을 병렬화하려면 Stream API가 필요할 가능성이 큽니다. 클러스터 CPU 및 IOPS가 너무 무겁기 때문에 앱 성능이 크게 저하될 수 있습니다. 일정 스크립트를 실행하여 동시에 실행할 수 있는 작업/프로세스 수를 결정합니다.

MongoDB는 대용량 파일에 탁월한 선택일 뿐만 아니라 다른 파일 스토리지 시스템에 비해 여러 가지 장점이 있습니다. 우선 대용량 파일을 데이터베이스에 쉽게 저장할 수 있습니다. 또한 데이터베이스에는 많은 수의 개체를 처리할 수 있는 용량이 있습니다. 마지막으로, 데이터베이스는 수평적으로 확장 가능하므로 과부하 없이 더 많은 양의 데이터를 처리할 수 있습니다. 대용량 파일 을 데이터베이스에 저장하려면 MongoDB가 탁월한 선택입니다. 다른 스토리지 및 확장성 옵션에 비해 이를 사용하면 많은 이점이 있습니다.

Mongodb 문서의 최대 크기는 얼마입니까?

신용: brain-mentors.com

MongoDB 문서의 최대 크기는 16MB입니다.

Mongodb에 수백만 개의 레코드를 삽입하는 방법

MongoDB 서버가 실행 중이고 데이터베이스와 컬렉션이 생성되어 있다고 가정하면 insert() 메서드를 사용하여 레코드를 삽입할 수 있습니다. 이 메서드는 문서 배열 또는 단일 문서를 사용할 수 있습니다.
단일 문서를 삽입하려면 다음 구문을 사용하십시오.
db.collection.insert(
{
이름: "존 도"
}
)
여러 문서를 삽입하려면 다음 구문을 사용하십시오.
db.collection.insert([
{
이름: "존 도"
},
{
이름: "제인 도"
}
])

몇 가지 옵션이 있습니다. 각 장치 ID에 대해 별도의 컬렉션을 만든 다음 해당 ID를 별도로 쿼리할 수 있습니다. 장치가 많으면 비용이 많이 들 수 있습니다. 컬렉션의 모든 문서를 검색하려는 경우 모든 장치에 대해 동일한 컬렉션을 사용하여 동일한 작업을 수행할 수 있습니다. 장치 수가 많은 경우 이 서비스 비용이 엄청나게 비쌀 수 있습니다. 세 번째 옵션은 분할된 컬렉션을 만드는 것입니다. 부하가 Mongo 전체에 분산되어 쿼리 처리 속도가 빨라 집니다. sharded collection 옵션을 사용하여 컬렉션을 생성하려면 shards 옵션을 true로 설정해야 합니다.

Mongodb: Nosql 데이터베이스 관리 시스템

MongoDB는 문서를 처리하기 위해 구축된 NoSQL 데이터베이스 관리 시스템입니다. 문서당 100,000개 인덱스 키의 기본 제한으로 광범위한 데이터 파일을 처리할 수 있습니다. 따라서 MongoDB 플랫폼은 과부하 없이 많은 양 의 데이터를 저장할 수 있습니다. 대량 삽입은 MongoDB의 편리한 기능입니다. 한 번에 여러 문서를 삽입할 수 있기 때문에 추가할 데이터가 많은 경우에 유용할 수 있습니다.

Mongodb 대량 삽입 제한

MongoDB 3.6 버전은 현재 100,000을 생성합니다.

대량 삽입 방법을 사용하면 여러 문서를 MongoDB에 한 번에 삽입할 수 있습니다. 매개변수로 insert 메소드는 문서 배열을 생성합니다. 사용자는 쿼리에 모든 필드를 포함할 필요가 없습니다. 이 예제에서는 명령줄을 사용하여 MongoDB 대량 삽입을 사용하여 여러 문서를 삽입해 보겠습니다. 대량으로 숫자를 삽입하는 것은 Bulk.insert() 메서드를 사용하여 수행됩니다. 버전 2.6 이후에 도입된 이 방법은 정렬되지 않은 대량 삽입과 유사합니다. 먼저 carbulk1 이름으로 정렬된 자동차 목록을 만든 다음 문서에서 execute 메서드를 실행하여 문서를 삽입합니다. 이 Java 프로그램은 처음으로 쉘 명령을 사용하여 다양한 대량 작업 을 실행하는 방법을 보여줍니다.

Mongodb에는 제한이 있습니까?

MongoDB는 100레벨의 중첩 깊이를 지원하므로 문서 크기가 16MB까지 커질 수 있습니다. MongoDB 데이터베이스는 최대 20GB의 데이터만 포함할 수 있습니다.