인터넷 애플리케이션의 지속적인 발전으로 인해 시스템은 센서 데이터, 로그 정보, 주가 등과 같은 시계열 데이터를 점점 더 많이 생성합니다. 이러한 유형의 데이터는 시간 연속성과 높은 성장이 특징입니다. 이를 어떻게 효율적으로 검색하고 집계하는가는 중요한 기술적 과제가 되었습니다. 이 기사에서는 RiSearch 및 PHP를 기반으로 고성능 시계열 데이터 검색 및 집계 솔루션을 구축하는 방법을 소개합니다.
구현하기 전에 Redis, RiSearch 및 PHP의 Redis 확장을 설치해야 합니다. 다음은 기본 구성 프로세스입니다.
RiSearch에서 인덱스를 사용하는 것은 검색 및 집계의 기초입니다. 다음 예에서는 PHP에서 로그 기반 시계열 인덱스를 생성하는 방법을 보여줍니다.
<?php $redis = new Redis(); $redis-> 연결('127.0.0.1', 6379); $redis->rawCommand('FT.CREATE', '로그', 'SCHEMA', '타임스탬프', 'NUMERIC', 'content', 'TEXT'); // 인덱스에 로그 데이터를 추가합니다. $logs = array( array('timestamp' => 1615516800, 'content' => '첫 번째 로그입니다.'), array('timestamp' => 1615603200, 'content' => '두 번째 로그입니다.'), // ... ); foreach($log를 $log로) { $redis->rawCommand('FT.ADD', '로그', 'doc:'.$log['timestamp'], 1.0, 'FIELDS', '타임스탬프', $log['타임스탬프'], '콘텐츠', $log['콘텐츠']); } ?>
위 코드는 먼저 타임스탬프와 콘텐츠라는 두 개의 필드를 포함하는 로그 라는 인덱스를 정의하고 후속 검색 및 집계 작업을 용이하게 하기 위해 인덱스에 여러 로그 데이터를 씁니다.
RiSearch는 시간 간격에 따라 데이터를 빠르게 검색할 수 있는 효율적인 쿼리 구문을 제공합니다. 다음 코드는 지정된 시간 범위 내에서 로그를 검색하는 방법을 보여줍니다.
<?php $redis = new Redis(); $redis-> 연결('127.0.0.1', 6379); $query = '@timestamp:[1615516800 1615603200]'; // 2021년 3월 12일부터 2021년 3월 13일까지의 로그 검색 $result = $redis->rawCommand('FT.SEARCH', 'logs', $query, 'LIMIT', 0, 10); // foreach 검색 결과 출력($result as $key => $value) { if ($key % 2 === 0) { echo '로그 ID:'.$value."\n"; } 또 다른 { echo '콘텐츠:'.$value."\n"; } } ?>
FT.SEARCH 명령어를 통해 특정 시간 범위 내의 로그 정보를 빠르게 조회하고 요청에 따라 결과를 출력할 수 있습니다. 이 방법은 복잡한 쿼리 조건과 다중 필드 일치를 지원할 수 있습니다.
로그 분석 또는 모니터링 시스템에서는 집계 통계가 일반적인 요구 사항입니다. 예를 들어 특정 기간 동안 특정 유형의 로그가 나타나는 횟수를 계산할 수 있습니다. 다음 예에서는 RiSearch의 집계 명령을 사용하여 이 기능을 구현하는 방법을 보여줍니다.
<?php $redis = new Redis(); $redis-> 연결('127.0.0.1', 6379); $query = '@timestamp:[1615516800 1615603200]'; // 지정된 시간 범위의 로그를 검색합니다. $result = $redis->rawCommand('FT.AGGREGATE', 'logs', $query, 'LOAD', 1, 'GROUPBY', 1, '@content', 'REDUCE', '개수', 0, 'AS', '개수'); // 집계 결과 foreach ($result as $item) { echo 'Content:'.$item['@content'].', 발생 빈도: '.$item['count']."\n"; } ?>
이 집계 명령은 쿼리 결과를 그룹화하고 각 로그 콘텐츠의 발생 횟수를 계산합니다. 로그 분석, 이벤트 통계 등의 시나리오에 매우 적합합니다.
RiSearch와 PHP를 결합하면 시계열 데이터 검색 및 집계를 지원하는 고성능 시스템을 쉽게 구축할 수 있습니다. 인덱스 구축, 검색어, 집계분석의 3단계를 통해 대규모 시계열 데이터를 효율적으로 관리하고 분석할 수 있습니다. 개발자는 데이터 시각화, 지능형 경보 또는 다차원 집계와 같은 기능을 추가하는 등 실제 비즈니스 요구 사항을 기반으로 더욱 확장하여 완전한 데이터 분석 플랫폼을 구축할 수 있습니다.