Skip to content

boozilla/cqengine

Repository files navigation

CQEngine - Collection Query Engine

License Release

CQEngine은 Java 컬렉션을 SQL 유사 방식으로 질의할 수 있게 해주는 인메모리 쿼리 엔진입니다. IndexedCollection에 인덱스를 구성해 반복(iteration) 기반 조회의 비용을 크게 줄이고, 낮은 지연 시간으로 조회할 수 있도록 설계되었습니다.

핵심 특징

  • 타입 안전한 쿼리 API (QueryFactory)
  • 다양한 인덱스 지원(Hash, Navigable, Radix/Suffix, Compound, Standing Query 등)
  • 온힙/오프힙/디스크 기반 지속성 지원
  • MVCC 기반 트랜잭션 격리(TransactionalIndexedCollection)
  • Java Stream과 결합한 후처리(집계/변환) 지원

빠른 시작

Gradle

dependencies {
    implementation("io.github.boozilla:cqengine:3.6.1")
}

최신 버전은 릴리스 노트에서 확인하세요.

빌드 요구사항

  • Gradle Wrapper(gradle-9.3.1) 실행에는 JDK 17 이상이 필요합니다.
  • 라이브러리 바이트코드 타겟은 Java 8(--release 8)을 유지합니다.

예제

import com.googlecode.cqengine.ConcurrentIndexedCollection;
import com.googlecode.cqengine.IndexedCollection;
import com.googlecode.cqengine.index.hash.HashIndex;
import com.googlecode.cqengine.resultset.ResultSet;

import static com.googlecode.cqengine.query.QueryFactory.equal;

IndexedCollection<Car> cars = new ConcurrentIndexedCollection<>();
cars.addIndex(HashIndex.onAttribute(Car.MANUFACTURER));

cars.add(new Car(1, "Ford", "Focus"));
cars.add(new Car(2, "Honda", "Civic"));

ResultSet<Car> result = cars.retrieve(equal(Car.MANUFACTURER, "Ford"));
try {
    result.forEach(System.out::println);
}
finally {
    result.close();
}

문서

입문/개요

쿼리/전략

속성/모델링

운영/배포

문자열 기반 질의

CQEngine은 프로그램적 쿼리 API 외에도 SQL/CQN 문자열 파서를 지원합니다. 관련 예제 코드는 아래 경로를 참고하세요.

지속성 및 트랜잭션

온힙/오프힙/디스크 지속성 조합 및 트랜잭션 격리는 아래 문서를 참고하세요.

About

Ultra-fast SQL-like queries on Java collections

Resources

License

Stars

Watchers

Forks

Contributors