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/

MariaDB Storage Engines

Evet arkadaşlar bugünkü yazıda MariaDB’nin aslında MySQL’den en önemli farklarından birisi olan storage enginler konusuna bakacağız.

İlk olarak bu yazıda sadece InnoDB Aria ve MyISAM ‘e bakacağız.

MariaDB konsoluna giriş yaptıktan sonra

SHOW ENGINES;

komutu ile desteklenen engine’leri görebilirsiniz.

INNODB

MySQL dökümantasyonundan aldığımız tanım:

InnoDB, yüksek güvenilirliği ve yüksek performansı dengeleyen genel amaçlı bir depolama motorudur. MySQL 5.6 sürümünde, InnoDB varsayılan MySQL depolama motorudur.

InnoDB’nin en büyük öne çıkan özelliği row-level lock yani tabloda sadece işlem yapılan satırı kilitler ve bunun yanında transaction , foreign key gibi özellikleri destekler.

Başlıca diğer özellikleri

  • Kullanıcı verilerini korumak için kesinleştirme, geri alma ve çökme kurtarma özellikleri içeren işlemlerle birlikte ACID modelini takip eder.
  • Satır düzeyinde kilitleme , çok kullanıcılı eşzamanlılığı ve performansı artırır.
  • InnoDB tabloları, birincil anahtarlara dayalı sorguları optimize etmek için diskteki verilerinizi düzenler. Her InnoDB tablosunun, birincil anahtar aramaları için I/O’yu en aza indirgemek üzere verileri düzenleyen clustered index adı verilen birincil anahtar dizini vardır.

InnoDB ile ilgili daha fazla bilgi için buraya tıklayarak mysql dökümantasyonlarını okumanızı tavsiye ediyorum.

Ayrıca zaman bulursam InnoDB ile ilgili daha detaylı yazı yazmayı planlıyorum.Yazarsam buradan url’sini veririm.

MariaDB’de InnoDB ve Percona-XtraDB

Percona-XtraDB, Supports transactions, row-level locking, foreign keys and encryption for tables

MySQL’de olduğu gibi MariaDB içinde default seçili gelen depolama moturu InnoDB’dir. Konsolunda gördüğümüz tanımdada belirtildiği şekilde transaction , satır bazlı kilit , vb gibi işlemleri desteklemektedir.Aslında forkladığın MySQL’deki InnoDB’nin dahada gelişmiş hali diyebiliriz.

MariaDB ilk versionlarında MySQL’den fork edildiği için aslında InnoDB motoru büyük oranda benzerlik ve uyumluluk gösteriyordu.Fakart MariaDB versionu ilerledikçe InnoDB’de geliştirmeler ve iyileştirmeler devam etti.

MariaDB 10.1 ve öncesinde, varsayılan InnoDB motoru Percona XtraDB’ye dayanmaktadır. XtraDB, InnoDB‘nin performansı artırılmış bir forkudur. Ancak bu versiondada geriye yönelik uyumluluk nedeniyle, sistem özelikleri hala orijinal innodb öneklerini korumaktadır.

MariaDB 10.2 ve sonraki sürümlerde, XtraDB’den vazgeçilip InnoDB motoru MySQL 5.7‘deki InnoDB‘yi temel alır. Peki bir üst sürümde neden XtraDB’den vazgeçildiği ile ilgili kendi dökümantasyonlarındaki yazıyı okumanızı tavsiye ederim.

MariaDB 10.3.7 ve sonrasında ise InnoDB motoru, MySQL’deki InnoDB’den önemli ölçüde sapmıştır. Bu nedenle, bu sürümlerde, InnoDB sürümü artık bir MySQL sürümüyle ilişkilendirilmez.

MyISAM

MyISAM , InnoDB ile değiştirilene kadar MySQL’in varsayılan depolama motoruydu. Mükemmel performansa sahip hafif, işlemsel olmayan bir motordur, sistemler arasında kopyalanması kolaydır ve küçük bir veri alanına sahiptir.

MariaDB, Aria isimli MyISAM’in iyileştirilmiş hali olarak düşünebileceğiniz bir depolama motoruna sahiptir.Çoğu senaryoda daha iyi performansa ve daha güvenli olma hedefine sahip yeni uygulamalar için MariaDB tarafından önerilmektedir..

Aria(MariaDB)

Aria depolama motoru varsayılan olarak MariaDB 5.1’den derlenmiştir. MariaDB 10.4’ten itibaren MariaDB’nin kendisinin kullandığı tüm sistem tabloları Aria depolama moturunu kullanmaktadır.

Ayrıca, diskteki dahili tablolar MyISAM tablo biçimi yerine Aria tablo biçimindedir.GROUP BY ve DISTINCT sorgularında, sorgulanan tablo farklı bir motor kullanıyor olsa bile, bu tür sorgular Aria’nın performansından yararlanabilir.

Aria depolama motoru MariaDB’de varsayılan olarak derlenmiştir. Aria, ek kurulum veya kurulum gerektirmeden MariaDB Server‘a (Enterprise ve Community) dahildir.

Aşağıdaki senaryolarda depolama motoru olarak Aria kullanmayı düşünebilirsiniz:

  • Uygulamanızda çok fazla FULL Text search varsa.
  • Uygulamanızda GROUP BY gibi aggregate sorguları fazlaysa
  • Uygulamanızda veya tablonuzda ACID uyumluluğuna veya foreign key ile ilişkilere ihtiyacın yoksa.
  • Uygulamanız şu anda MyISAM kullanıyorsa ve daha iyi hız, yedekleme ve otomatik çökme kurtarma için daha gelişmiş bir motor gerektiriyorsa.

bu senaryolarda MyISAM yerinde aria moturunu kullanabilirsiniz

Bu ilk yazıda MariaDB’deki temel depolama motorları olan InnoDB ve Aria’dan bahsetmek istedim.İlerleyen yazılarda kendi içerisinde bulunan veya sonradan yüklenebilen depolama motorlarınıda inceleyeceğiz.

Şimdilik bu kadar , teşekkürler.