# 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