objectbox/objectbox-java
Database for Android and JVM - first and fast, lightweight on-device vector database
ObjectBox Java – 장치 내 NoSQL 데이터베이스에 벡터 검색 기능 탑재
무엇인가요
ObjectBox‑Java는 Java 및 Kotlin 앱(안드로이드, 데스크톱, 서버)용 경량 장치 내 데이터베이스입니다. 일반 객체(POJO)를 직접 저장하므로 SQL을 작성할 필요가 없습니다. 이 라이브러리는 또한 벡터 검색 엔진을 내장하고 있어, 일반 데이터와 함께 고차원 임베딩(embeddings)을 저장하고 빠르게 유사성 쿼리를 실행할 수 있습니다. 이는 RAG, 생성형 AI 또는 추천 기능에 유용합니다.
왜 사용해야 할까요
| 기능 | 당신에게 의미하는 바 |
|---|---|
| 최초의 장치 내 벡터 DB | 임베딩을 로컬에 저장하고 원격 서비스 없이 유사성 검색을 수행할 수 있습니다. |
| 고성능 | 벤치마크에 따르면 CRUD 연산이 SQLite나 Realm보다 빠르며, CPU, 메모리, 배터리 사용량이 낮아 모바일 또는 엣지 디바이스에 적합합니다. |
| 객체 지향 API | @Entity 클래스를 정의하고 Box<T>를 얻어 put, get, remove를 호출하기만 하면 됩니다. SQL 문자열 없이 컴파일 시 타입 안정성 보장. |
| 내장된 관계 | 1대다, 다대다 관계는 자동으로 처리되어 복잡한 데이터 모델을 단순화합니다. |
| 크로스 플랫폼 | 안드로이드 및 모든 JVM(리눅스, 맥OS, 윈도우)에서 작동하며 ARM CPU도 지원합니다. |
| 동기화 및 타임시리즈 확장 기능 (별도 제품) | 장치 간 데이터 동기화 또는 타임시리즈 데이터 저장을 옵션으로 추가 가능. |
사용 방법 (간략한 예시)
@Entity
public class Person {
@Id long id; // 자동 생성된 기본 키
String firstName;
String lastName;
}
BoxStore store = MyObjectBox.builder()
.name("person-db")
.build();
Box<Person> box = store.boxFor(Person.class);
Person p = new Person();
long id = box.put(p); // 생성
Person loaded = box.get(id); // 읽기
loaded.lastName = "Smith";
box.put(loaded); // 수정
box.remove(loaded); // 삭제
Kotlin 사용도 동일한 어노테이션을 사용해 유사하게 가능합니다.
프로젝트에 추가하는 방법
- Gradle –
io.objectbox플러그인을 추가(또는 버전 카탈로그 사용)하고 Maven Central에서 ObjectBox 종속성 가져오기. - Maven – JVM 프로젝트에서 지원됨. 예제 리포지토리에서 pom 파일 참조.
- Java 8+ (또는 Kotlin 1.7+) 필요. 안드로이드 5.0+ 및 최신 데스크톱 OS에서 작동.
더 알아보기
- 문서 및 시작 가이드 – https://docs.objectbox.io
- 예제 앱 – https://github.com/objectbox/objectbox-examples
- FAQ / 문제 해결 – README에서 링크됨.
- 성능 벤치마크 리포지토리 – SQLite/Realm과의 속도 비교를 보여줌.
라이선스
Apache 2.0 (이 리포지토리 내 코드). 기타 ObjectBox 컴포넌트는 별도 라이선스 조건 적용.
ObjectBox Java는 로컬 데이터 저장 및 장치 내 벡터 검색에 특화된 진정한 소프트웨어 프로젝트로, 엣지 측에서 임베딩의 유사성 검색을 가능하게 하여 AI/ML의 최전선을 지원합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트