>  기사  >  Java  >  주문수입의 편리한 통계 (1)

주문수입의 편리한 통계 (1)

coldplay.xixi
coldplay.xixi앞으로
2020-10-21 17:18:272153검색

Basic Java Tutorial 컬럼에서는 주문 수입을 편리하게 계산하는 방법을 보여줍니다.

주문수입의 편리한 통계 (1)

소개

통계적인 주문 수익은 전자상거래 앱에서 흔히 발생하는 문제입니다. 일반적인 요구 사항은 대략 사용자 수익입니다.日报/月报/年报.这些报表型的数据对表设计和程序设计有着不小的挑战.常规的聚合查询수익 테이블 데이터가 증가함에 따라 명세서 쿼리 시간은 점차 늘어납니다. 가변 길이가 커집니다. 이때 손익계산서를 어떻게 효율적으로 조회할 수 있는지 고민해야 합니다. 어떤 디자인이 통계적 소득을 단순화할 수 있을까요?

요구사항

렌더링

특별한 요구사항

  • 소득 유형은 자체 구매 주문 소득, 공유 주문 소득, 유통수입, 활동수입
  • 통계 당일수입, 이달수입
  • 해당 기간의 수입은 필터링된 시간을 기준으로 계산됩니다.

Thinking

Design Ideas

주문표는 꼭 필요합니다. 주문표를 작성하거나 수정할 때 수정된 수입표도 동시에 작성됩니다. 주문은 주문표에 기록되며, 특별 사업의 손익계산서에만 기록됩니다. 그런 다음 사용자 收益日报表.单行记录写入用户当天收益情况.降低查询用户日/月/年收益统计时的数据量.以单用户为例,通过拆分用户一个月只会产生最多31 데이터를 생성하는 차원으로 사용합니다. 손익 계산서 데이터의 양은 사용자가 주문한 수와 일대일로 일치하므로 손익 계산서를 계속 사용하십시오. 사용자 수가 증가하기 시작하는 초기 단계에서는 대용량 데이터 통계를 피하기 위해 이 방법을 사용할 수 있습니다. 나중에 사용자 수가 증가하면 일일 보고서의 데이터가 커지면 하위를 고려할 수 있습니다. -테이블.

눈에 보이는 문제

  • 일별 소득 보고서 동기화 타이밍은 원래 주문 작업이 매우 복잡하고 소득의 동기 작성과 일일 소득 데이터의 계산 및 작성이 필요하기 때문에 코드 결합이 손익계산서 이질성을 통해 일일 소득 보고서를 생성하는 방법은 무엇입니까?
  • 일별 보고서에 소득이 기록되지만 렌더링에서 요구하는 효과를 충족하려면 여러 SQL 문이 필요할 수 있습니다. 결과에 영향을 주지 않고 이를 수행할 수 있는 방법이 있습니까? 프로그램 효율성을 유지하면서 집계된 SQL을 최대한 적게 사용하는 것은 어떻습니까?

구현 데이터 수집을 시작했고 마침내 이종 솔루션으로 채택되었습니다.

canal+RocketMQ

기술 스택
  • canal: 주요 목적은 MySQL 데이터베이스 증분 로그 분석을 기반으로 증분 데이터 구독 및 소비를 제공하는 것입니다.
  • RocketMQ: 고가용성 분산 클러스터 기술을 기반으로 하는 오픈 소스 분산 메시징 시스템으로, 낮은 대기 시간 A를 제공합니다. 안정적인 메시지 게시 및 구독 서비스입니다.

注:我用的aliyun的全家桶,MQ和mysql都是阿里云的,如果是自建服务器的可能有区别,我在后面尽量标出

프로젝트 프로세스

  1. 손익계산서를 작성하거나 수정하는 동안 운하를 통해 mysql 손익계산서의 binlog 로그를 모니터링하세요.
  2. 운하는 변화를 감지하고 조립합니다. 변경된 JSON 메시지를 전송하고 RocketMQ에 사전 정의된 TOPIC을 보냅니다.
canal 구성 부분

공식 문서를 참조하세요. 압축을 풀면 세 개의 디렉터리가 포함된 운하 폴더가 생성됩니다

위 내용은 주문수입의 편리한 통계 (1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.im에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제