Günümüzde veri boyutları büyüdükçe bu verilerin sorgulanması , barındırılması konusu en önemli konularımızdan biri haline gelmiştir, bu yüzden veriyi sıkıştırma bu sıkıştırdığımız veri üzerinden hızlı sorgulamalar yapabilme oldukça önemlidir, Bazı Column Based OLAP sistemlerde bunun oldukça başarılı yapıldığını görmekteyiz , Bu günlerde gündemde olan Clickhouse , Vertika gibi popüler OLAP veritabanlarında Colun Based sıkıştırma oranlarının oldukça yüksek olduğunu görüyoruz, Oncak Column Based değil RDBMS yapısında oplan Oracle EXADATA Makinesinde bu özellik çok uzun zamandır bulunmaktadır; Hybrid Columnar Compression (HCC).
RDBMS yapılarda normalde veri sıkıştırması bloklar üzerinde yapılmaktadır, Bir blok içerisindeki satırlardaki benzer ifadeler pointer lar ile ifade edilmesi ile sıkıştırma yapılır, ancak satır bazlı ifadelerin benzerlik oracları column bazlı bakıldığında oldukça düşüktür, dolayısıyla column bazlı olarak bu iş yapıldığında sıkıştırma oranları çok yüksek olmaktadır. HCC Exadata da yapıldığı gibi Oracle ZFS Storage larında da yapılabilmektedir. Ayrıca şunlarıda belirtmek lazım, Exadata ortamında HCC olarak tutulan tablolarınızın Dataguard Ortamlarında Exadata kullanmıyorsanız bu dataları uncompress yapmadan okuyamazsınız, Fakat standby ortamlarınızda Exadata veya ZFS Appliance ise iki tafatada HCC olarak tabloları okuyabilirsiniz.
Exadata ortamlarında ayrıca HCC olarak tutulan datalarda , Okuma performansları zaman zaman arttığını görmekteyiz, Hem smart Scan özelliği hem HCC kullanılan OLAP tarzı ortamlarda , HCC yapılarda okuma performanslarının compress edilmemiş halinden daha iyi olduğu görülmekte (I/O rate lerinde düşme). OLTP ortamlarda bazen HCC kullanmak dezavantaj oluşturabilesede (Lock durumları Block compression Lock durumların vb. sorunlara neden olabiliyor DML lerde). OLAP yapılarda oldukça avantajlı bulunmakta , zaten yeni teknoloji OLAP veritabanları ise bu yapıyuı destekleyecek şekilde dizayn edilmektedir.
Sıkıştırma Yöntemlelrine Geçecek Olursak
- BASIC ve OLTP : Mevcutta block bazlı kullanılan sıkıştırma metotlarıdır, Satır bazlı yapılan Exadata ya özel olmayan Tüm oracle yapılarda kullanılabilen Sıkıştırma yöntemleridir.
- Hybrid Columnar Compression (HCC) ;
QUERY { LOW | HIGH }
Bu iki seçenek veri ambarları için oldukça idealdir, High durumu veri tasarrufu çok önemli ise tercih edilir, burada sıkışştırma nın elbette bir maaliyeti vardır bu maaliyetlere katlanılabiliniyorsa oldukça efektif sıkıştırma yöntemleridir.ARCHIVE { LOW | HIGH }
Archive verileri için kullanılır Hıgh olduğunda sıkıştırma maaliyeti max olurken sıkıştırma oranıda max olur.
Bir Tabloyu sıkıştırmadan önce bizim kazancımız ne kadar olur sorusunu merak ediyorsak, bunu DBMS_COMPRESSION paketi ile yaklaşık sıkıştırma oranlarını buradan ne kadar kazanç sağlayacağımız görebilmemizi sağlar, bunun için bizim belirttiğimiz tabloyu yine pakete verdiğimiz compression methodu ile bir örnekleme geçici tablosunu otomatik olarak oluşturup yaklaşık sıkıştırma sonuçlarını çıkarırı ve sonrada geçici tabloyu otomatik olarak drop eder.
Datawarehouse bir compression için ;
CREATE TABLE Table_name (…)
COMPRESS FOR QUERY [LOW | HIGH];
Archive Sıkıştırma için;
CREATE TABLE Table_name(…)
COMPRESS FOR ARCHIVE [LOW | HIGH];
Soradan Tabloları Compress hale getirmek için Alter komutu kullanılabiir ancak bu işlem bundan sonra gelecek datalar için geçerli olacaktır, öncesi için Move operasyonu yapılması gerekir;
ALTER TABLE Table_name COMPRESS FOR QUERY [LOW | HIGH];
ALTER TABLE Table_name COMPRESS FOR ARCHIVE [LOW | HIGH];
Hem compress yapıp hemde HCC yi aktifleştirmek için Move ile birlikte alter yapılabilir;
ALTER TABLE Table_name MOVE COMPRESS FOR QUERY [LOW | HIGH];
ALTER TABLE Table_name MOVE COMPRESS FOR ARCHIVE [LOW | HIGH];
Önemli NOT: Tablodaki compress işlemi move ile yapılırsa , tablodaki indeksler unusable olacaktır. Bu indekslerin rebuild yapılması gerekmektedir.
Bir yanıt yazın