SQL Server 2016 – GZIP COMPRESS ve DECOMPRESS Fonksiyonları
COMPRESS ve DECOMPRESS SQL Server 2016 ile birlikte gelen yeni fonksiyonlardır. Fonksiyon isimlerinde de anlaşılacağı üzere sıkıştırma ve çözme (sıkıştırılan veriyi açma) fonksiyonlarıdır. Bu makalede her iki fonksiyonun kullanımı inceleyeceğiz.
COMPRESS fonksiyonu kendisine verilen veriyi GZIP algoritması ile sıkıştırarak geriye binary veri türü olan Varbinary(max) veri türü dönüşü yapmaktadır.
DECOMPRESS fonksiyonu GZIP algoritması ile sıkıştırılmış veriyi çözmek/açmak için kullanılır. GZIP algoritması ile sıkıştırılan veri DECOMPRESS fonksiyonu ile geri dönüştürme işlemi sonrası yine COMPRESS fonksiyonunda olduğu gibi Varbinary(max) veri türü dönüşü yapmaktadır. DECOMPRESS edilen veriyi ilk haline, sıkıştırılmadan önceki haline dönüştürmek için “explicit conversion“,”Cast” işlemi yapmamız gerekiyor.
COMPRESS ve DECOMPRESS fonksiyonları standart GZIP algoritmasını kullanmaktadır. Uygulama katmanında veriyi sıkıştırıp SQL Server’a gönderebilir, Sql Server 2016 üzerinde sıkıştırılan veri direk veritabanına yazılabilir veya veri decompress edilip veritabanına yazılabilir. Aynı şekilde Uygulama katmanına sql server üzerinden gelen compress edilmiş veri uygulama katmanı üzerinden decompress edilebilir.
Şimdi örnekler üzerinden bu iki fonksiyonun kullanımına geçelim.
[sql]
SELECT COMPRESS(‘Mesut Güneş’)
[/sql]
Şimdi sıkıştırılan veriyi geri dönüştürmek için DECOMPRESS fonksiyonumuzu kullanalım.
[sql]
SELECT DECOMPRESS(0x1F8B0800000000000400F34D2D2E2D5170FF9397FA0F004F3025550B000000)
[/sql]
Sorgu sonucundan da anlaşılacağı gibi DECOMPRESS fonksiyonu da bize binary data döndürdü. Gerçek verimize ulaşmak için sorgu çıktısındaki Binary veriyi cast etmemiz gerekiyor.
[sql]
SELECT CAST(0x4D657375742047FC6E65FE AS VARCHAR(MAX))
[/sql]
Sorgu çıktısında görüldüğü üzere decompress fonksiyonundan gelen verimizi cast işlemin tabi tuttuktan sonra sıkıştırılmamış değerine ulaştık.
Şimdi bir örnek daha yapalım ve makalemizi bitirelim. Bu örnek sorguda tek Select ifadesinde hem Compress hem Decompress fonksiyonlarının kullanımına gözatalım.
[sql]
DECLARE @CompressValue VARCHAR(MAX) =’MESUT GÜNEŞ’
SELECT @CompressValue AS CompressValue,
COMPRESS(@CompressValue) AS CompressedValue,
DECOMPRESS(COMPRESS(@CompressValue)) AS DeCompressedValue,
CAST(DECOMPRESS(COMPRESS(@CompressValue)) AS VARCHAR(MAX)) AS CASTValue
[/sql]