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

Kaynakça

Dış bağlantılar 
 

Facebook tarafından geliştirilen yazılımlar
C++ kütüphaneleri
Gömülü veritabanları
Veri tabanı motorları
NoSQL