View
2.262
Download
0
Category
Tags:
Preview:
DESCRIPTION
New platform and development features inside Sql Server 2008
Citation preview
Sql Server 2008 For Developers
Yakup Tarık KrandaBilgisayar Yüksek Mühendisi
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
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
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.
Transparent Data Encryption
Ne sağlar?Nasıl çalışıyor?Ne zaman tercih edilmeli?TempDB kullanımını nasıl etkiler?
Transparent Data Encryption Örnek
Script
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ığı
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.
Policy Management
Policy Management & Server Group Management
Demo
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.
Resource Governor
Demo
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)
Data Compression (Page Compression)
Sıkıştırma Öncesi
Prefix Sıkıştırma Sonrası
Dictionary Sıkıştırma Sonrası
Data and Backup Compression
Demo
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ı
Performance Data Collector
Demo
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.
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.
Change Data Capture
Change Tracking
Change Tracking
Demo
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');
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.
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.
Table Valued Parameters
Demo
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
Lax Validation
• processContents durumları;
skipstrictlax (yeni)
Lax Validation & Union-List Genişletmeleri
Örnek Şema
let Anahtar Sözcüğü ve Yeni Insert İfadesi
Demo
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.
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
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ı'
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
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.
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
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.
Functions For Spatial Data Types
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.
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
Spatial Veri Tipi
Demo
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.
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)
Level 2
Level 1
Level 0
Hierarchyid Data TypeA
B E F
C D
Hierarchyid Veri Tipi
Demo
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
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
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.
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.
Merge İfadesi
Demo
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
Grouping Sets İfadesi
Demo
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.
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
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.
Soru & Cevap
Teşekkürler
Y. Tarık Krandatarik@yazilimkulubu.com
Recommended