NoSQL 데이터베이스에 2천만 개의 레코드를 삽입하는 방법
게시 됨: 2022-11-24NoSQL 데이터베이스에 2천만 개의 레코드를 삽입하는 다양한 방법이 있습니다. 한 가지 방법은 데이터베이스의 대량 로드 기능을 사용하는 것입니다. 이를 위해서는 데이터가 데이터베이스가 이해할 수 있고 데이터를 로드하는 가장 효율적인 방법 인 특정 형식이어야 합니다. 또 다른 방법은 스크립트나 응용 프로그램을 사용하여 한 번에 한 레코드씩 데이터를 삽입하는 것입니다. 이것은 더 느린 프로세스이지만 데이터가 특정 형식일 필요는 없습니다.
Mongodb는 수백만 개의 레코드를 처리할 수 있습니까?
수백만 개의 레코드를 실시간으로 처리하려면 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 문서의 최대 크기는 얼마입니까?
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의 데이터만 포함할 수 있습니다.