2013-07-16 4 views
1

공유 호스트에 많은 방문자가있을 것으로 예상되는 웹 사이트가 있습니다. 나는 독서를 위해 데이터베이스를 필요로하지 않는다. (페이지에 표시된 모든 것은 PHP로 하드 코딩되어있다.) 그러나 사용자가 입력하는 데이터를 저장하고 싶다. 사실, 필자는 이후에 통계 분석을하기 위해 저장합니다 (내 로컬 컴퓨터에서 다운로드 한 후).INSERT를위한 최상의 MySQL 테이블 구조?

그래서 내 두 가지 질문 :

  1. 는 MySQL은 이에 대한 실행 가능한 옵션인가? PHP/MySQL을 사용할 수있는 공유 호스팅에서 실행하기위한 것이므로 많은 다른 멋진 패키지를 사용할 수는 없지만 예를 들어 파일을 쓰는 것이이 목적에 더 좋을 것입니다. 필자가 아는 한, 파일에 줄을 추가하는 것은 거대한 파일에 대해 상대적으로 복잡한 작업입니다. 반면에 MySQL 데이터베이스에 동시에 연결되는 100 명 이상의 사용자는 아마도 값이 싼 INSERT 쿼리를 수행하는 경우일지도 모르는 큰로드입니다.

  2. MySQL이 좋은 옵션 인 경우 어떻게 테이블을 최적으로 구성해야합니까? 현재 나는 InnoDB 테이블 하나를 가지고 있는데, 자동으로 증가하는 기본 키 id (물론 데이터를 저장하는 컬럼 옆에 있음)이있다. 이것은 일반적인 목적의 구성입니다. 그래서 아마도 테이블에 쓰고 읽을 필요가있을뿐 아니라 더 최적화 된 방법이있을 수도 있습니다.

편집 : 나는 주로 출시됩니다으로 웹 사이트가 곧 바이러스 성 갈 것을 두려워, 그래서 사용자가 매우 짧은 시간 내에 방문 할 것으로 예상. 물론 과부하 된 데이터베이스로 인해 입력 한 데이터를 잃어 버리는 것을 원하지는 않습니다.

+1

쓰기 전용 데이터의 ** 최상의 ** 데이터 구조는 아무 것도 아닙니다. 차선책은 플랫 파일이 될 것입니다. 즉, 처리를 유지하는 글에 대해 정말로 걱정하는 경우입니다. 나는 대부분의 시간 동안 그것이 중요하지 않을 것이라고 상상한다. – PaulProgrammer

+0

@PaulProgrammer - MySQL BLACKHOLE 스토리지 엔진을위한 것이 아닌가? :) –

+1

실제로 쓰는 것이 아니라 통계 분석을 위해 읽어야합니다. – Barmar

답변

3

MySQL은 이것에 대한 완벽한 선택입니다. 아마도 플랫 파일보다 훨씬 좋을 것입니다. 나중에이 데이터를 집계하고 분석하기를 원하기 때문입니다. 플랫 파일을 사용하면 파일 크기가 큰 경우 특히 시간이 오래 걸릴 수 있습니다. 또한 RDBMS는 집계 및 데이터 집합 조작을위한 것입니다. 보고서 데이터 작성에 이상적입니다.

테이블에 원하는 데이터 열을 넣고 기존 행 키 외에 사용자를 추적 할 수있는 식별자를 지정하십시오. IP 주소는 사용자 추적에 대한 논리적 인 선택이거나 마법의 쿠키 값이 잠재적으로 작용할 수 있습니다. 단 하나의 테이블 일 뿐이며, 너무 열심히 생각할 필요가 없습니다. 보고서에서 자주 필터링 할 열에 비 클러스터형 색인을 추가 할 수 있습니다 (예 : IP 주소, 액세스 날짜 등

나는 주로 웹 사이트가 출시되는 즉시 바이러스에 감염 될 것을 두려워하여 사용자가 매우 짧은 시간 내에 방문 할 것으로 기대합니다. 물론 과부하 된 데이터베이스로 인해 입력 한 데이터를 잃어 버리는 것을 원하지는 않습니다.

MySQL과 같은 RDBMS는 적절한 하드웨어 백킹을 전제로 과부하를 처리하도록 명시 적으로 설계되었습니다. 그것을 땀을 내지 마라.

+0

보고서는 로컬 컴퓨터에서 작성되었으므로 문제는되지 않지만 확인해 드리겠습니다. 감사! :) – user1111929