사용자가 사용 가능한 제품에 관심을 보여줄 수있는 전자 상거래 웹 사이트에서 작업하고 있으며이를 MySQL 테이블의 리드로 저장합니다. 이 리드 테이블은 수백만 개의 레코드로 구성되며 분당 8 레코드 씩 증가합니다. 다음과 같이 테이블 구조는 다음과 같습니다MySql과 ElasticSearch의 집계
LeadId | ProductId | UserId | RequestDate(DateTime)
나는 단지 X 30 일 리드 할 수 있도록 요구 사항을 가지고있다. 따라서 데이터를 수집하여 지난 30 일 간 리드 수를 계산하고 이에 따라 사용자를 차단해야합니다. 나는 다음과 같은 접근 방식에 대한 제안이 필요합니다
MySQL의 집계 쿼리를 : 나는 사용자 아이디 & RequestDate 필드에 인덱스를 추가하고 30 일 수를 얻을 수 있습니다.
ElasticSearch 사용 :이 필드를 사용하여 문서를 만들고 그에 대한 집계를 실행할 수 있습니다.
요약표 : 매일 또는 시간 단위로 요약표를 만들고 계산 된 데이터를 얻습니다. 마지막 x 시간 단위의 데이터에 대해 집계를 구현하는 것은 복잡 할 수 있습니다.
접근 방식 2의 성능 이점과 접근 방식 1의 유지 관리 이점을보고 있습니다. 다음 중 내가 사용해야하는 접근 방법은 무엇입니까?
팀의 기술과 경험에 가장 부합하는 솔루션을 사용해야합니다. –
우리 팀은 elasticsearch와 mysql 기술 모두에서 동일한 경험을 가지고 있습니다. 이 양의 데이터 (약 1 천만)에 대해 탄성 검색을 사용해도 괜찮습니까? – ctor