0

각 쿼리가 수백만 행을 반환 할 수있는 MYSQL 데이터베이스에 SELECT 문을 발행하는 계단식 응용 프로그램을 작성하는 것이 좋습니다. http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-scaleout.html#figure_replication-scaleout로드 균형 조정 MySQL 용 JDBCTap 계단식

JDBCTap에서, 나는 우리가 하나의 호스트 이름을 전달할 수 있음을 참조하십시오 : 이것은 내 모든 매퍼 시도하고 하나의 슬레이브에 연결하는 것을 의미 다음과 같이

각 데이터베이스는, N 노예와 하나 개의 마스터에 존재 (다른 (N-1) 슬레이브는 유휴 상태 임).

슬레이브 앞에로드 밸런서가 없다고 가정하면 N 슬레이브에 걸쳐 매퍼의 연결을 분산시킬 수있는 JAVA 패키지/모듈/프록시 (또는 더 나은 사용자 정의 JDBCTap 구현)가 있습니다. ?

여기에 자세히 설명되어이 작업을 수행 할 것으로 보인다 하드웨어 프록시 사용하는 샘플 스크립트 : http://blog.netoearth.com/html/201006/building-a-mysql-load-balancing-proxy-with-trafficscript.htm

그런 일이 존재하지 않는 경우에, 나는 내 자신의 JDBCTap을 만들어야 할 것이다 (즉, 매퍼에서 연결을 확산을 다음과 같은 알고리즘을 사용하여) N 노예를 가로 질러 :

  1. 는 (외부 데이터베이스에 동시 쓰기/업데이트도)
  2. 각에 연결 한 매퍼의 카운터를 가지고 지원하는 것도 N 개의 슬레이브의 목록을 유지 슬레이브
  3. 맵퍼가 슬레이브에 연결될 때마다이 데이터베이스를 쿼리하여로드가 가장 적은 슬레이브를 찾습니다 (연결된 매퍼 수가 최소 임). 충돌시 무작위로 타이 브레이크.

소리가 좋은가요? 위에서 언급 한 "동시 쓰기/업데이트를 잘 지원하는"외부 데이터베이스는 무엇이 될 수 있습니까? (Cassandra, VoltDB 등)

답변

0

JDBC는 일반적으로 병렬 처리를 지원하지 않으므로 대규모로드에 병목 현상이 발생합니다.

이러한 종류의 기본/대기 아키텍처에서 MySQL 백업을 통해 대기업에서 TSV로 데이터를 가져온 다음이를 HDFS에 병렬로로드하는 방법은 무엇입니까?

관련 문제