SharePoint 2013 Remote BLOB Storage

 

                 BLOB (binary large object), veri tabanında yer alan büyük boyutlu yapılandırılmamış verilerdir. Veri tabanı içerisinde ona atanmış tüm metadata lar ile tutulur. Bu da veri tabanının boyutunun artmasını sağlamaktadır. Tipik olarak BLOB verisi Word dokümanlarını, video dosyalarını vb. lerini kapsar ve bunlar büyük boyutlarda olabilir. Bu dosyaların dışarıda tutulması SQL server performansında arttıracaktır.

RBS (Remote BLOB Storage)  BLOB verisinin MS SQL server dışında tutulmasını sağlar. BLOB için meta data MS SQL server da saklanırken BLOB verisi uzak bir lokasyonda saklanır.

RBS, büyük boyutlu dosyaları sharepoint için sorunsuz bir şekilde içerik veri tabanı dışında tutar. Veriye erişme ve saklama alanı için oldukça kullanışlıdır. Verileri daha ucuz disklerde tutabilir ve daha az IOPS sunan disk alanlarına koyabiliriz (veri saklamak için daha düşük kapasiteli disklerin kullanımı vb.).

Remote BLOB uygulamamızı MS SQL 2012 üzerinde yapacağız.

Öncelikle SharePoint yapımıza hizmet eden MS SQL 2012 kurulu sunucumuzda “SQL Server Configuration Wizard” ı açıyoruz ve “SQL Server” hizmetinin özelliklerine geliyoruz.


 

Remote BLOB Storage uygulaması FILESTREAM i kullandığı için öncelikle bu özelliği aktif hale getiriyoruz. Windows paylaşım ismi olarak instance ismimizi kullanıyoruz.


 

MS SQL Server yönetim aracımızı açıyoruz. Instance seçili iken “New Query” seçeneğini seçiyoruz.


 

Aşağıdaki kodu yazıp çalıştırıyoruz.

EXEC sp_configure filestream_access_level, 2 

RECONFIGURE


 

Daha sonra SharePoint üzerinde yer alan web uygulamamızın kullandığı veri tabanını seçip bazı sorgular çalıştırmamız gerekmektedir.

Bu makalede varsayılan olarak yaratılan WSS_Content veri tabanı kullanılmıştır. Farklı veri tabanları için sorgular içerinde değişiklik yapmayı unutmayınız.

İlk olarak aşağıdaki sorgu ile bir master key oluşturuyoruz. (son bölümde yer alan parolayı kendinize göre değiştirebilirsiniz).

if not exists (select * from sys.symmetric_keys where name = N’##MS_DatabaseMasterKey##’)

     create master key encryption by password = N’Admin Key Password 1234qqqQ’

 


 

RBS için yeni bir dosya grubu yaratıyoruz. (Veri tabanı ismini kendi ayarlarınıza göre değiştirebilirsiniz)

if not exists (select groupname from sysfilegroups where groupname=N’RBSFilestreamProvider’)

      alter database WSS_Content

      add filegroup RBSFilestreamProvider contains filestream

 


 

Son olarak ise BOBL verisini duracağı yeri belirliyoruz. Ben örnek uygulama için “c” dizininden bir yer belirledim. Gerçek uygulamalarda hızlı disklerin olduğu farklı bir dizin seçilmelidir.

alter database [WSS_Content]

add file (name = RBSFilestreamFile, filename= ‘c:SPBlobStorage’)

      to filegroup RBSFilestreamProvider


 

Bu aşamadan sonra MS SQL Server 2012 özellik paketlerinden RBS uygulamasını kullanmamız gerekmektedir.

Aşağıdaki bağlantıyı açıyoruz:

http://www.microsoft.com/en-us/download/details.aspx?id=29065

 


 

 

 

“Install Instructions” bölümünde yer alan RBS paketlerinden bize uygun olanını SQL Server yüklü olan sunucumuza indiriyoruz. Bizim uygulamamızda X64 paketi kullanılmıştır.


 

Komut satırını yönetici modunda açıp programın indirdiğimiz klasöre geliyoruz ve aşağıdaki komutu çalıştırıyoruz.

 

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi

TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY

DBNAME="WSS_Content”

DBINSTANCE="SQLSPSQL

FILESTREAMFILEGROUP=RBSFilestreamProvider

FILESTREAMSTORENAME=FileStreamStore  

Komutu tek satır halinde yazmanız ve DBNAME ile DBINSTANCE bölümlerini kendi yapınıza göre değiştirmeniz gerekmektedir.


 

Bu aşamadan sonra yapınızda yer alan tüm SharePoint Web Front End ve SahrePoint Applicaitons sunucularınızda bu işlemi tekrarlamanız gerekmektedir. Tek fark bu sunucularda komutu aşağıdaki gibi vermelisiniz.

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi DBNAME="WSS_Content" DBINSTANCE="SQLSPSQL" ADDLOCAL="Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer"


 

Bütün işlemleri doğru bir şekilde yaparsanız eğer veri tabanızın (bizim uygulamamızda WSS_Content) altında “mssqlrbs” ismi ile başlayan tablolar yaratılacaktır.


 

Son olarak SharePoint 2013 sunucumuzda “SharePoint 2013 Management Shell” i açıyoruz.

Aşağıdaki komutları vererek RBS özelliğini veri tabanımızda aktif hale getiriyoruz.

$a = Get-SPContentDatabase -WebApplication “Sharepoint – 80”

$rbss = $a.RemoteBlobStorageSettings

$rbss.Installed()

$rbss.Enable()

$rbss.SetActiveProviderName($rbss.GetProviderNames()[0])

$rbss

 


 

NOT: Kendi web uygulamanızı ilk satırda yer alan WebApplication komutundan sonra belirtmeyi unutmayınız.

 

Bu son işlemle de RBLOB uygulaması SharePoint yapınız için aktif hale gelmiş olmaktadır. Artık sitenize eklenen içerik MS SQL server sunucunuz da RBLOB için belirlediğiniz alanda da saklanacaktır.

RBLOB alanı ilk yaratıldığında yaklaşık 4 kb lık bir yer kaplar.


 

Sayfamıza dosyalar eklendikçe bu boyut artacaktır.


 

RBLOB dizinimiz de de dosyalar oluşacaktır.


 

Önemli Not: Eğer RBLOB uygulamasından sonra SharePoint sayfanıza dosya eklerken hata alıyorsanız web uygulamanızın Application Pool hesabına SQL server içerik veri tabanınız da “dbowner” yetkisini verin.

 

RBS nin kötü yanları ise update, backup, restore ve migrate gibi işlemleri yavaşlatmasıdır. Ayrıca FILESTREAM kullanımı da sisteme ek yük getirir.

 

Kaynaklar:

http://technet.microsoft.com/en-us/library/ff628583.aspx

http://technet.microsoft.com/en-us/library/ee748631.aspx

http://technet.microsoft.com/en-us/library/ee748638.aspx

 

 

              

 

Paylaş

Leave a Reply

Your email address will not be published. Required fields are marked *