2010-12-11 4 views
0

큰 프로젝트로 인해 리소스와 대역폭이 많이 소모됩니다. 그것은 다른 웹 페이지의 거대한 MySQL 데이터베이스 (아마 약 2,000 만, 나는 MySQL이 그런 양의 레코드를 처리 할 수 ​​있기를 바랍니다)와 함께 작동해야합니다. 그러나 하나의 단일 서버가 이러한로드를 처리 할 수 ​​없기 때문에 여러 대의 서버 사이에서 요청을 데이터베이스에 공유해야합니다. Google이나 Archive.org와 같은 큰 프로젝트가이 일을하고 있는지 궁금합니다. 나는 다음과 같은 원시 메소드를 생각했다 :하나의 MySQL 데이터베이스로 작업하는 여러 서버

  1. MySQL 데이터베이스는 독립적 인 독립형 서버에있다.
  2. MySQL 데이터베이스 테이블에는 처리를 위해 레코드가 할당되는 특정 서버 이름을 가진 "server"필드가 있습니다.
  3. 각 서버는 MySQL 서버를 연결하고 해당 서버에 할당 된 레코드로만 작동합니다 (해당 테이블의 "서버"필드를 조사하여).

나는 이것이 멍청한 방법이라고 느낀다. 그러나 나는 당신의 의견을 알고 싶다. 그리고 이것이 어떻게 더 최적화되고 영리한 형태로 구현 될 수 있는지를 알고 싶다.

팁이 있으면 만족할 것입니다.

감사합니다. Dennis.

답변

1

는 데이터베이스에 대해 아무것도 옆에

20M 기록 (아마 약 20 만 나는 MySQL을 레코드의 같은 양을 처리 할 수 ​​있기를 바랍니다). 그것은 당신이 데이터베이스를 사용하는 방법, SQL, 데이터 모델을 쓰는 방법 등입니다. 20M 레코드에 대해서는 걱정하지 마십시오. 전혀 문제가되지 않을 것입니다.

+0

음, 기본적으로 20M 레코드 처리는 db 최적화, 디스크 공간 및 프로세서에 관한 것입니다. 가장 큰 문제는 페이지가 거의 영구적 인 재 인덱싱을 받아야하기 때문에 데이터베이스에 대한 여러 서버 액세스를 관리하는 방법이며 많은 리소스를 확보해야하므로이 작업을 처리 할 여러 서버가 필요합니다. 그리고 문제는 그러한 작업을 현명하게 조직하는 방법입니다. 위에서 개발 한 체계는 다소 전문가답지 않은 듯합니다. 그렇지 않니? 어떻게하면 더 전문적인 방법으로 정리할 수 있습니까? 또는 괜찮습니다 – Dennis

+0

3NF에서 적절한 표준화 작업 수행 : http://en.wikipedia.org/wiki/Database_normalization 단일 데이터베이스 서버가 초당 많은 요청을 처리 할 수 ​​있으므로 연결 풀도 도움이 될 수 있습니다. 스케일 아웃해야하는 경우 데이터베이스 복제를 사용할 수 있습니다. 그러나 많은 동시 사용자가 대량의 데이터를 처리 할 수 ​​있도록 데이터베이스가 만들어 졌음을 잊지 마십시오. MySQL은 최고의 성능을 가진 짐승이 아니지만, 많은 상황에서 정상적으로 작동합니다. –

관련 문제