Ders 9 - SQL Server 2014`e Giriş - Altan MESUT

Download Report

Transcript Ders 9 - SQL Server 2014`e Giriş - Altan MESUT

Veri Tabanı Yönetim Sistemleri 1
Ders 9
Microsoft SQL Server 2014'e Giriş
Yrd. Doç. Dr. Altan MESUT
Arş. Gör. Emir ÖZTÜRK
Trakya Üniversitesi
Bilgisayar Mühendisliği Bölümü
MS SQL Server
 İlk sürüm olan SQL Server 1.0, OS/2 işletim sistemi
için 1989 yılında Sybase ve Ashton-Tate ile birlikte
Microsoft tarafından piyasaya sürülmüştür. Daha
sonra Sybase tarafından Microsoft’a satılmıştır.
 Microsoft'un Jet veritabanı moturunu kullanan
dosya-paylaşımı temelli Access'ten farklı olarak, SQL
Server istemci/sunucu tabanlı bir ilişkisel veritabanı
yönetim sistemidir.
 Sorgu dili olarak ANSI SQL’in yanında, prosedürel
programlama mantığı içeren Transact-SQL (T-SQL)
de kullanmaktadır.
MS SQL Server Yapısı
Access vs. MS SQL Server:
Özellikler
Özellik
Access 2013
Sql Server 2014
Tablo
İlişkisel
İlişkisel ve Geçici
View
Var *
Var
Transaction Log
Yok
Var
Windows NT Güvenliği ile Entegrasyon
Yok
Var
Kullanıcı Yönetimi
Yok
Var
Replikasyon
Yok
Var
Bölümleme (Partitioning)
Yok
Var
Prosedür & Fonksiyon
Var *
Var
Trigger
Var *
Var
* Access 2010 ve sonrasında TABLO ARAÇLARI / TABLO Sekmesinde "Etkinliklerden
Önce" ve "Etkinliklerden Sonra" gruplarında bulunan makro türü yapılar Trigger
yerine kullanılabilir. Prosedür ve Fonksiyon yerine de "Adlandırılmış Makrolar"
kullanılabilir. View ise Access'teki Sorgu nesnesine denk gelir.
Access vs. MS SQL Server:
Sınırlar
Özellik
Access 2013
SQL Server 2014
Veritabanı Büyüklüğü
2 GB
524.272 TB *
Tablo Büyüklüğü
2 GB
524.272 TB
Kayıt Büyüklüğü
16 MB
-
Nümerik Değer Büyüklüğü
32 bit
126 bit
BLOB / CLOB Büyüklüğü
64 KB / 1 GB **
2 GB
Tablo Adı Büyüklüğü
64
128
Sütun Adı Büyüklüğü
64
128
Şifre Büyüklüğü
14
128
Bir Tablodaki Sütun Sayısı
255
30.000
Bir Sorgudaki Tablo Sayısı
32
-
* 32 767 dosya x 16 TB maksimum dosya büyüklüğü
** 64 KB (memo alanı), 1 GB (OLE Nesnesi alanı)
Access vs. MS SQL Server:
Veri Türleri
Tür
Access 2013
Sql Server 2014
Metin
Short Text, Long Text
char, varchar, nchar, nvarchar, sysname,
text, ntext,
Sayı
Number, Currency,
AutoNumber
smallint, int, bigint, tinyint, decimal,
numeric, float, real, money, small money
Tarih Saat
Date/Time
date, time, datetime, datetime2,
smalldatetime,
Bool
değer
Yes/No
bit, binary, varbinary
Diğer
OLE Object, Hyperlink,
Attachement
geography, geometry, image, xml
Ana Sürümler
 Enterprise
 En üst sürümdür.
 Veri merkezleri için geliştirilmiştir.
 Veri merkezi için gereken bileşenleri ve kritik iş yüklerinin
yönetilmesi için servisleri içerir.
 Business Intelligence
 Şirketler için geliştirilmiş sürümdür.
 Görselleştirme araçları ve tarayıcı üzerinden veriye erişim gibi
özellikler içerir.
 Standard
 Küçük organizasyonların kullanımına uygundur.
 Basit veri yönetimi, geliştirme araçları ve bulut desteği içerir.
Özelleştirilmiş Sürümler
 Web
 Server maliyetinin minimum olduğu sürümdür.
 Bu sebeple web sunucuları için uygundur.
 Developer
 Enterprise’ın tüm özelliklerini içerir.
 Yalnızca geliştirme ve test aşamaları için lisans sağlar.
 Express
 Giriş seviyesi sürümdür.
 Masaüstü uygulamalar ve küçük serverlar için uygundur.
Servisler: Replikasyon
 Verilerin kopyalanması ve veritabanı nesnelerinin senkronize edilmesi
için kullanılır.
 Yayıncı – abone sistemi ile çalışır. Değişiklikler yayıncıdan abonelere
gönderilir.
 Sql server üç farklı replikasyon desteği sunar.
 Transaction replication
 Her transaction’da abone veritabanları da senkronize edilir.
 Veritabanları neredeyse gerçek zamanlı olarak senkronize edilir.
 Merge replication
 Yayıncı ve abonedeki değişiklikler takip edilir ve periyodik olarak iki yönlü
senkronizasyon gerçekleştirilir.
 Eğer aynı veri üzerinde her iki tarafta da değişiklik yapıldıysa çakışma oluşur.
 Çakışma el ile düzeltme veya önceden belirlenmiş bir kuralın uygulanması
yoluyla çözülebilir.
 Snapshot replication
 Tüm veritabanının bir kopyası abonelere gönderilir.
 Son değişiklikler takip edilmez.
Servisler: Analiz
 Analiz servisleri SQL Server’a OLAP ve veri madenciliği
özellikleri sağlar.
 OLAP motoru MOLAP, ROLAP, HOLAP desteği sunar.
 Küp verisine ise MDX veya LINQ sorguları ile erişilebilir.
 Analiz servisleri veri madenciliği için çeşitli algoritmalar
içermektedir:







Karar ağaçları
Kümeleme algoritmaları
Naive Bayes algoritması
Zaman serileri analizi
Sıra kümeleme algoritmaları
Regresyon analizi
Yapay sinir ağları
Servisler: Raporlama
 Veritabanından elde edilen veri için rapor
oluşturma araçlarıdır.
 Web arayüzünden yönetilir.
 Raporlar Business Intelligence Development Studio
ve Visual Studio’nun birlikte kullanılması ile
oluşturulabilir.
 Raporlar RDL dosyaları olarak oluşturulabilir. Daha
sonra bu dosyalar Excel, PDF, CSV, XML, TIFF ve
HTML formatına dönüştürülebilir.
Servisler: Bildirim
 Veriye bağlı bildirimler oluşturularak abonelere
iletilir.
 Bir abone herhangi bir olay veya transaction olması
durumunda bildirim isteyebilir.
 Bu olay gerçekleştirildiğinde bildirim servisleri üç
farklı yöntemden birini kullanarak aboneye
gerçekleşen olaydaki değişikliği bildirir.
 SMTP
 SOAP
 Dosya sistemi içerisinde bir dosya oluşturmak
Servisler: Bütünlük
 Verinin bir yerden diğerine, belirli kurallar dahilinde
taşınması için kullanılır.
 Grafik arayüz desteği ile





Farklı kaynaklardan veri alımı
Veri sorgulama
Veri değiştirme
Veri birleştirme
Tekrarlı verileri temizleme
işlemleri gerçekleştirilebilir.
 Bu işlemlerden sonra veri istenilen yere aktarılır.
Servisler: Full Text Search (FTS)
 Herhangi bir yapı ile saklanmayan text verisi için
özelleştirilmiş indeksleme ve sorgulama işlemlemleri
sağlar.
 Karakter tabanlı herhangi bir sütun için index
oluşturulabilir.
 Oluşturulan index ile text verisi içeren sütunda LIKE
işleminde olduğu gibi kelime arama işlemi
gerçekleştirilebilir. Fakat FTS, LIKE komutuna göre daha
hızlı çalışmaktadır.
 Bire bir arama dışındaki aramayı da destekler. Bunun
için bulunan kelimeler için 0-1000 arası bir Rank değeri
hesaplanır. Yüksek rank daha doğru eşleşme anlamına
gelir.
SQL CLR
 SQL CLR .Net entegrasyonu sağlamaktadır.
 SQL Server, .Net Framework runtime’larını
SQLOS’un içerisinde barındırır.
 SQL CLR ile prosedür ve tetikleyiciler herhangi bir
.Net dili ile yazılabilir.
 Yazılan kod CLI assembly’ye derlenir ve
veritabanında kaydedilir.
 Derlenmiş bu kod herhangi bir prosedür gibi
çalıştırılabilir.
T-SQL
 T-SQL, SQL Server üzerinde sorgu oluşturmak için
kullanılır.
 SQL’den farklı olarak prosedürel programlamayı,
yerel değişkenleri, string, tarih ve matematik
fonksiyonlarını içermektedir.
 T-SQL ile;
 Veritabanı şemaları oluşturulabilir veya düzenlenebilir.
 Şemalar üzerinde veri girişi veya düzenlemesi yapılabilir
 Veritabanı izlenebilir veya yönetilebilir.
Araçlar
 SQLCMD
 Komut satırı uygulamasıdır.
 Uygulama içerisinden SQL sorguları ve .sql uzantılı script
dosyaları oluşturulup çalıştırılabilir.
 Visual Studio
 SQL CLR ile çalıştırılacak kodların yazılması ve debug
edilmesi için kullanılabilir.
 Veritabanı şemaları oluşturmak, düzenlemek ve
görüntülemek için grafik arayüz de sunmaktadır.
Araçlar
 SQL Server Management Studio
 MS SQL Server’ın tüm bileşenlerini yönetmek için
kullanılan grafik arayüzdür.
 Veritabanı nesneleri ile çalışmak için script editörleri ve
grafik araçlar içerir.
 Business Intelligence Development Studio
 Veri analizi geliştirmek amacıyla kullanılan tümleşik
geliştirme ortamıdır.
 Visual Studio tabanlıdır.
 SQL Server’a özgü proje tipleri, araçlar, raporlar, küpler
ve veri madenciliği yapıları içerir.
SQLCMD ve SQL Server Management Studio
Yenilikler 2014:
In-Memory OLTP
 Daha önceki sürümlerde tabloların ana bellekte saklanması
desteklenmektedir. Fakat bu tabloların diskte olması durumunda
gerekli belleği ayırma, veriyi diskten okuma, RAM’de bulunan bu
veriyi kilitleme gibi görevler gerçekleştirilmektedir. In-Memory ile
birlikte bu yük ortadan kalkmaktadır.
 In-Memory ile birlikte ana belleğe sığabilen tablolar tamamıyla
ana belleğe çıkartılır. Ayrıca stored procedure’ler de belleğe
çıkartılabilmektedir.
 RAM’deki verinin kaybolmama garantisini verebilmek için diskte
transaction log’lar tutulmaktadır.
 Geography, hierarchyid, image, text, ntext, varchar(max) ve xml
veri tiplerini içeren tablolar in-memory ile birlikte
kullanılamamaktadır.
 Ayrıca triggerlar, kümelenmiş indexler, id sütunları, FOREIGN KEY,
CHECK ve UNIQUE kısıtlamaları da in-memory tarafından
desteklenmemektedir.
Yenilikler 2014:
SSD Buffer Pool Extension
 Disk tabanlı uygulamalarda RAM ile disk arasındaki
performansı cache ile arttırmak için kullanılır.
 Server’da okuma sebebiyle oluşan iş yükü
nedeniyle sistemin bellek kullanım oranı artar.
 SSD sürücülerdeki NVRAM’leri standart Buffer Pool
ile birleştirme yoluyla server’ın bellek kapasitesi
arttırılabilir.
Geliştirmeler 2014:
AlwaysOn Availabilty Groups
 SQL Server 2012 ile kullanıma sunulmuştur.
 Database mirroring alternatifi sunar ve afet
kurtarma (disaster recovery) için kullanılır.
 Birincil ve ikincil kopya veritabanları oluşturularak
herhangi bir problemde veritabanının ayakta
tutulması sağlanır.
 Birincil kopya okuma ve yazmaya izin verirken ikincil
kopyalar salt-okunurdur.
 İkincil kopyalar okuma veya yedek oluşturma
işlemine destek verir.
Geliştirmeler 2014:
AlwaysOn Availabilty Groups
 AlwaysOn Availability Groups’a (AAG) ek ikincil
kopya ve Azure desteği sağlanmıştır.
 SQL Server 2012 ile birlikte AAG 4 adet ikincil
kopyaya izin verirken, SQL Server 2014’te bu sayı
8’e çıkarılmıştır.
 İkincil kopyalar, afet kurtarma için asenkron olarak
Azure üzerine de alınabilmektedir.
Geliştirmeler 2014:
Yedekleme
 Yedekleme işlemlerinde veritabanı şifreleme
desteği getirilmiştir.
 Şifreleme için bir sertifika veya asimetrik anahtar
gerekmektedir.
 Desteklenen şifreleme algoritmaları : AES128,
AES192, AES256, Triple DES
 Azure entegrasyonu ile veritabanı yedekleri Azure
platformu üzerine bir URL yardımıyla alınabilir.
Microsoft SQL Server
2014
Kurulum
İstenirse bu seçenek ile instance ismi belirlenebilir
Automatic olan hizmetler, bilgisayar açılırken başlatılacaktır.
Bu da bilgisayarın açılışını yavaşlatır. Gerek duymadıklarınızı
Manual durumuna getirip, ihtiyacınız olduğunda başlatın.
Veri tabanı motoru ve analiz servisi için dil ayarları bu
kısımdan yapılabilir. Türkçe ayarların kalması uygundur.
Mixed Mode seçilirse hem Windows kullanıcıları hem de SQL Server kullanıcıları veritabanına
erişim için kullanılabilir. Kullanıcı adı "sa" olan SQL Server sistem yöneticisinin şifresi
belirlendikten sonra, Windows kullanıcılarından hangisinin yönetici yetkisinde olacağı "Add"
ile berlilenebilir. "Add Current User" ile kurulumu yapan kullanıcı yönetici olarak atanabilir.
Verilerin saklanacağı
dizinler belirlenebilir
Microsoft SQL Server
2014
Management Studio
SQL Server Authentication ile
veritabanına bağlanma
 Server Type ile
veritabanı dışında,
analiz, raporlama ve
entegrasyon
servislerine de
bağlanabilirsiniz.
 Başka bir bilgisayardaki
veritabanı motoruna
veya servislere
bağlanmak için Server
Name seçeneği
kullanılır.
• SQL Server Management Studio, Visual Studio ile benzer bir
arayüz sunmaktadır. Sol taraftaki Nesne Gezgini penceresi ile
veritabanı nesnelerine erişilebilir ve değişiklik yapılabilir.
• "Databases" altında "System Databases" ve onun altında ise 4
tane sistem veritabanı yer alır. Bu veritabanları üzerinde de tablo
yaratılabilse de genellikle bu tercih edilmez.
• Kendi tablolarımızı saklamak üzere yeni bir veritabanı oluşturmak
için "Databases" üzerine sağ tıklanıp açılan menüden "New
Database" seçilir.
NOT: Bu menüdeki "Attach" daha
önce yaratılmış olan bir SQL Server
veritabanına bağlanmak için,
"Restore Database" ise yedeği
(backup) alınmış veritabanını geri
getirmek için kullanılır.
Veritabanının Genel Özellikleri
Veritabanı ismi girildikten
sonra bu veritabanı için bir
sahip belirlenmek istenirse
"owner" kısmına yazılabilir.
• 2 tane veritabanı dosyası bu listeye varsayılan
olarak eklenir: 5 MB büyüklüğünde ve "ROWS
Data" türünde olan ilk dosya tabloları, 1 MB
büyüklüğünde ve "LOG" türünde olan ikincisi
ise günlük bilgilerini saklayacaktır.
• İstenirse aşağıdaki "Add" düğmesi ile yeni
dosyalar eklenebilir. Dosyaların başlangıç
boyutu ise liste üzerinden değiştirilebilir.
Seçenekler
Seçenekler (Options) altında veritabanının dil
ayarlarını, önceki sürümler ile uyumluluğunu,
otomatik olarak yapılması gereken işlemleri,
vs. ayarlayabileceğiniz seçenekler yer alır.
Son kullanıcı da çıkınca otomatik kapansın mı?
Veritabanından büyük miktarda veri
silindiğinde dosya boyutu küçülsün mü?
(başlangıç boyutunun altına inemez)
Ayrıntılı bilgi için: http://msdn.microsoft.com/en-us/library/ms188124.aspx
Bir tablo yaratmak için seçilen veritabanı altında "Tables" üzerine
sağ tıklanarak açılan menüden "New" + "Table" seçilirse tablo
tasarımı (table design) görünümüne geçilir (bak. sonraki slayt)
Tablo Tasarımı Görünümü
ve Birincil Anahtar Belirleme
 Tablonun alan isimleri ve veri tiplerinin belirlendiği
tasarım görünümünde birincil anahtar oluşturmak için,
ilgili alan veya alanlar seçilip üzerlerine sağ tıklanarak,
çıkan menüden (bu menü tasarım görünümüne
geçildiğinde beliren Table Designer menüsünün
aynısıdır) "Set Primary Key" seçilebilir.
 Kaydetme ikonu tıklanıp (veya Ctrl+S) açılan pencereye
tablonun ismi (Öğrenciler) yazılarak kaydedilir.
 Tabloyu kaydettikten sonra bir değişiklik yapmak
istediğinizde aşağıdaki uyarı mesajı ile karşılaşabilirsiniz:
 Tools / Options menüsü, Designers altında yer alan aşağıdaki
seçeneğin kaldırılması ile bu durum düzeltilebilir:
Dış anahtar belirleme
 Dış anahtar belirlemek için "Table Designer" altındaki
"Relationships" menüsü kullanılabilir.
Notlar ve Dersler tabloları da oluşturulduktan sonra, Notlar tablosunun tasarım
görünümünde iken "Relationships" tıklanırsa aşağıdaki pencere gelir:
Add tıklanarak dış anahtar ilişkisi
oluşturulur ve bağlanacağı tabloyu
belirlemek için" Tables And
Columns Sepecification" kullanılır.
Dış anahtar belirleme (devam)
 İlişkinin PK tarafı için ilgili tablo (Dersler) ve o tablodaki ilgili
sütun (DersKodu) seçimleri yapılarak, FK tarafı için de Notlar
tablosundan bağlantılı olacak sütun (Ders) seçilir:
Daha önce FK_Notlar_Notlar
olan ilişki ismi Dersler
tablosu seçilince
FK_Notlar_Dersler olarak
değişir (Öğrenciler seçilirse
FK_Notlar_Öğrenciler olur)
Bilgi tutarlılığını sağlamak için:
 Access'teki Bilgi Tutarlılığına Zorla altında yer alan İlişkili
Alanları Art Arda Sil/Güncelleştir seçeneklerini kullanarak
yaptığımız işlemin benzeri INSERT And UPDATE Specification
seçeneğinin Delete Rule ve Update Rule alanları Cascade
seçilerek yapılabilir.
PK tarafında silinen bir kaydın FK
tarafındaki ilişkili olduğu kayıtlar
silinmeyip, "Set Null" ile ilgili alan
boş bırakılabilir veya "Set Default"
ile varsayılan değer ile doldurulabilir.
Nesne Gezginini Kullanma
• Nesne gezgini üzerinde her tablonun altında
Columns, Keys, Constraints, Triggers, Indexes ve
Statistics adında düğümler bulunur.
• Bir tablonun üzerine sağ tıklayıp açılan menüden
"Design" seçilirse (veya herhangi bir sütun
isminin üzerine sağ tıklayıp "New Column" veya
"Modify" seçilirse) tasarım görünümüne geçilir.
• Keys düğümüne sağ tıklayıp açılan menüden
"New Foreign Key" seçilirse önce tasarım
görünümü açılır, sonra önceki slaytlarda
gördüğümüz "Foreign Key Realationships"
penceresi gelir.
• Constraints sağ tıklanıp "New Constraint"
seçilirse "Check Constraints" adında bir pencere
gelir (bak sonraki slayt)
• Triggers, Indexes ve Statistics hakkında sonraki
derslerde bilgi verilecektir.
Check Constraint
 Check constraints penceresinin Expression alanına
gireceğimiz koşul ile bir alana girilecek veriye
sınırlama (constraint) getirebiliriz.
NOT: Aslında PK, FK ve
Not Null da sınırlamadır.
Haftaya değineceğiz.
Sorgu Penceresi
 Araç çubuğundaki "New Query" simgesi (veya bir
veritabanı sağ tıklanıp menüden "New Query") ile
sorgu penceresi açılabilir.
Eğer DML ifadeleri yazıldı ise Execute tıklandıktan sonra her
ifade için etkilenen satır sayısı "Messages" sekmesinde belirtilir.
Eğer bir sorgu yazıldı ise Execute tıklandıktan sonra "Results"
sekmesinde sorgunun sonucu gösterilir.
Select Top 1000 Rows
Edit Top 200 Rows
 Bir tablonun üzerine sağ tıklayıp
"Select Top 1000 Rows" seçilirse,
yanda görüldüğü gibi bir sorgu
otomatik olarak yazılıp çalıştırılır.
 Bir tablonun üzerine sağ tıklayıp
"Edit Top 200 Rows" seçilirse,
aşağıda görüldüğü gibi veri girişi
için Access'teki Veri Sayfası
Görünümü'ne benzeyen, ekleme,
silme ve değiştirme yapılabilen
bir tablo gelir.
Diagram
 Diagram nesneleri Access'teki İlişkiler görünümü gibi
tablolar arası ilişkilerin gösterildiği bir çizelgedir.
 Dış anahtar ilişkileri Access'te olduğu gibi buradaki
tablolar arasında sürükle bırak yöntemi ile yapılabilir.