2013-08-28 2 views
1

mongodb 소스에서 ketle을 통해 mysql 테이블을로드 중입니다. Mongodb 테이블에는 4 백만 개가 넘는 레코드가 있으며 주전자 작업을 실행하면 처음로드를 완료하는 데 17 시간이 걸립니다. 증분로드의 경우에도 1 시간 이상 걸립니다. 커밋 크기를 늘리고 더 많은 메모리를 할당하려고 시도했지만 여전히 성능이 향상되지 않습니다. 나는 JSON 입력 단계가 데이터를 구문 분석하는 데 매우 오랜 시간이 걸리므로 매우 느린 것으로 생각합니다. 는 내 변화의 단계가JSON 입력 성능 문제

  1. MongoDB를 입력 단계 필드 값이 널이면
  2. 잘라
  3. 문자열
  4. JSON 입력
  5. CONCAT 필드
  6. 선택
  7. 테이블 출력 값 .

postgre에서 추출한 것과 같은 400 만 기록이 mongodb보다 빠릅니다. 성능을 향상시킬 수있는 방법이 있습니까? 도와주세요.

감사 단계의 Deepthi

+1

주전자에서 성능 모니터링을 구성하고 어떤 단계가 가장 오래 걸리는지 정확히 알 수 있습니다. 또한 실행되는 단계 메트릭을 보면서 좋은 아이디어를 얻을 수 있어야합니다. 나는 네가 맞다고 의심해. 불행히도 나는 몽고에 대해 전혀 모른다. 주전자 대신에 추출물을 몽고로 밀어 넣을 수있는 모든 것을 할 것입니다. –

+0

안녕하세요 Brian, 감사합니다. 메트릭을 관찰하여 모든 트랜잭션의 문자열로 모든 행을 구문 분석 할 때 JSON 입력이 매우 오랜 시간이 걸린다는 것을 알았습니다. 프로덕션 환경에서 실행되는 변환을 변경할 수 없기 때문에 JSON 단계의 성능을 향상시킬 수있는 사람이 있으면 미래에 우리는 모든 것을 mongo로 옮기고 이것이 중요 할 수 있기 때문에 큰 변화가 될 것입니다. – Deepthi

+0

'JSON 입력'단계에 직접 할 수있는 일이 있는지 의심 스럽습니다. 아마 여러분의 질의 표현식을 바꾸어'Mongodb Input Step'에서 선택하고있는 행의 수를 줄여야 할 것이라고 생각합니다. 또는 컬렉션에 인덱스가 누락되었을 수 있습니다. 프로덕션 환경에 있기 때문에 변형을 변경할 수 없다는 것이 무슨 뜻인지 확실하지 않습니다. JSON 입력 단계를 포함하여 아무 것도 변경할 수 없다는 뜻입니까? –

답변

0

실행 여러 사본. 당신이 mongo를 입력 한 다음 json 결과를 파싱하는 json 입력 단계가있는 것 같습니다. 그래서 json 입력 단계의 4 또는 8 개의 복사본을 사용하십시오 (또는 CPU에 따라 다름). 그러면 속도가 빨라질 것입니다.

또는 정말로 전체 json을 구문 분석해야 할 수도 있습니다. 어쩌면 정규식 등으로 데이터를 추출 할 수 있습니다.

+0

안녕하세요 고맙습니다.하지만 여전히 파싱이 매우 느립니다. – Deepthi

+0

JSON 구문 분석을 위해 자바 스크립트 기능을 사용하면 여러 곳에서 많이 들었습니다. Jquery 함수 등 당신이 그것을 시도 했습니까? – Codek