SQL Server 2016 – Stretch Database

SQL Server 2016 ile birlikte hem Data Platform hem de Business Intelligence alanlarında Performans, Güvenlik, Yüksek Erişilebilirlik, Cloud ile Hibrit çalışma alanlarında birçok önemli yenilik ve geliştirmeler geldi.

Bu yazımda bahsetmiş olduğum yeni geliştirmelerden ve yeniliklerden olan Microsoft Cloud Hybrid Solutions altında bulunan Stretch Database yeniliğine beraber bir göz atacağız.

Stretch Database Nedir Nasıl Kullanılır?

Sql Server 2016 ile birlikte gelecek olan yeniliklerden Stretch database geçmişe ait çok fazla sorgulama yapmadığımız verilemizi Azure SQL Veritabanı üzerine arşivlememize yarayan önemli yeniliklerden biri olarak karşımıza çıkıyor.

Peki Stretch Database bize ne gibi faydalar sağlıyor ve ne zaman kullanmalıyız?

Cold Data olarak tabir ettiğimiz artık üzerinde değişiklik yapılmayan historical verilerimizi Azure Veritabanı üzerine arka planda sessiz sakin ve güvenli şekilde aktarmamıza yarıyor.

Bu aktarım depolama maliyetlerini düşürdüğü gibi Hot data olarak tabir ettiğimiz aktif verilerimizin sorgulanmasında da performans kazanımları sağlıyor. Belli dönemlerde network ihtiyaçlarınız doğrultusunda Stretch Database özelliğini deaktif edebilir ve ağınızı maximum performansta kullanmaya devam edebilirsiniz.

Bu doğrultuda

  • Sıklıkla sorgulamadığınız geçmişe ait verileriniz varsa
  • veritabanınız kontrolsüz ve hızlı bir şekilde büyümeye devam ediyorsa
  • günlük maintenance işlemleri için backup süreleriniz çok uzun sürmeye başladıysa
  • SLA ler doğrultusunda backup – restore işlemlerine dahil edemediğiniz büyük veriler barındıran tablolar bulunuyorsa

Stretch Database yeniliğini kullanmak için düşünmeye başlayabilirsiniz. Yani kısacası fazla tabloya sahip olmayan fakat üzerinde büyük verilerin bulunduğu (milyardan fazlaca ) sürekli işlem halindeki bir veritabanını Stretch leyebilirsiniz. J

StretchDB1

Stretch Database yeniliğini kullanabilmek için hem data tiplerinde hemde bazı bileşenlerde kısıtlamalar olduğunu belirteyim. Eğer aşağıdaki özellikler ve datatiplerini kullanıyorsanız Stretch Database yeniliği ihtiyaçlarınızı karşılamayacaktır.

Data tiplerindeki kısıtlamalar:

  • filestream
  • timestamp
  • sql_variant
  • XML
  • geometry
  • geography
  • hierarchyid
  • CLR user-defined types (UDTs)

Desteklenmeyen özellikler:

  • Column Set
  • Computed Columns
  • Check constraints
  • Foreign key constraints that reference the table
  • Default constraints
  • XML indexes
  • Full text indexes
  • Spatial indexes
  • Clustered columnstore indexes
  • Indexed views that reference the table

Ayrıca güvenlik tarafından bahsedecek olursak Stretch Database özelliğini aktif edecek kullanıcı db_owner grubuna dahil olmalı ve CONTROL DATABASE yetkilerini de elinde barındırmalıdır.

Stretch Database özelliğini aktif edebilmek için öncelikle aşağıda belirttiğim kodları kullanarak SQL Server üzerinde Stretch Database özelliğini aktif etmeniz gerekiyor.

USE [master]
GO EXEC sp_configure 'remote data archive', '1';
RECONFIGURE;
GO

SQL Server üzerinde Stretch Database özelliğini aktif hale getirdikten sonra artık veritabanlarımız için Stretch Database özelliğini aktif edebiliriz. Öncesinde veritabanımıza bir tablo ekleyerek içerisine birkaç veri giriyoruz:

use StretchDatabase
go
create table VeriYonetimi</em>
(
ID int identity(1,1),
Ad nvarchar(50),
Soyad nvarchar(50)
)
go
insert into VeriYonetimi
select 'Yusuf','Boğatepe'
union all
select 'Şeydanur','Sandıkçı'
union all
select 'Mustafa', 'Acungil'
union all
select 'Abdullah', 'Altıntaş'
union all
select 'Abdullah', 'Kise'
union all
select 'Batuhan', 'Karacoban'
union all
select 'Özgür','Erecekler'

Verilerimizi girdikten sonra Stretch Database özelliğini aktif ediyoruz.

DatabaseStretchEnable

Stretch Database yeniliğini aktif edebilmeniz için güvenlik amacıyla öncelikle bir Database Master Key oluşturmanız gerekiyor Wizard üzerinden bu şifreyi belirledikten sonra bir sonraki ekranda hangi tablolar üzerinden Stretch özelliğini aktif etmek istediğinizi seçiyorsunuz. Az önce oluşturduğumuz tablomun sol tarafındaki kutucuğu seçerek işlemlerime devam ediyorum.

Tables

Tablo seçim ekranından sonra eklemek istediğiniz tablonuzun veri tabanının uygunluğunu kontrol işlemi gerçekleşiyor. Next diyerek devam ediyoruz. Artık Azure hesabımıza giriş yapacağımız ekran karşımıza çıkıyor.

Eğer daha oturum açma ekranı gelmeden Oturum Açılamıyor gibi bir hatayla karşılaşırsanız Internet Explorer üzerinden Ayarlar’a giriş yaptıktan sonra Gizlilik(Privacy) tabında InPrivate ve Popup Blocker özelliklerini kapatarak bu hatayı atlatabilirsiniz.

Giriş işleminizi gerçekleştirdikten sonra size uygun Azure Lokasyonunu seçerek Yeni bir Azure SQL Database Server oluşturabilir yada hali hazırda zaten kullandığınız bir server üzerinden devam edebilirsiniz. Ben yeni bir server ile işlemlerime devam ediyorum.

SIGNINAZURE

Bu ekranda Azure SQL server bağlantısu için kullanıcı bilgilerini tanımlıyoruz. Eğer Active Directory’de tanımlı bir service account ile Stretch Database konfigurasyonu yapmak isterseniz Service Account bölümünün hemen altındaki kutucuğu aktif hale getirmeniz gerekiyor. En son olarak ağ üzerinden Azure Database e erişim için kullanılacak gerekli public ip aralıklarını belirleyerek geçiş izinlerini de Firewall kuralı olarak oluşturduktan sonra bir sonraki ekranda Finish ile işlemlerimizi bitiriyoruz. Eğer bir hatayla karşılaşırsanız hatanın detaylarına hata ekranının hemen altındaki linke tıklayarak erişebilirsiniz.

COMPLETED

Şimdi Azure Portal aracılığıyla Stretch veritabanımızın kontrolünü sağlayalım.

AzureCheck

Veritabanımıza SQL Server Management Studio üzerinden bağlanmak için Connection bilgilerini alalım.

ConnectToAzure

Bağlantı kurduktan sonra SSMS üzerinde artık Azure Veritabanımıza bağlıyız Veritabanımızı görebiliyoruz ve tablomuzun buraya yüklendiğini de görebiliyoruz.

ObjectExplorerAzure

Şimdi veriyi hem Lokal hem de Azure üzerinden sorgulayıp kontrol edelim.

Önce Lokal tabloyu Sorgulayalım

Onpremise Kontrol

Şimdi de Azure tarafını sorgulayalım

Azure Kontrol

Gördüğünüz üzere Azure üzerinde sorguladığımda batchID ile birlikte geliyor. Her bir batch işlemi bir ID’ye sahip olarak ekleniyor. Şimdi yeni bir tablo oluşturarak bu tabloyu da Stretch leyelim ve 3 adet batch yollayarak Azure üzerinde kontrollerini sağlayalım. İlk olarak tablomuzu oluşturuyoruz.

create table SQLVNEXT
(
ID int identity(1,1),
Ad nvarchar(50),
Soyad nvarchar(50)
)

Daha sonra Stretch özelliğini aktif ediyoruz. Enable dedikten sonra iki Next işlemiyle Azure tarafına eklemiş oluyoruz. Şimdi biraz farklı batchler içerisinde veri girişi yapalım

TABLESTRECTH

insert into SQLVNEXT --BATCH 1
select 'Yusuf','Boğatepe'
union all
select 'Şeydanur','Sandıkçı'

select * from SQLVNEXT

insert into SQLVNEXT --BATCH 2
select top 10 [FirstName],[LastName] FROM [AdventureWorks2012].[Person].[Person]

select * from SQLVNEXT

insert into SQLVNEXT --BATCH 3
select top 20 [FirstName],[LastName] FROM [AdventureWorks2012].[Person].[Person]

select * from SQLVNEXT

şimdi azure tarafında sorgulayarak kontrolünü sağlayalım.

BATCHES

Şimdi aşağıdaki sorguları çalıştırarak verilerimiz şuanda gerçekten nerede tutuluyor görelim.

İlk olarak Local tarafı sorgulayalım:

sp_spaceused @objname = 'dbo.SQLVNEXT', @mode = N'LOCAL_ONLY'
--Output:
--name             rows  reserved  data   index_size  unused
--dbo.SQLVNEXT     0     16 KB     8 KB   8 KB        0 KB

Şimdi Azure tarafını sorgulayalım:

sp_spaceused @objname = 'dbo.SQLVNEXT', @mode = N'REMOTE_ONLY'
--Output:
--name             rows  reserved  data   index_size  unused
--dbo.SQLVNEXT     32    32 KB     8 KB   24 KB       0 KB

Gördüğünüz gibi LOCAL_ONLY olarak çalıştırdığımızda satırlarımız 0 olarak geri dönüyor. REMOTE_ONLY olarak çalıştırdığımızda satır sayımız 32 olarak geri dönüş sağlıyor. Bu sayede ne kadar verimiz şuanda aktarıldığını net bir şekilde görebiliyoruz.

Bunun dışında migration işlemlerini ve hangi veritabanlarının Stretch lenmiş olduğunu görmek için iki adet DMV bulunuyor.

Select * from sys.dm_db_rda_migration_status

select * from sys.remote_data_archive_databases

Ek bir bilgi:

SQL Server 2016 CTP 2.4 versiyonuyla beraber hala veri silme ve güncelleme işlemleri kabul edilmiyor. Bir satırı silme veya güncellemeye kalktığınızda karşınıza şu şekilde bir hata gelecektir.

Update and delete of rows eligible for migration in table ‘SQLVNEXT’ is not allowed because of the use of REMOTE_DATA_ARCHIVE.

Ayrıca güzel bir özellik olarak Microsoft, SQL Server 2016 Upgrade Advisor ile Stretch Database Advisor özelliğini kullanarak veritabanlarınıza bir göz atıp size önerilerde bulunuyor. Kullanımı çok basit bir arayüze sahip araçtır. Aşağıda adımlarla anlattım.

Advisor’a şu linkten ulaşabilirsiniz:

https://www.microsoft.com/en-us/download/details.aspx?id=48119

Güncelleme 14 Ekim 2016:

Advisor artık deprecated durumda ve Microsoft bu ürünü Data Migration Assistant adıyla farklı bir ürün olarak sunmakta. Aşağıdaki linkten erişebilirsiniz.

https://www.microsoft.com/en-us/download/details.aspx?id=53595

Sql Server advisor

Sql Server advisor2

Sql Server advisor3

Reklamlar

Etiketler:, , , , , , , ,

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: