2011-04-23 3 views
0

웹 사이트에 등록 된 사용자는 친구에게 초대장을 보낼 수 있습니다. 사용자가 보낼 수있는 초대 수에 일일 한도를 추가하고 싶습니다.사용자 제한 사항 - 데이터베이스 또는 직접 파일? (유연성 대 성능?)

처음에는 PHP 파일에 제한 (40)을 추가했지만 관리자에게이 제한을 변경할 가능성을 부여하는 것이 좋을 것이라고 생각하여 데이터베이스에이 제한을 추가했습니다 . 그러나 이제는 사용자가 초대장을 보내려고 할 때마다 데이터베이스가 사용됩니다. 이것이 성능에 영향을 미칩니 까?

이 기능을 어떻게 구성 하시겠습니까?

+1

이것은 다소 제한이없는 질문입니다. 얼마나 많은 사용자가 있는지, 보내는 초대 수 및 데이터베이스/응용 프로그램에서 구현 한 방법에 따라 다릅니다. 더 많은 정보를 추가 할 수 있다면 좀 더 유용한 답변을 얻을 수있을 것입니다. –

+1

저는 @jamec_c와 조금 다르지만, 다른 한편으로는 :이 제한의 검색이 모든 것을 느리게하는 것이 어떤 상황인지 알 수 있습니까? 이 문제에 대해 충분한 히트가 있다면, 모든 문제에 대해 다른 걱정과 해결책이있을 것이며, 이는 논쟁 거리가 될 것입니다. – Nanne

+0

@James 우리는 적어도 10.000 명의 사용자를 보유하고 싶습니다. 사용자가 웹 사이트에 다른 사용자를 추가하면 모든 사용자가 보너스를 받게되므로 최대한 많은 초대장을 보낼 것입니다 (이것이 왜 우리가 한도를 추가하는 이유입니다). 모든 초대장에는 데이터베이스에 저장된 고유 한 키가 있습니다. – morandi3

답변

2

TL : DR : 데이터베이스에 저장하면됩니다. :)

전체 스토리 : 성능이 저하되지 않아야합니다. 모든 것 (사용자 자체,받는 사람의 사용자 이름, 페이지의 많은 내용)이 데이터베이스에서 나옵니다. 너는 신경 쓰지 말아야한다.

정말 큰 사용자 기반이 있고 문제가되는 경우 성능 업데이트를 수행 할 다른 곳이있을 것입니다 (모든 종류의 항목에 대해 memcached 사용). 그러나 "캐시"하고 싶다면 로그인하고 세션에 넣으면 한 번 검색 할 수 있습니다. 이 값을 사용하여 빼거나 체크 한 다음 데이터베이스에 대해 한 번만 체크 (백그라운드에서)하여이 사용자에 대해 이상한 일이 일어나지 않는지 확인하십시오. 그러나 이것은 비동기식 일 수 있으며 사용자 경험에 큰 영향을 미치지 않습니다.

드문 경우이지만 세션에 문제가 없다고 표시되어 있지만 데이터베이스에 오류라고 표시되는 경우가 있습니다. 다른 방법으로는 사용자가 다시 로그인해야 할 수도 있습니다. 그러나 올바르게 구현하면 희귀하거나 심지어 불가능할 것입니다.

1

하드웨어에 따라 약간 달라 지지만 400,000 행 테이블 (10,000 * 40)은 MySQL 표준에서 그다지 크지 않습니다. 너 괜찮을거야.

고유 한 초대 코드를 저장하는 열에 색인이 있음을 의미있게 설명했는지 확인했는지 확인하십시오.

관련 문제