MariaDB RocksDB storage engine

Merhaba

Bu yazıdaki konu MariaDB’deki MyRocks storage engine üzerine olucaktır.

Öncelikle RocksDB facebook tarafından LevelDB üzerine geliştirilmiştir. Kendisini open-source bir key- value storage olarak tanımlar.

https://rocksdb.org/

MyRocks ise, RocksDB veritabanını MariaDB’ye ekleyen bir storage engine’dir. RocksDB, ssd depolama için optimize edilmiş harika bir sıkıştırma oranına sahip bir LSM veritabanıdır.

MyRocks, tipik olarak web ölçeği tipi uygulamalar için daha yüksek performans sağlar. Daha fazla sıkıştırma ve i/o verimliliği gerektiren iş yükleriniz olduğunda ideal bir storage engine çözümü olabilir.

MariaDB dökümanlarında paylaşılan verilere göre:

– Daha Fazla Alan Verimliliği 2 kat daha fazla sıkıştırma MyRocks, sıkıştırılmış InnoDB’ye kıyasla 2 kat daha iyi sıkıştırmaya, sıkıştırılmamış InnoDB’ye kıyasla 3-4 kat daha iyi sıkıştırmaya sahiptir, yani daha az alan kullanırsınız.

– InnoDB’ye kıyasla 10 kat daha az yazma güçlendirme özelliğine sahiptir, bu da size daha iyi ssd depolama dayanıklılığı sağlar ve genel verimi artırır.

Ayrıca kaynaklara koyduğum ilk makalede yukarıdaki sonuçları facebook’un da deneyip aldığını söylemem gerekiyor.

Kurulum:

MyRocks MariaDB varsayılan kurulumunda gelmiyor. Normal kurulumu yaptıktan sonra kurduğunuz linux dağıtımına göre paketini kurmanız gerekmektedir.

Ubuntu için:

apt install mariadb-plugin-rocksdb

şeklinde paketini kurabilirsiniz.Sonrasında mariadb server’ı restart ettiğinizde en basit kurulum tamamlanmış olucaktır.

(Not: yukarıdaki kurulum en basit haliyle MyRocks storage engine denemenize yeticektir. Ancak production için daha detaylı kurulum ve konfigürasyon yapmalısınız.Ben yazıda bunu göz ardı ediyorum.)

Sonrasında MariaDB konsolunda show engine komutunu çalıştırırsak rocksdb’i göreceğiz.Artık denemek için hazırız.

Ben en basit test için aynı yapıda 2 tabloyu innodb ve rocksdb olarak oluşturup testlerimi tamamladım.

Yaptığımz testlerde hem kapladığı alan olarak hemde insert olarak iyi bir sonuç aldığımı belirtmek isterim.

Resimde gördüğünüz tablolarda birebir aynı veriler bulunmakta.Aynı script ile insert edildiler.

Veriler küçük olmasına rağmen boyut farkı göze çarpıyor. Ayrıca aynı script ile insert edilmelerine rağmen rockdb insert yapan script çok daha erken dönüş sağladı.

Bitirirken:

MyRocks, InnoDB’nin alternatif veya gelişmiş bir sürümü değildir, LSM veri yapısı, yazma yoğun veritabanı işlemleri için mükemmeldir, okumalar yavaş olacaktır ve tam tablo taramaları çok pahalıdır. bu nedenle InnoDB ve RocksDB birlikte harika bir kombinasyon oluşturur!

Kaynaklar:

https://mariadb.com/resources/blog/facebook-myrocks-at-mariadb/

https://github.com/facebook/mysql-5.6/wiki/MyRocks-advantages-over-InnoDB

https://severalnines.com/database-blog/using-myrocks-storage-engine-mariadb-server

https://www.percona.com/blog/2018/04/30/a-look-at-myrocks-performance/