사람들이 축구 경기 결과에 내기를 할 수있게하는 응용 프로그램이 있습니다. 각 싱글 베팅 (= 엔티티)의 점수는 베팅의 베팅 점수와 게임 (= 엔티티)의 실제 결과를 비교하여 계산됩니다. 베팅은 Betrounds 내에서 베팅됩니다. Betrounds는 그룹이 게임 그룹 (게임 그룹, 예 : 단일 성냥갑)에 내기를 걸고있는 조직입니다. 단일 사용자 그룹은 여러 가지 장점을 가질 수 있습니다. 사용자 그룹 1 : N BetRounds 1 : N 베팅 N : 나는 그 결과 지점과 위치에 모든 사용자를 보여 resulttable을 만드는 각 betround 내 한 게임복잡한 계산 된 임시 데이터를 캐시하는 방법
는 관계형 모델을 요약합니다. 한 사용자의 위치를 계산하려면 betround 내의 모든 사용자의 포인트를 계산해야합니다. 단일 betrounds에서 이러한 지점은 그룹으로 집계되며 그룹 내에 다시 resulttable입니다.
예
- 사용자 그룹과 : 20 사용자
- 한 시즌이 34 차전
- 한 매치 데이가 9 개 게임이에 대한 점수를 계산하기 위해
usergroup 나는 20 * 34 * 9 = 6120 베팅에서 포인트를 계산해야합니다.
계산할 것이 많기 때문에 결과 테이블을 표시 할 때마다이를 수행하고 싶지 않습니다. 아마 데이터베이스
- 캐시 (예를 들어 내기 엔티티에)
- 저장 중간 결과 : 나는 현재 약간의 계산 시간을 절약하기 위해 두 가지 옵션을 참조하십시오.
- 캐시
캐싱 내가하는 수준과 방법을 무효화하는 방법에 확실하지 않다 올바른 방법 인 경우. 무엇을 캐시에 대한 몇 가지 옵션이 있습니다 : - betround의 전체 결과 테이블 (포인트 & 위치) - - 사용자 그룹 내에서 단일 사용자의 pointresult -의 전체 resulttable betround 내에서 단일 사용자의 pointresults - 단일 내기 의 pointresult 사용자 그룹
내가 그 데이터를 캐시하는 방법을 확실하지 오전 : - 바로 정수 위치 값과 포인트 - 전체 엔티티 (예를 들어 내기를) - 일시 영속 엔티티 (예를 들어이 (가) resulttables를 나타내는)를 - html로 테이블의 출력
그런 다음 형식에 따라 캐시하는 방법 : - 역방향 프록시를 통해 HTML보기를 캐시 할 수 있습니다 - 아마 redis/memcache 등을 통해 값/엔티티를 캐시 할 수 있습니다.
나중에 우리는 데이터가 restapi를 통해서만 제공되는 단일 페이지 응용 프로그램으로 변경할 수 있습니다. 그러면 html 출력 캐싱이 옵션이 아닙니다.
캐싱 전략에 따라 캐시를 무효화하고 선택적으로 따뜻하게하는 방법이 있으므로 응용 프로그램 내에서 결과가 계산되지 않고 캐시가 무효화되고 즉시 새 결과로 대체 될 때만 다시 계산되는 문제가 발생합니다.
나는 종종 캐시 무효화가 악하다고 읽었습니다. 내 인터페이스가 게임의 결과를 업데이트 할 때만 모든 포인트/결과/테이블 등이 변경되기 때문에 이것이 나의 유스 케이스에 적용되는지 확실하지 않습니다. 이것은 포인트가 변경되는 유일한 시간입니다. 데이터베이스
에서 (예를 들어 내기 엔티티에)
2.Save 중간 결과 나는이 시나리오는 모든 레벨에 적용 할 경우 확실하지 않다. 먼저 내기 점수를 실제 점수와 비교하는 대신 실제 결과를 내기에 저장하는 방법에 대해 생각했습니다. 그러면 내 데이터 모델이 약간 중복되고 잘못된 결과가 내 인터페이스에서 가져오고 나중에 올바른 결과가 나타나고 내 포인트가 다시 계산되지 않으면 복잡성이 증가합니다.
다른 모든 수준에서 나는 테이블 결과를 지속적으로 저장하기 위해 새로운 임시 엔티티를 생성해야합니다. 모두
의
3.Mix 나는 모두가 좋아하고 전혀 의미가 있다면 어떻게 보일지 혼합 잘 모르겠지만, 나는 그것이 옵션이 될 수있다 생각했다.
조언, 입력 또는 경험을 높이 평가할 것입니다.
안녕하세요. 내게는 데이터베이스에 베팅 포인트 결과를 저장하고 기본 게임이 변경되면 해당 값을 업데이트한다는 의미입니다. 모든 테이블을 저장하지 말고 출력 만 캐시해야합니다 (부분 뷰 만, 원시 데이터는 다시 렌더링되지 않음). 즉, https://github.com/asm89/twig-cache-extension 또는 가장자리면이 포함 된 광택 처리를 사용할 수 있습니다. 불행히도 내 클라우드 제공 업체는 아직 바니시를 제공하지 않습니다. 따라서 나뭇 가지에 캐시 블로그를 추가 할 것입니다. – m0c