비트맵 인덱스는 카디널리티가 낮은 속성이 있는 대규모 데이터 세트의 데이터에 액세스하고 쿼리하는 데 특히 효율적인 특수 유형의 데이터베이스 인덱싱 기술입니다. 이 속성은 데이터 세트의 총 레코드 수에 비해 고유한 값 수가 적은 속성을 나타냅니다. 원래 데이터 웨어하우징, 의사 결정 지원 시스템 및 임시 보고와 같이 읽기가 많은 워크로드에서 복잡한 쿼리 작업을 신속하게 처리하도록 설계된 비트맵 인덱스는 이제 다양한 관계형 및 NoSQL 데이터베이스 관리 시스템에서 일반적으로 사용할 수 있습니다.
가장 기본적인 수준에서 비트맵 인덱스는 데이터베이스 테이블에서 지정된 속성의 고유한 값을 나타내는 비트맵 또는 비트맵 벡터 집합으로 구성됩니다. 이러한 비트맵 인덱스 벡터는 비트맵 벡터의 각 위치가 테이블의 특정 행에 해당하도록 이진 형식의 각 튜플 또는 행 내 해당 특성 값의 존재 여부를 인코딩하여 형성됩니다. 이 체계에서 인덱스의 '1' 비트는 벡터의 비트 위치와 관련된 행에 해당 값이 있음을 나타내고 '0'은 해당 값이 없음을 나타냅니다.
비트맵 인덱싱의 주요 이점은 비교 연산자 또는 여러 속성 값의 논리적 조합과 같은 속성 집약적 쿼리를 처리할 때 공간 효율성과 계산 속도에 있습니다. 비트맵 인덱스는 다양한 인코딩 및 압축 기술을 통해 희소 이진 벡터를 압축하여 쿼리를 수행하는 동안 메모리에서 읽거나 유지해야 하는 데이터가 적어지므로 데이터베이스 작업을 인덱싱하고 가속화하는 데 필요한 저장 공간을 줄입니다. 비트맵 인덱스로 달성한 공간 절약은 카디널리티가 낮은 열의 경우 특히 중요합니다. 개별 속성 값이 적을수록 연속 '0' 또는 '1'의 실행이 더 큰 비트맵 벡터가 더 짧아지고 실행 길이와 같은 효과적인 압축 알고리즘에 적합하기 때문입니다. 인코딩(RLE).
비트맵 인덱스의 또 다른 주요 이점은 AND, OR 또는 XOR과 같은 비트 논리 연산을 사용하여 인덱스 구조를 직접 조작하여 기본 데이터에 액세스하지 않고 복잡한 쿼리 술어의 결과를 계산할 수 있다는 것입니다. 이를 통해 다중 특성 및 임시 쿼리를 효율적으로 실행할 수 있으며 수많은 술어 또는 술어 조합을 포함하는 쿼리의 성능을 크게 향상시킬 수 있습니다. 또한 비트맵 인덱스는 여러 인덱스 구조를 사용하여 효율적으로 결합하거나 병합할 수 있으므로 쿼리 작업의 병렬 처리가 가능하고 쿼리 성능이 더욱 향상됩니다.
그러나 비트맵 인덱스와의 특정 장단점은 특정 사용 사례에 대한 적합성을 제한할 수 있습니다. 그러한 제한 중 하나는 고유한 속성 값의 수가 증가하면 인덱스의 공간 요구 사항 및 계산 오버헤드에 직접적인 영향을 미치기 때문에 높은 카디널리티 속성을 처리하기 위한 상대적 비효율성입니다. 이와 같이 비트맵 인덱스는 고유한 값이 많은 매우 고유하거나 기본 키 열을 인덱싱하는 데 효과적이지 않을 수 있습니다.
또 다른 문제는 인덱싱된 열에 대한 빈번한 데이터 수정과 관련된 쓰기 집약적 워크로드 또는 시나리오에서 잠재적인 성능 저하 및 인덱스 유지 관리 오버헤드입니다. 이는 테이블의 레코드를 업데이트, 삽입 또는 삭제하려면 비트맵 인덱스 벡터 및 해당 압축 표현에 대한 업데이트가 필요하기 때문에 계산 비용이 많이 들고 트랜잭션 처리에 대기 시간이 발생할 수 있습니다. 결과적으로 비트맵 인덱스는 주로 읽기 중심의 워크로드가 있는 환경에서 일반적으로 선호되며, 쿼리 성능에 대한 비트맵 인덱스의 이점이 관련 유지 관리 비용보다 큽니다.
백엔드, 웹 및 모바일 애플리케이션을 지원하여 신속한 애플리케이션 개발 및 배포를 지원하는 AppMaster no-code 플랫폼의 맥락에서 비트맵 인덱스와 같은 다양한 인덱싱 기술의 사용 사례 및 이점을 이해하는 것이 성능, 확장성을 최적화하는 데 중요합니다. , 기본 데이터베이스 시스템의 스토리지 효율성. 효과적인 데이터베이스 인덱싱 전략을 구현하고 적용 가능한 경우 비트맵 인덱스의 기능을 활용함으로써 AppMaster 의 고객은 애플리케이션의 데이터 계층 내에서 쿼리 응답 시간과 데이터 액세스 효율성을 크게 개선하여 소프트웨어 솔루션의 성능을 향상하고 리소스 활용도를 최적화할 수 있습니다.