2013-10-10 3 views
1

각 사용자가 작업을 저장하는 웹 응용 프로그램을 프로그래밍하고 있습니다. (해야 할 일과 같이). 작업은 테이블에 저장됩니다 (예 : userstasks).각 사용자에 대한 표 만들기?

어느 것이 더 낫습니까?

1- userstasks 테이블에는 누가 만든 생성 된 작업을 정의하는 user_id라는 열이 있습니까?

2 모든 작업을 저장 한 등록 된 사용자마다 새 테이블 (예 : 사용자 이름 :)이 생성됩니까?

피씨 : 많은 사용자가 있습니다!

답변

1

당신 항상 시작. # 2에서 말하는 것은 "조기 최적화"라고합니다. # 1이 심각한 성능 문제를 겪고있을 때만 그 길로 갈 수 있습니다.

다른 사용자간에 데이터를 분할하면 모든 사용자를 대상으로 쿼리 할 수있는 능력이 크게 저하됩니다. 모든 의도에 대해 사용자는 다른 세상에서 살게됩니다. 보고가 거의 불가능합니다.

많은 읽기가있는 대부분의 응용 프로그램의 경우 수백만 개의 레코드가 문제가되지 않습니다. 이처럼 특별한 관심이 필요한 쓰기가 많은 응용 프로그램이나 Reddit 또는 Twitter와 같이 방대한 규모의 응용 프로그램입니다. 당신이 그 중 하나를 만들고 있지 않기 때문에, 먼저 제대로 표준화 된 구조를 고수하십시오.

"많은 사용자"는 아마도 수십만 또는 수십만을 의미합니다. 제대로 조정 된 MySQL 인스턴스에서 큰 문제는 아닙니다. 더 많은 규모가 필요한 경우 읽기 전용 보조 서버를 스핀 업하여로드를 분산 시키거나 MySQL 클러스터를 사용합니다.

1

작업이 둘 이상의 사용자를 가질 수 없다고 가정하고 짧은 시간에 옵션 1 (user_id 외래 키가있는 작업이라는 테이블)을 사용하겠습니까? 그렇다면 JOIN 테이블이 필요합니다. 실제 외래 키 설정을 확인하십시오. 이는 데이터 자체의 참조 무결성을 향상시킵니다. 이 는 성능 문제 입증 될 때까지 함께 작동 스틱 간단한 것으로,

+0

Re. 수백만 명이 아니라면 '많은 사용자'가 될 수 있습니다. 사용 가능한 많은 프로덕션 데이터베이스 중 하나라도 중요하지 않습니다. 테이블에 대한 색인을 올바르게 작성하는 방법을 읽어야한다고 말했습니다. – brez

관련 문제