2012-10-23 6 views
1

저는 한동안 웹 사이트를 개발해 왔으며 지금까지는 모든 것이 빠르고 능동적이었습니다. 얼마나 많은 사람들이 첫 번째, 주, 한 달 또는 한 해 동안 내 웹 사이트를 사용할 지 모르겠습니다.데이터베이스를 확장 가능하게 만들기

나는 스케일링의 의미와이를 달성하는 방법과 캐싱의 중요 부분을 조사해 왔습니다. 그래서 내 콘텐츠를 캐시하는 방법을 찾기 시작했습니다. 현재 저는 XAMPP에서 방금 웹 사이트를 개발했습니다. 나는 데이터베이스를 편집하기 위해 MySQL과 데이터베이스를위한 간단한 PHP를 사용하고있다. 또한 OS X Mountain Lion에 내장 된 시스템 메시지 앱으로 간단히 로깅하는 것도 있습니다. 그래서 캐싱에 Memcache을 사용하려고 생각하고 있습니다.

좋은 접근 방법입니까?

어떻게 차이를 실제로 볼 수 있습니까?

더 많은 사용자에게도 효과가 있다는 것을 어떻게 알 수 있습니까?

거기에 좋은 벤치마킹 응용 프로그램이 있습니까?

+1

문제가 있습니까? 또한 * one * 질문에 집중하십시오. 다소 흥미로운 점은 "데이터베이스/모델/캐시의 확장 성을 테스트하려면 어떻게해야합니까?"입니다. –

+0

@pst 지금은 아닙니다. 하지만 내가 말했듯이 현재는 단 한 명의 사용자 만 있습니다. 수천 명의 사용자에게이 기능이 잘 작동하는지 어떻게 알 수 있습니까? 예 "데이터베이스/모델/캐시의 확장 성을 테스트하려면 어떻게해야합니까?" 대부분 내 질문입니다. –

+0

수천 명의 사용자가있을 때 수천 명의 사용자가 있습니다. 하지만 지금은 그렇지 않습니다. 그것도 많지 않습니다. 수백만, 알았어, 그거 좋은데. * 깨끗한 정규화 된 스키마 *로 시작하십시오. 성능 문제가있는 경우 시간/돈/이유가있을 것입니다 [나중에]. 캐싱과 같은 것들은 일반적으로 나중에 추가되거나 별도의 서비스 모델의 일부로 추가 될 수 있습니다. 수평 확장 성이 필요하지 않은 경우, 상용 하드웨어의 수직 확장 성은 훌륭한 스키마로 길어질 수 있습니다. (대량 수평 확장이 필요하다면 Twitter와 같은 "예제"를보십시오.) –

답변

2

얻기 및 사용 jMeter.

jMeter를 사용하면 현재 응답이 돌아오고 페이지가로드되는 방법을 테스트 할 수있을뿐만 아니라 현재 오류가 없다는 것을 확인할 수 있습니다. 이렇게하면 많은로드를 시뮬레이션 할 수 있습니다. Memcache 사용과 같은 조정을 수행 할 때 실제 성능 업데이트를 볼 수 있습니다.

+0

정확히 내가 필요한 것! 그것으로 볼 것입니다, 감사합니다! –

3

데이터베이스가 잘 확장되도록하는 방법은 많이 있지만 가장 중요한 부분은 테이블에 적절한 인덱스를 정의하는 것입니다. 적어도 외래 키 필드 정의 된 인덱스가 있어야합니다. 주제에 실제 게시물과 함께

topic_id | name 
---------+-------------------------------- 
     1 | "My first topic!" 
     2 | "Important topic" 
     3 | "I really like to make topics!" 
    ... | ... 
7234723 | "We have a lot of topics!" 

그리고 다른 테이블 : 당신은 큰 포럼이있는 경우

는 예를 들어, 다음과 같습니다 주제의 테이블이있을 수 있습니다

post_id | user  | topic_id 
---------+------------+--------- 
     1 | "Spammer" | 1 
     2 | "Erfa"  | 2 
     3 | "Erfa"  | 1 
     4 | "Spammer" | 1 
    ... | ...  | ... 
87342352 | "Erfa"  | 457454 

응용 프로그램에서 항목을로드 할 때 항목 ID와 일치하는 모든 게시물을로드하려고합니다. 이 경우 단순히 많은 데이터베이스 행이 있으므로 모든 데이터베이스 행을 살펴볼 여유가 없습니다! 다행스럽게도이 작업이 완료되었는지 확인하기 위해 많은 작업을 수행 할 필요는 없으며 topic_id 필드에 대한 색인을 작성하기 만하면됩니다.

데이터베이스 규모를 늘리기 위해해야 ​​할 일은 아주 기본적인 일이지만, 매우 중요하므로 누군가가 언급해야한다고 생각했습니다!

관련 문제