데이터베이스에서 업데이트 / 선택 쿼리를 매우 많이 실행하는 응용 프로그램을 작성 중입니다.
기본 테이블 (A)가 있는데 하루에 약 500 개의 레코드가 있습니다. 그리고 시스템의 모든 사용자에 대해이 엔티티의 변형은 사용자의 일부 환경 설정을 기반으로 작성되며 다른 테이블 (B)에 저장됩니다. 이것은 매일 자정에 실행되는 크론 작업에 의해 수행됩니다.
따라서 테이블 A에 10,000 명의 사용자와 500 개의 레코드가있는 경우 해당 날짜에 대해 테이블 B에 5M 레코드가 있습니다. 나는 항상이 테이블에 하루 동안 데이터를 보관하고 자정에 히스토리 데이터를 HBase에 보관합니다. 이 설정은 제대로 작동하며 지금까지 성능 문제가 없습니다.
최근 비즈니스 요구 사항이 약간 변경되어 이제 기본 테이블 A의 일부 속성 (15-20 개 레코드)이 20 초마다 변경되며 테이블 B의 모든 변형 레코드에 대한 일부 값을 다시 계산해야합니다. 모든 사용자들. 20 개의 마스터 레코드 만 변경하더라도 20 초 이상 걸리는 200,000 개의 사용자 레코드를 다시 계산하고 업데이트해야합니다. 그 후 다음 업데이트가 발생하여 결국 모든 Select 쿼리가 대기 상태가됩니다. 온라인 사용자로부터 약 3 건의 요청 받기 / 5 초가 발생하여 6-9 개의 Select 쿼리가 발생합니다. API 요청에 응답하기 위해 항상 표 B의 필드를 사용합니다.
더 많은 처리 능력을 구매하고이 상황을 해결할 수 있지만 수백만 명의 사용자를 처리 할 수있는 적절한 규모의 시스템을 보유하고 싶습니다.
여기 아무도 더 나은 대안을 제안 할 수 있습니까? nosql + 관계형 데이터베이스가 여기에 도움이됩니까? 잠금없이 데이터를 자주 업데이트 할 수있는 플랫폼 / 데이터 저장소가 있습니까?