Release Notes

Release Notes

v1.2.0 (2024-06-01)

신규 기능

  • HNSW-IVF 인덱스가 인덱스 데이터를 메모리에 로드하는 대신 기본 key-value 저장소를 직접 사용하도록 개선되었습니다.
    • 이 변경 사항은 HNSW-IVF 인덱스가 더 작은 메모리 사용량으로 더 큰 인덱스를 처리할 수 있게 합니다.
  • 인덱스 생성 프로세스를 재개할 수 있도록 개선되었습니다.
    • 인덱스 생성 프로세스가 중단되면 마지막 체크포인트에서 다시 시작할 수 있습니다.

성능 개선

  • 캐시된 블록을 더 적극적으로 해제하여 블록 캐시의 메모리 사용량을 줄였습니다.
  • 쿼리 캐시를 구현하여 전체 텍스트 검색의 성능을 개선했습니다.
  • 토큰화 과정을 최적화하여 텍스트 분석 파이프라인의 성능을 개선했습니다.
  • 데이터 로딩 절차를 최적화하여 인덱스 생성의 성능을 개선했습니다.

동작 변경

  • KeywordAnalyzer가 배열 타입 필드를 지원하도록 업데이트되었습니다. 배열의 요소를 별도의 토큰으로 토큰화합니다.
  • DenseVectorAnalyzer가 null 값 필드를 지원하도록 업데이트되었습니다. null 값 필드는 HNSW 인덱스에 인덱싱되지 않습니다.
  • 인덱스를 생성할 때 인덱스 유형의 유효성 검사 프로세스를 추가했습니다.

버그 수정

  • 전체 텍스트 검색 관련 버그 수정
    • 전체 텍스트 검색 쿼리에서 ASCII가 아닌 필드 이름과 쿼리 파서가 올바르게 작동하지 않는 버그를 수정했습니다.
    • 일부 경우에 전체 텍스트 검색 쿼리를 잘못 최적화하던 쿼리 플래너의 버그를 수정했습니다.
  • 스토리지 엔진 관련 버그 수정
    • 종료 과정에서 compaction 필터의 오류로 드물게 발생하던 크래시를 수정했습니다.

v1.1.0 (2024-05-01)

신규 기능

  • Full-text search 성능 개선하였습니다.
    • Full-text search 쿼리에서 multi-field term 기능을 추가되었습니다.
      • {!fields=[field1, field2]}:(term1 AND term2)field1:(term1 AND term2) field2:(term1 AND term2)로 해석.
    • 순서를 고려하지 않는 근접 검색 기능을 지원.
      • "term1 term2"~~5term1term2가 순서에 상관없이 서로 5단어 이내에 있는 문서를 검색합니다.
  • $project 연산자에서 중첩된 객체를 평면화(unnest) 할 수 있습니다.
    • ^ 접두어는 객에나 배열을 평면화 하는데 사용할 수 있습니다.
      • $project: ["^field1.field2", "field3"]는 평면화된 field1.field2와 변경 없는 field3를 의미합니다.
  • 쿼리 파서에서 이제 did you mean? 기능이 추가됩니다.
    • 만약 쿼리 파서에서 인식되지 않는 연산자가 있다면 유사한 연산자를 추천하게 됩니다.

성능 개선

  • 색인 생성 과정에서 동시성 제어를 완화하여 full-text search 색인 생성 성능을 개선되었습니다.

동작 변경

  • $search.timeout의 기본값이 5,000에서 10,000로 변경됩니다, 기본 검색 쿼리는 10초 이후에 만료됨을 의미합니다.
  • $limit 연산자의 값을 -1로 설정하여 단일 쿼리에서 반환할 수 있는 최대 문서 수를 늘릴 수 있습니다. 최대 반환할 수 있는 문서의 수는 인덱스의 구성, 쿼리의 복잡성, 시스템의 리소스에 의존합니다. 예를 들어, full-text search 색인에서 반환할 수 있는 최대 문서수는 10,000,000개이며 다른 색인의 경우 시스템 리소스가 허용하는 범위 내에서는 한계가 없습니다.
  • $search.highlight옵션에 의해 생성된 _highlights 필드에 대해 $recursive_unnest 연산자를 사용할 때 _score 필드도 평면화에 포함됩니다.

버그 수정

  • Full-text search의 버그가 수정되었습니다.
    • highlighter가 배열 타입 필드에 대해서 정상적으로 동작하지 않은 버그를 수정함.
  • DocumentDB의 버그가 수정되었습니다.
    • 중첩된 필드와 함께 $project 연산자가 제대로 작동하지 않는 버그를 수정함.
    • 부동 소수점 숫자와 함께 $sort 연산자가 제대로 작동하지 않는 버그를 수정함.
    • 다단계 파이프라인 쿼리에서 $skip$limit 연산자가 제대로 작동하지 않는 버그를 수정함.

v1.0.0 (2024-04-11)

Aeca Server의 첫 번째 안정된 릴리스입니다. 다음 기능들을 제공합니다:

  • Key-Value Database
    • 기본적인 CRUD 연산자
    • Transactions
    • Key-level Time-to-Live (TTL) support
  • Document-oriented Database
    • 기본적인 CRUD 연산자
    • Transactions
    • Secondary indexes
      • Unique와 non-unique 색인
      • Clustered와 non-clustered 색인
      • 부분 색인
      • 전체 기능을 지원하는 텍스트 검색 색인
      • Dense vector를 위한 유사도 검색 색인
      • 색인 레벨에서의 Time-to-Live (TTL) 지원
    • 쿼리 레이어에서 Python scripting을 지원
  • Language model serving
    • Touch 기반의 사용자 언어모델 배포 기능