Rocks
RocksDB| 원저작자 | 드루바 보르타쿠르 |
|---|---|
| 개발자 | 페이스북, 주식회사 |
| 초기 릴리즈 | 2012년 5월, 전( |
| 안정된 릴리스 | 2022년[1] 6월 8일 / 7.3.1 |
| 저장소 | |
| 기입처 | C++ |
| 운영 체제 | Windows, macOS, Linux, FreeBSD, OpenBSD, Solaris, AIX |
| 플랫폼 | x86, x86_64, ppc64, ppc64le, aarch64, s390x |
| 유형 | 임베디드 데이터베이스 |
| 면허증. | Apache 2.0 또는 GPL 2 |
| 웹 사이트 | rocksdb |
RocksDB는 주요 가치 데이터를 위한 고성능[2][3][4][5][6] 임베디드 데이터베이스입니다.많은 CPU 코어를 이용하고, 입출력(I/O)에 묶인 워크로드에 솔리드 스테이트 드라이브(SSD)와 같은 고속 스토리지를 효율적으로 사용할 수 있도록 최적화된 Google LevelDB의 포크입니다.로그 구조화된 머지 트리(LSM 트리) 데이터 구조를 기반으로 합니다.C++로 기술되어 C++, C 및 Java의 공식 언어 바인딩과 많은 서드파티 언어 바인딩을 제공합니다.RocksDB는 오픈 소스 소프트웨어이며, 원래 BSD 3절 라이센스로 [7][8][9]출시되었습니다.그러나 2017년 7월 Apache Software Foundation이 이전 BSD+Patents 라이센스 [11][12]조항을 블랙리스트에 올린 것에 대한 대응으로 프로젝트는 Apache 2.0 및 GPLv2 [10]라이센스의 이중 라이센스로 마이그레이션되었습니다.
RocksDB는 Facebook, Yahoo!,[14] LinkedIn [15]등 다양한 웹스케일 기업의[13] 프로덕션 시스템에 사용되고 있습니다.
특징들
RocksDB는 LevelDB와 마찬가지로 임의의 바이트 배열에 키와 값을 저장하고 데이터는 키별로 또는 커스텀 비교기를 제공하여 바이트 단위로 정렬됩니다.
RocksDB는 LevelDB의 모든 기능과 더불어 다음과 같은 기능을 제공합니다.
- 트랜잭션[16]
- 백업[17] 및 스냅샷[18]
- 컬럼 패밀리[19]
- 블룸 필터[20]
- 존속가능시간(TTL) 지원[21]
- 범용 압축[22]
- 병합[23] 연산자
- 통계 수집[24]
- 지리 공간[25] 색인
기타: LevelDB에 없는 RocksDB 기능 목록.
RocksDB는 SQL 데이터베이스가 아닙니다(MyRocks는 Rocks를 결합하지만).DB with MySQL)을 클릭합니다.다른 NoSQL 및 dbm 스토어와 마찬가지로 관계형 데이터 모델이 없으며 SQL 쿼리를 지원하지 않습니다.또한 보조 인덱스를 직접 지원하지 않지만 사용자가 내부적으로 또는 외부에서 열 패밀리를 사용하여 자체 인덱스를 작성할 수 있습니다.서버 또는 명령줄 인터페이스를 제공하지 않으므로 응용프로그램은 RocksDB를 라이브러리로 사용합니다.
역사
RocksDB는 2012년 [28][29]4월 Dhruba[26][27] Borthakur에 의해 Facebook에서 서버 워크로드의 퍼포먼스 향상을 목표로 LevelDB의 분기로서 작성되었습니다.
통합
내장형 데이터베이스로서 RocksDB는 대규모 데이터베이스 관리 시스템(DBMS) 내의 스토리지 엔진으로 사용할 수 있습니다.예를 들어 Rockset은 주로 트랜잭션 워크로드에 [30]RocksDB를 사용하는 반면 Rockset은 주로 분석 데이터 처리에 RocksDB를 사용합니다.이는 RocksDB를 온라인 트랜잭션 처리 및 온라인 분석 처리의 스토리지 엔진으로 사용할 수 있음을 보여줍니다.
대체 백엔드
다음 프로젝트는 이미 확립된 데이터베이스 시스템을 Rocks로 대체하거나 대체 스토리지 엔진을 제공하기 위해 시작되었습니다.DB:
아랑고DB
ArangoDB는 이전 스토리지 엔진("mmfiles")[31]에 RocksDB를 추가했습니다.ArangoDB 3.4부터 RocksDB는 ArangoDB의 [32]기본 스토리지 엔진입니다.
카산드라
Cassandra on RocksDB는 Apache Cassandra의 성능을 크게 향상시킬 수 있습니다(일반적으로 3~4배, 일부 사용 [citation needed]사례에서는 100배 더 빠릅니다).Facebook의 Instagram 팀은 그들의 실적 결과에 [33]대한 벤치마크와 함께 코드를 개발하고 오픈 소싱했다.
마리아DB
MariaDB는 MyRocks 스토리지 엔진(Rocks에서 분기)을 사용할 수 있습니다.DB)는 MariaDB 10.2.5(Alpha 상태) 이후 2018년 [35]MariaDB 10.2.16 이후 안정적입니다.
MongoDB
MongoRocks 프로젝트는 스토리지 엔진이 [36][37][38]RocksDB인 MongoDB용 스토리지 모듈을 제공합니다.
관련 프로그램으로는 Rocks Strata가 있습니다.Rocks Strata는 Go로 작성된 툴로 Rocks 시 MongoDB의 증분 백업을 관리할 수 있습니다.DB는 스토리지 [39]엔진으로 사용됩니다.
MySQL
MyRocks 프로젝트는 MySQL을 [40][41]위한 새로운 RocksDB 기반 스토리지 엔진을 만듭니다.MyRocks에 [42]대한 자세한 내용은 Percona Live 2016에서 발표되었습니다.
내장
다음 데이터베이스 시스템과 애플리케이션은 RocksDB를 내장 스토리지 엔진으로 사용하도록 선택했습니다.
Ceph's Blue Store
Ceph의 BlueStore 스토리지 계층은 OSD [43]장치에서 메타데이터 관리를 위해 RocksDB를 사용합니다.
아파치 플링크
Apache Flink는 RocksDB를 사용하여 체크포인트를 [44]저장합니다.
Fusion DB
FusionDB는[45] RocksDB를 XML, Key/Value 및 [46]JSON의 스토리지 엔진으로 사용합니다.
Log Device 로그DB
LogDevice의 LogsDB는 RocksDB [47]위에 구축됩니다.
록셋
운영 데이터 분석에 사용되는 Rockset 서비스는 스토리지 [48]엔진으로 RocksDB를 사용합니다.
SSDB
ssdb-rocks[49] 프로젝트는 RocksDB를 SSDB[50] NoSQL 데이터베이스의 스토리지 엔진으로 사용합니다.
TiDB
TiDB[51] 프로젝트는 RocksDB를 스토리지 [52]엔진으로 사용합니다.
유가바이트DB
유가바이트DB[53] 데이터베이스는 수정된 버전의 RocksDB를 DocDB 스토리지 엔진의 일부로 사용합니다.
서드파티 언어 바인딩
RocksDB에서 사용할 수 있는 서드파티 프로그래밍 언어 바인딩은 다음과 같습니다.
레퍼런스
- ^ "RocksDB 7.3.1". 8 June 2022. Retrieved 8 June 2022.
- ^ "Performance Benchmarks". GitHub. Retrieved November 29, 2015.
- ^ "Benchmarking the leveldb family". 7 July 2014. Retrieved March 10, 2016.
- ^ "Comparing LevelDB and RocksDB, take 2". 27 April 2015. Retrieved March 10, 2016.
- ^ "Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB". 20 June 2014. Retrieved March 10, 2016.
- ^ Golan-Gueta, Guy; Bortnikov, Edward; Hillel, Eschar; Keidar, Idit (April 21, 2015). "Scaling Concurrent Log-Structured Data Stores". EuroSys '15 Proceedings of the Tenth European Conference on Computer Systems: 1–14. doi:10.1145/2741948.2741973. ISBN 9781450332385. S2CID 5849146.
- ^ "Facebook's latest open source effort: a flash-powered database called RocksDB". 21 November 2013. Retrieved March 10, 2016.
- ^ "Under the Hood: Building and open-sourcing RocksDB". Facebook. Retrieved March 10, 2016.
- ^ "RocksDB - Facebook's Database Now Open Source". Retrieved March 10, 2016.
- ^ "GitHub pull request". GitHub. Retrieved July 20, 2017.
- ^ "Apache says 'no' to Facebook code libraries". The Register. Retrieved July 20, 2017.
- ^ "GitHub issue". GitHub. Retrieved July 20, 2017.
- ^ "Users.md". GitHub. Retrieved December 1, 2015.
- ^ "RocksDB on Steroids". Retrieved March 10, 2016.
- ^ "Benchmarking Apache Samza: 1.2 million messages per second on a single node". Retrieved March 10, 2016.
- ^ "RocksDB transactions". GitHub. Retrieved 2016-04-04.
- ^ "How to backup RocksDB?". GitHub. Retrieved 2017-07-19.
- ^ "Checkpoints". GitHub. Retrieved 2017-07-19.
- ^ "Column families in RocksDB". GitHub. Retrieved 2016-04-04.
- ^ "RocksDB bloom filters". GitHub. Retrieved 2016-04-04.
- ^ "RocksDB TTL support". GitHub. Retrieved 2016-04-04.
- ^ "Universal compaction". GitHub. Retrieved 2016-04-04.
- ^ "RocksDB merge operator". GitHub. Retrieved 2016-04-04.
- ^ "RocksDB perf context and IO stats context". GitHub. Retrieved 2016-04-04.
- ^ "Spatial indexing in RocksDB". rocksdb.org. Retrieved 2018-07-19.
- ^ "First commit where RocksDB diverges from LevelDB". GitHub. May 10, 2012. Retrieved March 15, 2016.
- ^ "rocksdb README file". GitHub. Nov 30, 2012. Retrieved March 15, 2016.
- ^ "The History of RocksDB". November 24, 2013. Retrieved March 10, 2016.
- ^ Borthakur, Dhruba (November 22, 2013). "RocksDB: A High Performance Embedded Key-Value Store for Flash Storage - Data@Scale". YouTube. Retrieved March 10, 2016.
... The story of why we decided to do RocksDB ...
- ^ Edwards, Jessica (2015-10-29). "Hello World: Meet CockroachDB, the Resilient SQL Database". The New Stack. Retrieved 2016-07-08.
- ^ "Comparing new RocksDB and MMFiles storage engines".
- ^ "RC1 ArangoDB 3.4 - Whats new?". 6 September 2018.
- ^ "Open-sourcing a 10x reduction in Apache Cassandra tail latency". 5 March 2018.
- ^ "MyRocks". MariaDB KnowledgeBase. Retrieved 2019-04-28.
- ^ "MariaDB 10.2.16 Release Notes".
- ^ "mongodb-partners/mongo-rocks". GitHub. 29 October 2021.
- ^ "Integrating RocksDB with MongoDB". Retrieved July 19, 2018.
- ^ "MongoDB + RocksDB at Parse". Retrieved December 1, 2015.
- ^ "facebookgo/rocks-strata". GitHub. 31 October 2021.
- ^ "facebook/mysql-5.6". GitHub. 2 November 2021.
- ^ "MyRocks: MySQL on RocksDB" (PDF). Retrieved November 29, 2015.
- ^ "MyRocks Deep Dive". 19 April 2016. Retrieved May 9, 2016.
- ^ "Storage Devices -- Ceph Documentation".
- ^ "Apache Flink 1.8 Documentation: State Backends". ci.apache.org. Retrieved 2019-08-11.
- ^ "FusionDB". Evolved Binary.
- ^ "The Design and Implementation of FusionDB" (PDF). XML Prague.
- ^ "LogDevice: a distributed data store for logs". Mark Marchukov, Facebook. 31 August 2017.
- ^ "How we use RocksDB at Rockset". rockset.com. Retrieved 2019-07-10.
- ^ "ideawu/ssdb-rocks". GitHub. 21 August 2021.
- ^ https://ssdb.io
- ^ "pingcap/tidb". GitHub. 4 November 2021.
- ^ "TiDB Internal (I) - Data Storage". Shen Li.
- ^ "How We Built a High Performance Document Store on RocksDB?". 20 February 2019.
- ^ "warrenfalk/rocksdb-sharp". GitHub. 28 September 2021.
- ^ "chicken-rocksdb".
- ^ "b1naryth1ef/rocksdb". GitHub. 22 October 2019.
- ^ "urbint/rox". GitHub. September 2021.
- ^ "leo-project/erocksdb". GitHub. September 2021.
- ^ "barrel-db/erlang-rocksdb".
- ^ "tecbot/gorocksdb". GitHub. 29 October 2021.
- ^ "rocksdb-haskell: Haskell bindings to RocksDB".
- ^ "RocksJava". GitHub.
- ^ "rocksdb".
- ^ "iabudiab/ObjectiveRocks". GitHub. 2 August 2021.
- ^ "OCaml bindings for RocksDB". GitHub. 8 October 2021.
- ^ "An OCaml RocksDb binding using ocaml-ctypes". GitHub. 28 September 2020.
- ^ "RocksDB - Perl extension for RocksDB - metacpan.org".
- ^ "Photonios/rocksdb-php". GitHub. 11 August 2021.
- ^ "SWI-Prolog interface for RocksDB".
- ^ "stephan-hof/pyrocksdb". GitHub. 27 October 2021.
- ^ "rocksdb-ruby - RubyGems.org - your community gem host".
- ^ "spacejam/rust-rocksdb". GitHub. 2 November 2021.