Project Reactor를 사용하여 Java(17+)로 작성된 반응형 데이터베이스 엔진입니다.
이 라이브러리는 키-값 저장소 및 검색 엔진 의 기본적인 반응형 추상화 및 구현을 제공합니다.
기본적으로 4개의 구현이 존재하며, 2개는 키-값 저장소용, 2개는 검색 엔진용이지만 더 많은 구현을 추가할 수 있습니다.
효율적인 사용자 지정 직렬화 형식을 사용하여 쿼리를 직렬화 및 역직렬화할 수 있습니다.
데이터베이스 추상화는 RocksDB JNI 및 Netty 5 버퍼를 사용하여 데이터가 여러 번 복사되는 것을 방지할 수 있습니다.
Java 16 레코드를 생성하는 데이터 생성기를 사용할 수 있습니다. 이를 통해 .yaml 파일을 사용하여 필드를 정의하여 사용자 정의 레코드를 생성할 수 있습니다.
또한 생성기는 컴파일 타임에 각 사용자 지정 레코드에 대해 특수 직렬 변환기, 역직렬 변환기 및 업그레이드 소스를 생성합니다.
키-값 저장소 추상화를 사용하면 사용자 지정 업그레이드 프로그램과 사용자 지정 역직렬 변환기를 자동으로 사용하여 이전 버전의 데이터를 투명하게 역직렬화할 수 있습니다.
데이터 생성기는 데이터 생성기 저장소에서 찾을 수 있습니다.
RocksDB 키-값 저장소
Apache Lucene Core 인덱싱 라이브러리
사용하기가 왜 이렇게 어려운가요?
이것은 DBMS가 아닙니다.
이는 DBMS를 구축할 수 있는 엔진입니다. 이러한 이유로 맨 위에 또 다른 추상화 계층을 구축하지 않고 직접 사용하는 것은 매우 어렵습니다.
바이트 배열 대신 객체를 사용할 수 있나요?
예, 선택한 라이브러리를 사용하여 직렬화/역직렬화해야 합니다.
CodecSerializer를 사용하면 각 데이터 버전에 대한 코덱을 사용하여 버전이 지정된 데이터를 구현할 수 있습니다. 버전을 저장하기 위해 각 값에 대해 1~4바이트를 더 사용합니다.
각 데이터베이스 부분에 대한 스냅샷 기능이 있는 이유는 무엇입니까?
RocksDB와 lucene 인덱스는 서로 다른 라이브러리이므로 모든 데이터베이스의 스냅샷을 원자적으로 생성할 수는 없습니다.
범용 스냅샷은 각 데이터베이스 스냅샷의 컬렉션으로 구현되어야 합니다.
CavalliumDB 엔진이 귀하의 프로젝트에 적합합니까?
아니요.
이 엔진은 대부분 문서화되지 않았으며 광범위한 테스트를 제공하지 않습니다.
src/example/java
에서 몇 가지 (추악한) 예제를 찾을 수 있습니다.