16 Temmuz 2019 Salı

FILESTREAM DATA NEDİR?

Uygulamanızda unstructured yani yapısal olmayan veriler kullanılıyorsa bunların daha kolay yönetilmesi ve performanslı olması için SQL Server 2008 ile gelen bir özelliktir. SQL Server'da insanların aklına genelde veri denildiği zaman ilk gelen şey metin'ler olmaktadır. Fakat şunu unutmamak gerekir ki veri dediğimiz şey sadece klavyeden tuşlayarak girdiğimiz şeyler değil. Özellikle günümüzü düşünürsek resim, video, doküman gibi şeyleri de veritabanı dosyaları içerisinde saklamak isteyebiliriz. Bu noktada FileStream bizim işimizi kolaylaştıracak özelliklerden biri. FileStream ile dosyaları yapısal ve yapısal olmayan veriler arasında transactional bütünlüğü bozmadan kullanmamıza olanak verecektir.

Peki 2008 den önce bu tarz dataları SQL Server'da tutamıyor muyduk?  Varbinary data tipi aslında bu tarz objeleri veritabanı objelerinin içerisinde saklayabilmek için var. SQL Server'da FileStream özelliğini aktif etmeden de Varbinary data tipini kullanarak bu tarz nesneleri saklayabilirsiniz ki zaten SQL Server default kurulumda Bu özellik disable durumda gelmektedir. Eğer siz kullanacaksınız bunu aktif etmeniz gerekir. İşin aslında güzel yanı Microsft'un Filestream özelliği için yeni bir data tipi geliştirmek yerine mevcutta zaten olan varbinary data tipini kullanarak fakat bu data tipi üzerinde farklı bir çalışma yapısı geliştirerek FileStream özelliğini kurgulamıştır.

Peki ne durumda bu özelliği aktif edip kullanmamız gerekir?

  • Microsoft, Paul Randal ve bu alandaki diğer gurular depolamak istediğiniz dosyaların boyutu eğer 1 mb 'dan fazlaysa bu durumda bunu veritabanı dosyalarında saklamak yerine FileStream özelliğinin kullanılması gerektiği söylenmektedir.
  • Saklanacak olan dosyalarda okuma performansını arttırmak için.
  • Veritabanı dosyalarında öngürülemeyen ve çok hızlı büyümelerin önüne geçmek için kullanılabilinecek bir özelliktir. Bu büyümeler data file dışında olacağı için .mdf, .ndf gibi veritabanı dosyalarının yönetimi kolaylaşacaktır.
Filesystem hangi konularda Filestream yerini tutamaz.

Filesystem ile kurumunuzun bütün belgelerini klasörler içerisinde düzenli olarak ve üstelik veritabanınız şişmeden saklayabilirsiniz. Bu anlamda harika bir yöntem. Fakat depolama ve performans anlamında oldukça tatminkar bir çözüm olsada yol biraz ileride ikiye ayrılıyor ve bir seçim yapmanız gerekiyor. Yukarıda da bahsettiğim gibi ilişkisel veritabanın özelliklerinden olan transaction yapısını belgeler üzerinde de kullanmak isterseniz yada point in time ile nokta atışı belli bir zaman dönmek isterseniz belgeler ne olacak. Çünkü Filesytem kullandığınızda burada Transaction log'larnız olmayacak. Haliyle dosyalarınız için COMMIT yada ROLLBACK de YOK.

Backup durumunu ele alırsak hem veritabanızın hemde FileSystem'in ayrı ayrı backup'larını almak zorundasınız ki Filesystem ile point in time olarak restore edebilmeniz çok da mümkün değil. Dosyalarınız veritabanın da tuttuğunuz zaman sadece SQL Backup'ı ile yedeklemek mümkün. Tabi bu durum her ne kadar kulağa çok hoş gelsede veritabanı boyutu arttığı için Backup ve restore süresi uzayacaktır.

Nihai olarak ihtiyaçlarınız ve beklentileriniz doğrultusunda doğru kullanım değişecektir. Mevcut durum ve beklentilerin uçtan uca değerlendirilerek en optimum seçenek tercih edilmelidir.














0 yorum :

Yorum Gönder