Google은 약 500.000 건의 요청을 하루에 처리하는 API 서버를 운영합니다. 우리는 데이터를 분석 할 수 있도록 이러한 모든 규칙을 데이터베이스에 보관하려고합니다. 우리는 같은 것들을 로그 : 대용량 로그 테이블을 저장하는 데이터베이스
- HTTP 응답 코드
- (URL) 에 대한 질문을 받았다 무엇 API 자원
- 캐시 된 응답 (bool)
- +++
우리는 3 개월 동안이 로그를 유지하려고하는데, 그 결과 데이터베이스에 약 45,000,000 개의 레코드가 생깁니다. 레코드가 3 개월 이상 경과하면 레코드가 삭제됩니다.
이러한 4 천 5 백만 레코드를 SQL 데이터베이스에 저장하는 것도 가능하지만 이러한 데이터를 분석하는 것은 실제로 느립니다. 지난 주 같은 날에 비해 특정 사용자가 오늘 얼마나 많은 요청을했는지와 같은 광범위한 분석을하고 싶습니다. 다른 요일에 비해 오늘 실패한 요청 수는 몇 %입니까? 요청 횟수가 올라가거나 내려가는 추세 다이어그램을보십시오. 주어진 시간에 요청되는 상위 10 개 리소스를 확인하십시오. 당신은 그것을 얻습니다. 우리는 이와 같은 모든 종류의 분석을 할 수 있기를 원합니다.
이와 같은 분석을 실시간으로 (또는 거의 실시간으로) 수행 할 수 있도록 이러한 로그를 저장할 위치에 대해 조언을 해줄 수 있습니까? 이것에 좋은 수있는 모든 nosql 데이터베이스? 하늘빛? 하늘색 SQL 데이터웨어 하우스라고하는 뭔가가 있는데,이 용도로 사용할 수 있습니까? 필자는 Microsoft Power Bi를 살펴 보았습니다. Microsoft Power Bi는 이러한 데이터를 분석하는 데 유용 할 수 있지만 데이터를 저장하는 위치는 어디입니까?
누군가 나에게 제안을 해주시면 정말 감사하겠습니다.
왜 SQL Server가 느린 45M 레코드를 관리한다고 쓰셨습니까? 잘 구성된 SQL 서버의 경우, 45M 행은 적은 양의 데이터입니다. –
4500 만개의 레코드를 처리 할 수 있습니다.하지만 테스트했지만 모든 종류의 집계를 수행하는 속도가 느립니다 (예 : 사용자 및 resourcerl을 그룹화하고 오류 코드가있는 행을 계산하는 데 오랜 시간이 걸림). 따라서 튜닝에 충분한 시간을 할애하면 일반 SQL 서버로이 작업을 수행 할 수도 있지만이 경우 올바른 도구가 아닌 것 같습니다. – rgullhaug
45m 행의 SQL Server의 경우 쿼리를 지원하기 위해 인덱스가 필요합니다 (예 : 외래 키 및 일반적으로 필터링 된 열 (사용자, resourcerl, 오류 코드). Columnstore 인덱스가 최상의 성능을 제공합니다. 예를 들어 표를 분할하는 방법을 살펴볼 수도 있습니다. 날짜. 이렇게하면 ETL 복잡성이 증가하지만 I/O를 줄여 쿼리 속도를 향상시킬 수 있습니다. –