sql server2008 for developers by tarik

56
Sql Server 2008 For Developers Yakup Tarık Kranda Bilgisayar Yüksek Mühendisi

Upload: tarik-kranda

Post on 11-Nov-2014

2.259 views

Category:

Technology


0 download

DESCRIPTION

New platform and development features inside Sql Server 2008

TRANSCRIPT

Page 1: Sql Server2008 For Developers By Tarik

Sql Server 2008 For Developers

Yakup Tarık KrandaBilgisayar Yüksek Mühendisi

Page 2: Sql Server2008 For Developers By Tarik

AJANDA• Hot Add CPU• Transparent Data Encryption• Policy Management• Resource Governor• Data And Backup Compression• Performance Data Collectors• Change Tracking• T-Sql Enhancements• Table Valued Parameters• Xml Type Enhancements• New Date Types• New Spatial Data Types• New Hierarchyid Data Type• Merge Expression• Grouping Sets• Sparce Columns

Page 3: Sql Server2008 For Developers By Tarik

Hot Add CPU• Çalışma zamanında CPU ekleme olanağı.• Windows server ürün ailesinin özelliği.• Sql Server Service Restart ihtiyacı artık yok.

Gereksinimler• 64 bit Win Server 2008 Data Center Edt. ya da Windows Server 2008 Enterprise Edt. • Donanımın desteği• Sql Server 2008 Enterprise Edition Sürümü• RECONFIGURE

Page 4: Sql Server2008 For Developers By Tarik

Transparent Data Encryption• Sql Server 2005 kolon ve tablo seviyesi şifreleme ile geldi.

• Önceleri şifrele ve gönder mekanizması.

• Sql Server 2008 ile tüm db files ve loglar şifrelenebilir.

• Programalama eforu sarfetmeye gerek yok.

• Alınan backup dosyalarıda şifrelenir.

Page 5: Sql Server2008 For Developers By Tarik

Transparent Data Encryption

Ne sağlar?Nasıl çalışıyor?Ne zaman tercih edilmeli?TempDB kullanımını nasıl etkiler?

Page 6: Sql Server2008 For Developers By Tarik

Transparent Data Encryption Örnek

Script

Page 7: Sql Server2008 For Developers By Tarik

Policy Management• Sql Server 2008 ile policy yönetiminde Declarative Management Framework kullanılmaktadır.

• Belirli bir server grubunu tek bir configuration server ayarları ile yönetilebilir.

• Naming conventionlar, logon modları vs. Belirli bir standarta kavuşturulabilir.

•Sql Server Management Studio kolaylığı

Page 8: Sql Server2008 For Developers By Tarik

Policy Management

Uygulama Modları

• On Demand : Manuel olarak, zorlama yok.• On Schedule : Belirli aralıklarla, uyumsuz durumlar loglanır.• On Change – Log Only : Değişiklik olur olmaz, uyumsuz durumlar loglanır.• On Change – Prevent : Değişiklik olur olmaz, uyumsuz durumlar engellenir.

Page 9: Sql Server2008 For Developers By Tarik

Policy Management

Page 10: Sql Server2008 For Developers By Tarik

Policy Management & Server Group Management

Demo

Page 11: Sql Server2008 For Developers By Tarik

Resource Governor• Sistem kaynaklarının veritabanı uygulamaları arasında paylaşımını yönetir.

• Aynı sunucuyu paylaşan mission-critic uygulamaların birbirini ezmesi engellenir.

• Kaynaklar; Resource Pool ve Workload Groups olarak modüllere ayrıştılabilirler.

• Her gelen incoming request Classifier Function tarafından ayrıştırılarak uygun workload group özellikleri ile yeni session açılır.

Page 12: Sql Server2008 For Developers By Tarik

Resource Governor

Demo

Page 13: Sql Server2008 For Developers By Tarik

Data Compression• Verilerinizi sıkıştırarak gereksiz alan kaybından kurtulabilirsiniz. (Örn. int 30000 değeri normalde 4 byte yerine 2 byte ile saklanabilir.)

• Backup dosyalarınızı yedekleme esnasında sıkıştırabilirsiniz. Yetersiz disk alanı engeline çözüm.

• Row Compression ve Page Compression (Row, Prefix ve Dictionary Compression)

Page 14: Sql Server2008 For Developers By Tarik

Data Compression (Page Compression)

Sıkıştırma Öncesi

Prefix Sıkıştırma Sonrası

Dictionary Sıkıştırma Sonrası

Page 15: Sql Server2008 For Developers By Tarik

Data and Backup Compression

Demo

Page 16: Sql Server2008 For Developers By Tarik

Performance Data Collector• Problemleri çözmek ve sistemi incelemek adına Sql Server 2008 ile gelen entegre çözüm aracı.

Gereksinimler

Data Collector Account Tanımı Management Data Warehouse Konfigurasyonu Sql Server Agent Zamanlayıcısı

Page 17: Sql Server2008 For Developers By Tarik

Performance Data Collector

Demo

Page 18: Sql Server2008 For Developers By Tarik

Change Data Capture• Data üzerinde gerçekleşen değişiklikleri eski zamanlarda trigger yöntemiyle yakalıyorduk.

• Sql Server 2008 ile Change Data Capture özelliği trigger kullanımının yerini aldı.

• DDL değişiklikleri de yakalanabilmektedir.

• Asenkron olarak bir process transaction log dosyasını izleyerek geri yönelik değişim bilgisini oluşturur.

Page 19: Sql Server2008 For Developers By Tarik

Change Tracking• Change Data Capture özelliği gibi veri değişim bilgisini izlemekte kullanılır.

• Row un değiştiği bilgisi saklanır, ancak değişimin içeriği depo edilmez.

• Değişen bilgi saklanmadığı için daha az saklama alanına ihtiyaç duyar.

• Değişiklikleri izleyen senkron bir mekanizma ile yürütülür.

Page 20: Sql Server2008 For Developers By Tarik

Change Data Capture

Change Tracking

Page 21: Sql Server2008 For Developers By Tarik

Change Tracking

Demo

Page 22: Sql Server2008 For Developers By Tarik

T-SQL Syntax Enhancements

• Tek adımda tanımlayıp, ilk değer verme DECLARE @i int = 4;

• Birleşik atama operatörleri SET @i += 1;

• Satır yapılandırıcıları DECLARE @t TABLE (id int, name varchar(20)); INSERT INTO @t VALUES (1, ‘Onur'), (2, ‘Necdet'), (3, ‘Tarık');

Page 23: Sql Server2008 For Developers By Tarik

User Defined Table Types

• Artık bir tabloya birden fazla kayıt yerleştirmemiz gerektiğinde N defa yerleştirme scripti çalıştırmamıza gerek yok.

• 1-N ilişkideki tablo girişleri için ideal.

• Artık bu tip işler için kullanıcı tanımlı tablolar var. Bu değişkenler bir kolon tipi olamazlar, sadece nonclustered index içerebilirler, default değerleri olamaz.

Page 24: Sql Server2008 For Developers By Tarik

Table Valued Parameters

• Çoklu kayıt girişi için bir prosedüre parametre olarak kullanıcı tanımlı bir tablo tipi geçebiliriz.

• Bu parametre READONLY olmalıdır.

• Bir kullanıcı tanımlı tablo üzerinde DML manipülasyonu yapamayız.

• Dolayısıyle OUTPUT parametresi olarakta tanımlayamamız.

Page 25: Sql Server2008 For Developers By Tarik

Table Valued Parameters

Demo

Page 26: Sql Server2008 For Developers By Tarik

XML Type Enhancements

• Genişletilmiş Şema Desteği1. Lax Validation2. Date Time tiplerinde Time Zone

validasyon desteği3. Union ve List Tiplerinde validasyon

genişletmeleri

• let anahtar sözcüğü desteği ile atama yapma

• DML Geliştirmeleri

Page 27: Sql Server2008 For Developers By Tarik

Lax Validation

• processContents durumları;

skipstrictlax (yeni)

Page 28: Sql Server2008 For Developers By Tarik

Lax Validation & Union-List Genişletmeleri

Örnek Şema

Page 29: Sql Server2008 For Developers By Tarik

let Anahtar Sözcüğü ve Yeni Insert İfadesi

Demo

Page 30: Sql Server2008 For Developers By Tarik

New Date Types

• Sql Server 2008 ile yeni Date, Time ve DateTimeOffset, DateTime2 veritipleri geldi.

• Önceki sürümlerde; 1753 < DateTime < 9999 arasında Hassasiyet 0,00333 saniye• Sql Server 2008 ile; 0001 < Date, DateTime2 < 9999 Hassasiyet 100 Nanosec.• Hassasiyet ayarı alan kazandırır.• Date ve Time tipleri alan kazandırır.

Page 31: Sql Server2008 For Developers By Tarik

Date / Time Types

DECLARE @t0 TIME(2) = ’10:09:54.1234567’,@t1 TIME = ‘10:09:54.1234567’

10:09:54.1210:09:54.1234567

DECLARE @d3 TIME(7) = SYSDATETIME()WAITFOR DELAY '00:00:01'DECLARE @d4 TIME(7) = SYSDATETIME()SELECT DATEDIFF(millisecond, @d3, @d4)

1000

Page 32: Sql Server2008 For Developers By Tarik

DateTime2 / DateTimeOffset Types

DECLARE @d0 DATETIMEOFFSET = '1983-09-15 19:20:00.1234567 +02:00'SELECT @d0 as ‘İstanbul Zamanı',

SWITCHOFFSET(@d0, +00.00) as 'Londra Zamanı'

Page 33: Sql Server2008 For Developers By Tarik

New Date Types

SQL ODBC OLEDB ADO.NETDATE SQL_TYPE_DATE/SQL_DATE DBTYPE_DBDATE

DateTime

TIME SQL_TIME/SQL_SS_TIME2 DBTYPE_DBTIME/DBTYPE_DBTIME2

TimeSpan

DATETIMEOFFSET SQL_SS_TIMESTAMPOFFSET

DBTYPE_DBTIMESTAMPOFFSET

DateTimeOffset

DATETIME2 SQL_TYPE_TIMESTAMPSQL_TIMESTAMP

DBTYPE_DBTIMESTAMP DateTime

Page 34: Sql Server2008 For Developers By Tarik

New Date Functions

• Sql Server’ ın önceki sürümlerinde varolan DATEADD, DATEDIFF, DATEPART, DATENAME gibi methodlar bu yeni veri tipleri ile genişletilmişlerdir.

Page 35: Sql Server2008 For Developers By Tarik

geography veri tipi• Geodetic (“Yuvarlak Yeryüzü”)

geospatial model• Define points, lines, and areas with

longitude and latitude• Account for planetary curvature and

obtain accurate “great circle” distances

geometry veri tipi• Planar (“Düz Yeryüzü”) geospatial

model• Define points, lines, and areas with

coordinates• Use for localized areas or non-

projected surfaces such as interior spaces

Spatial Data Types

Page 36: Sql Server2008 For Developers By Tarik

Spatial Data Types• Her iki tipte CLR type özelliğindedir, ancak kullanılmaları için CLR enable edilmesine gerek yoktur.

• Veriler binary olarak saklanmaktadırlar, ancak ifade edilirken Open Geospatial Consortium (OGC) nin tanımladığı Well Known Text (WKT) formatı kullanılabilir.

• GML ve Well Known Binary (WKB) de desteklenmektedir.

Page 37: Sql Server2008 For Developers By Tarik

Functions For Spatial Data Types

Page 38: Sql Server2008 For Developers By Tarik

Spatial Indexes• Spatial veri tipi 4 seviye de hücrelere ayrıştırılarak indekslenir.Varsayılan ayarlar ile, Seviye 1, 8x8 hücre, toplam 64 hücre Seviye 2, ilk seviyenin üzerinden 8x8 hücre, toplam 4096 hücre Seviye 3, seviye 2 deki her bir hücre için 8x8 hücre, toplam 262.144 hücre Seviye 4 ise aynı şekilde 3. seviye yi 8x8 hücreye ayrıştırır, toplam 16.777.216 hücre

• Ayrıştırma işleminden sonra mozaik döşeme(tessellation) prosesi başlar ve tamamlanır.

Page 39: Sql Server2008 For Developers By Tarik

Spatial Indexes• Spatial indekslerin varsayılan hücre ayrıştırma işlemi ezilebilir.

LOW : 4x4 = 16 hücreMEDIUM : 8x8 = 64 hücreHIGH : 16x16 = 256 hücre

Page 40: Sql Server2008 For Developers By Tarik

Spatial Veri Tipi

Demo

Page 41: Sql Server2008 For Developers By Tarik

Hierarchyid Data Type• Verilerin tablo üzerinde belirli bir hiyerarşi içerisinde parent-ebeveyn ilişkisi ile saklanabilmesini sağlayan yeni veri tipidir.

• CLR Type özelliğine sahiptir ancak CLR Enabled yapılması gerekmez.

• Hiyerarşi bilgisinin saklanması konusunda eski yöntemlere göre yerden tasarruf sağlanır.

• Çeşitli methodlar ile kolayca oluşturulabilir, izlenebilir.

Page 42: Sql Server2008 For Developers By Tarik

Hierarchyid Data Type• Oluşturma sırasında yardımcı methodlar vardır:

hierarchyid::GetRoot();hierarchyid::GetDescendant(NULL, NULL);

• Gösterim kolaylığı sağlayan methodları vardır: hierarchyid::GetLevel(); hierarchyid::ToString(); hierarchyid::Parse(path);

• İlişkileri izlemek için kullanılan Methodlar vardır: hierarchyid::IsDescendantOf(Node) hierarchyid::GetAncestor(n)hierarchyid::GetReparentedValue(existingNode,

NewNode)

Page 43: Sql Server2008 For Developers By Tarik

Level 2

Level 1

Level 0

Hierarchyid Data TypeA

B E F

C D

Page 44: Sql Server2008 For Developers By Tarik

Hierarchyid Veri Tipi

Demo

Page 45: Sql Server2008 For Developers By Tarik

Merge Expression Dışarıdan gelen bilginin birleştirilmesi için

Stock Quantity

ORCL 150

GOOG 550

MSFT 230

AMZN 100

Stock Quantity

CSCO 500

MSFT 200

GOOG 50

Stock Quantity

ORCL 150

AMZN 150

AMZN -50

MSFT 55

GOOG -50

GOOG 550

MSFT -25

CSCO -500

Source Table(Stock Trading)

Target Table(Stock Holding)

INSERT

UPDATE

Page 46: Sql Server2008 For Developers By Tarik

Merge Expression Çoklu DML operasyonları için tek bir ifade yazma

kolaylığı Kaynak ve hedef arasında kurulan bir join

üzerinden işlem görür

UPDATE TGT SET TGT.quantity += SRC.quantity, TGT.LastTradeDate = SRC.TradeDateFROM dbo.StockHolding AS TGT JOIN dbo.StockTrading AS SRC ON TGT.stock = SRC.stock;

INSERT INTO dbo.StockHolding (stock, lasttradedate, quantity) SELECT stock, tradedate, quantity FROM dbo.StockTrading AS SRC WHERE NOT EXISTS (SELECT * FROM dbo.StockHolding AS TGT WHERE TGT.stock = SRC.stock);

MERGE INTO dbo.StockHolding AS TGTUSING dbo.StockTrading AS SRCON TGT.stock = SRC.stockWHEN MATCHED AND (t.quantity + s.quantity = 0) THEN DELETEWHEN MATCHED THEN UPDATE SET t.LastTradeDate = s.TradeDate, t.quantity += s.quantityWHEN NOT MATCHED THEN INSERT VALUES (s.Stock,s.TradeDate,s.Quantity)

Pre-SQL 2008 SQL 2008

Page 47: Sql Server2008 For Developers By Tarik

Merge Expression• 3 grup şeklinde ayrıştırılır:

WHEN MATCHED – 2 adet olabilir, birisi Delete diğeri Update için, ekstra koşul ile ayrıştırılmalıdır.

WHEN NOT MATCHED [By TARGET] – Sadece 1 adet olabilir, insert edilecek ifadeleri belirlemekte kullanılır.

WHEN NOT MATCHED [By SOURCE] – En fazla 2 adet kullanılabilir, birisi Delete diğeri Update için, ekstra koşul ile ayrıştırılmalıdır.

Page 48: Sql Server2008 For Developers By Tarik

Merge Expression• Varolan tetikleyiciler ve kısıtlar çalışmaya devam eder, tetikleyiciler bir kere tetiklenir.

• Merge işlemi transactional bir işlemdir, açık olarak transaction açmaya gerek yoktur.

• On ifadesi üzerinde primary key veya indeks kolon tanımlamaları yapmak performans artışı sağlar.

• Tablo hintlerine izin verilir.

Page 49: Sql Server2008 For Developers By Tarik

Merge İfadesi

Demo

Page 50: Sql Server2008 For Developers By Tarik

Grouping Sets Clause Tek bir ifade içinde çoklu gruplama Farklı gruplama işlemlerinin UNION ALL ile

birliştirilmesini basitleştirir.

SELECT customerType,Null as TerritoryID,MAX(ModifiedDate)FROM Sales.Customer GROUP BY customerTypeUNION ALLSELECT Null as customerType,TerritoryID,MAX(ModifiedDate)FROM Sales.Customer GROUP BY TerritoryID order by TerritoryID

SELECT customerType,TerritoryID,MAX(ModifiedDate)FROM Sales.Customer GROUP BY GROUPING SETS ((customerType), (TerritoryID)) order by customerType

Pre-SQL 2008 SQL 2008

Page 51: Sql Server2008 For Developers By Tarik

Grouping Sets İfadesi

Demo

Page 52: Sql Server2008 For Developers By Tarik

Sparce Columns• NULL değer içermesi olasılığı çok fazla olan kolonlar sparce kolonlara dönüştürülerek yerden tasarruf sağlanır.

Create Table CustomerInfo(

CustomerID int PRIMARY KEY,CustomerName varchar(100) NOT NULL,LocationCount int NULL

)1000 kayıt için, sadece 200 adet LocationCount tanımlandıysa, toplam 1000 x 4 = 4000 byte harcanır.

Page 53: Sql Server2008 For Developers By Tarik

Sparce Columns• NULL değerler için kazanım sağlanırken Non-NULL değerler için yer kaybı vardır.

Create Table CustomerInfo(

CustomerID int PRIMARY KEY,CustomerName varchar(100) NOT NULL,LocationCount int NULL SPARSE

)

200 x (4 + 4 byte overhead) = 1600 byte + 0 byte = 1600 byte < 4000 byte

Page 54: Sql Server2008 For Developers By Tarik

Sparce Columns• Ne zaman kullanılmalı?• Default Değer atanamaz.• ROWGUID olarak tanımlanamaz, IDENTITY kolon olamaz.• GEOGRAPHY, GEOMETRY, TEXT, NTEXT, IMAGE, TIMESTAMP, Kullanıcı Tanımlı Tipler, VARBINARY(MAX), FILESTREAM tipleri haricindeki tipleri destekler.• Tablo Tipleri sparse kolon içeremez.• Sparse kolona sahip bir tablo sıkıştırılamaz.• Merge Replication desteklemez, ancak Change Tracking, Change Data Capture, Transactional Replication destekler.

Page 55: Sql Server2008 For Developers By Tarik

Soru & Cevap