RocksDB

RocksDB, anahtar / değer verileri için yüksek performanslı yerleşik bir veritabanıdır. Çoklu merkezi işlem birimi (CPU) çekirdeğinden yararlanmak ve giriş / çıkış (G / Ç) bağlı iş yükleri için katı hal sürücüleri (SSD) gibi hızlı depolamayı verimli bir şekilde kullanmak üzere optimize edilmiş, Google tarafından geliştirilen LevelDB'nin bir çatalıdır. Günlük yapılı birleştirme ağacı (LSM ağacı) veri yapısına dayanır.
C ++ ile yazılmıştır ve C ++, C ve Java için resmi uygulama programlama arabirimi (API) destekler. RocksDB açık kaynaklı bir yazılımdır ve ilk olarak BSD 3 lisansı altında yayımlanmıştır. Bununla birlikte, Temmuz 2017'de proje, muhtemelen Apache Software Foundation'ın önceki BSD + Patent lisans şartının kara listesine yanıt olarak hem Apache 2.0 hem de GPLv2 lisansına taşındı.
Facebook, Yahoo!, ve LinkedIn dahil olmak üzere çeşitli web ölçekli işletmelerin sistemlerinde kullanılımaktadır.
Özellikleri
LevelDB gibi RocksDB'de anahtarları ve değerleri bayt dizilerinde saklar ve veriler anahtarla veya özel bir karşılaştırıcı sağlayarak bayt olarak sıralanır.
RocksDB, LevelDB'nin tüm özelliklerini ve ayrıca şunları sağlar:
İşlemler
Yedeklemeler ve anlık görüntüler
Sütun aileleri
Bloom filtreleri
Yaşam süresi (TTL) desteği
Evrensel sıkıştırma
Birleştirme işleçleri
İstatistik toplama
Mekansal indeksleme
ve diğerleri: LevelDB'de olmayan RocksDB özelliklerinin listesi.
RocksDB bir SQL veritabanı değildir (MyRocks, RocksDB'yi MySQL ile birleştirmesine rağmen). Diğer NoSQL ve dbm depoları gibi ilişkisel veri modeli yoktur ve SQL sorgularını desteklemez. Ayrıca, ikincil dizinler için doğrudan bir desteği yoktur, ancak bir kullanıcı kendi içinden Sütun Aileleri'ni veya harici olarak kendi şifrelerini oluşturabilir. Uygulamalar, sunucu veya komut satırı arabirimi sağlamadığından RocksDB'yi kitaplık olarak kullanır.
Tarihçe
RocksDB, Nisan 2012'de Dhruba Borthakur tarafından, sunucu iş yükleri için performansı artırmak amacıyla bir LevelDB çatalı olarak Facebook'ta oluşturuldu.
Entegrasyon
Katıştırılabilir veritabanı olarak RocksDB, daha büyük bir veritabanı yönetim sisteminde (DBMS) bir depolama motoru olarak kullanılabilir. Örneğin, CockroachDB depolama motoru olarak RocksDB'yi, çoğunlukla işlemsel iş yükleri için kullanırken Rockset çoğunlukla analitik veri işleme için RocksDB'yi kullanır. Yani RocksDB bir depolama motoru olarak da kullanılabilir.
Alternatif arka uç
Önceden kurulmuş veritabanı sistemleri için RocksDB ile alternatif bir depolama motorunu değiştirmek veya sunmak için aşağıdaki projeler başlatılmıştır:
ArangoDB
ArangoDB, önceki depolama motoruna ("mmfiles") RocksDB'yi ekledi. ArangoDB 3.4'tan başlayarak, RocksDB ArangoDB'deki varsayılan depolama motoru olacaktır.
Cassandra
RocksDB, Apache Cassandra'nın performansını önemli ölçüde artırabilir (genel olarak 3-4 kat daha hızlı, bazı kullanım durumlarında 100 kat daha hızlı). Facebook'taki Instagram ekibi, performans sonuçlarının karşılaştırmalarıyla birlikte bu sistemi geliştirdi ve açık kaynaklı olarak yayınlandılar.
Mariadb
MariaDB, 10.2.5'ten (Alfa durumu) beri MyRocks depolama motorunu (RocksDB'den çatallanmıştır) kullanabilir hale getirdi. 2018'de MariaDB 10.2.16'dan beri stabil olarak sunuldu.
MongoDB
MongoRocks projesi, depolama motorunun RocksDB olduğu MongoDB için bir depolama modülü yayınladı.
MySQL
MyRocks projesi, MySQL için yeni bir RocksDB tabanlı depolama motoru oluşturur. MyRocks hakkında derinlemesine ayrıntılar Percona Live 2016'da sunuldu.
Gömülü sistemlerde kullanım
Aşağıdaki veritabanı sistemleri ve uygulamaları, yerleşik depolama motoru olarak RocksDB kullanmayı seçmiştir:
Ceph'in BlueStore'u
CEPH BlueStore depolama tabakası OSD cihazlarında meta veri yönetimi için RocksDB kullanıyor.
Faktory
Facktory arka plan iş sistemi depolama için RocksDB kullanıyor.
Apache Flink
Apache Flink, kontrol noktalarını saklamak için RocksDB'yi kullanıyor.
FusionDB
FusionDB XML, Anahtar / Değer ve JSON için depolama motoru olarak RocksDB'yi kullanıyor.
LogDevice LogsDB
LogDevice'in LogsDB'si, RocksDB üstüne inşa edilmiştir.
Rockset
Operasyonel veri analizi için kullanılan Rockset hizmeti, depolama motoru olarak RocksDB'yi kullanıyor.
SSDB
Ssdb-rocks projesi, SSDB NoSQL Veritabanı için depolama motoru olarak RocksDB'yi kullanır.
TiDB projesi depolama motoru olarak RocksDB'yi kullanmaktadır.
Üçüncü taraf dil kütüphaneleri
RocksDB için kullanılabilen üçüncü taraf programlama dili kütüphaneleri şunları içerir:
C #
D
Elixir
Erlang
Git
Haskell
Java
Node. js
Objective-C ve Swift
OCaml
Perl
PHP
Prolog
Python
Yakut
Rust