| 원저자 | 드루바 보르타쿠르 |
|---|---|
| 개발자 | 메타 플랫폼스 (과거 페이스북) |
| 발표일 | 2012년 5월 |
| 프로그래밍 언어 | C++ |
| 운영 체제 | Windows, macOS, 리눅스, FreeBSD, OpenBSD, 솔라리스, AIX |
| 플랫폼 | 크로스 플랫폼 |
| 종류 | 임베디드 데이터베이스 |
| 라이선스 | 아파치 2.0 또는 GPL 2 |
| 웹사이트 | rocksdb |
록스DB(RocksDB)는 키-값 데이터를 위한 고성능 임베디드 데이터베이스이다. 이 소프트웨어는 멀티 코어 CPU를 최대한 활용하고 솔리드 스테이트 드라이브(SSD)와 같은 빠른 저장 장치를 효율적으로 사용하여 입출력(I/O) 집약적 작업 부하를 처리하도록 최적화된 구글 LevelDB의 포크이다. 로그 구조화 병합 트리(LSM 트리) 데이터 구조를 기반으로 한다. C++로 작성되었으며 C++, C, 자바에 대한 공식 언어 바인딩을 제공한다. 그 외 많은 서드 파티 언어 바인딩이 존재한다. 록스DB는 원래 BSD 3-조항 라이선스로 배포된 자유-오픈 소스 소프트웨어이다. 하지만 2017년 7월, 프로젝트는 아파치 2.0 및 GPLv2 이중 라이선스로 전환되었다. 이러한 변경은 이전의 BSD+특허 라이선스 조항이 블랙리스트에 오른 후 아파치 소프트웨어 재단 프로젝트에 채택되는 데 도움이 되었다.
록스DB는 LevelDB와 마찬가지로 키와 값을 임의의 바이트 배열로 저장하며, 데이터는 키를 기준으로 바이트 단위로 정렬되거나 사용자 지정 비교기(comparator)를 통해 정렬된다.
록스DB는 LevelDB의 모든 기능을 제공하며 추가로 다음을 지원한다:
기타 등등.
록스DB는 SQL 데이터베이스가 아니다(비록 마이록스가 록스DB와 MySQL을 결합하지만). 다른 NoSQL 및 DBM 저장소와 마찬가지로 관계형 모델을 지원하지 않으며 SQL 쿼리를 지원하지 않는다. 또한 보조 인덱스를 직접 지원하지 않지만, 사용자가 컬럼 패밀리를 사용하여 내부적으로 구축하거나 외부적으로 구축할 수 있다. 록스DB는 서버나 명령줄 인터페이스를 제공하지 않으므로 애플리케이션은 록스DB를 라이브러리로 사용한다.
록스DB는 2012년 4월 페이스북의 드루바 보르타쿠르에 의해 생성되었다. 이는 서버 워크로드 성능 개선이라는 명확한 목표를 가지고 LevelDB를 포크한 것이다.
임베디드 가능한 데이터베이스로서 록스DB는 더 큰 데이터베이스 관리 시스템(DBMS) 내부의 저장 엔진으로 사용될 수 있다. 예를 들어, 록셋은 주로 분석 데이터 처리를 위해 록스DB를 사용한다.
다음 프로젝트들은 기존 데이터베이스 시스템의 저장 엔진을 록스DB로 교체하거나 대체 엔진을 제공하기 위해 시작되었다.
아랑고DB는 기존 저장 엔진("mmfiles")에 록스DB를 추가했다. ArangoDB 3.4 버전부터 록스DB가 기본 저장 엔진으로 설정되었다.
페이스북의 인스타그램 팀은 코드를 개발하고 오픈 소스로 공개했으며, 성능 결과에 대한 벤치마크도 함께 공개했다.
MariaDB는 MariaDB 10.2.5(알파 상태)부터 MyRocks 저장 엔진(RocksDB에서 포크됨)을 사용할 수 있으며, 2018년 MariaDB 10.2.16부터 안정화되었다.
MongoRocks 프로젝트는 저장 엔진이 록스DB인 몽고DB용 저장 모듈을 제공한다.
관련 프로그램인 Rocks Strata는 Go로 작성된 도구로, 록스DB가 저장 엔진으로 사용될 때 몽고DB의 증분 백업 관리를 허용한다.
MyRocks 프로젝트는 MySQL을 위한 새로운 록스DB 기반 저장 엔진을 생성했다. MyRocks에 대한 상세한 내용은 Percona Live 2016에서 발표되었다.
옥시그래프은 록스DB를 기반으로 하는 SPARQL 표준을 구현한 그래프 데이터베이스이다.
UKV 프로젝트는 사용자가 기반 키-값 저장소로서 LevelDB와 동등하게 록스DB를 사용할 수 있게 한다. 이 프로젝트는 모든 저장 엔진에 공통적인 CRUD 작업에 대한 공유 추상화를 나타낸다. 또한 파이썬, 자바, Go를 포함한 여러 고급 언어에 대한 구조화된 바인딩을 추가한다.
다음 데이터베이스 시스템 및 애플리케이션은 임베디드 저장 엔진으로 록스DB를 선택했다.
Ceph의 BlueStore 저장 레이어는 OSD 장치의 메타데이터 관리를 위해 록스DB를 사용한다.
아파치 플링크는 체크포인트를 저장하기 위해 록스DB를 사용한다.
FusionDB는 XML, 키/값 및 JSON 저장 엔진으로 록스DB를 사용한다.
LogDevice의 LogsDB는 록스DB 위에 구축되었다.
Kafka Streams는 상태 저장소를 위해 록스DB를 사용한다.
Manhattan 분산 키-값 저장소는 2018년부터 트위터 데이터를 저장하는 기본 엔진으로 록스DB를 사용해 왔다.
운영 데이터 분석에 사용되는 록셋 서비스는 록스DB를 저장 엔진으로 사용한다.
ssdb-rocks 프로젝트는 SSDB NoSQL 데이터베이스의 저장 엔진으로 록스DB를 사용한다.
TiDB 프로젝트는 저장 엔진으로 록스DB를 사용한다.
유가바이트DB 데이터베이스는 DocDB 저장 엔진의 일부로 수정된 버전의 록스DB를 사용한다.
록스DB에서 사용 가능한 서드 파티 프로그래밍 언어 바인딩은 다음과 같다.
... The story of why we decided to do RocksDB ...