Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Az SQL Server 2005 relációs motorjának újdonságai Kószó Károly rendszermérnök Microsoft Magyarország.

Hasonló előadás


Az előadások a következő témára: "Az SQL Server 2005 relációs motorjának újdonságai Kószó Károly rendszermérnök Microsoft Magyarország."— Előadás másolata:

1 Az SQL Server 2005 relációs motorjának újdonságai Kószó Károly rendszermérnök Microsoft Magyarország

2 TechNet események 2005 tavaszán április 6. Átállás a legfrissebb technológiákra: Windows Server 2003, XP, Office 2003 Átállás a legfrissebb technológiákra: Windows Server 2003, XP, Office április 20. Az SQL Server 2005 relációs motorjának újdonságai Az SQL Server 2005 relációs motorjának újdonságai május 4. Az SQL Server 2005 üzleti intelligencia szolgáltatásai Az SQL Server 2005 üzleti intelligencia szolgáltatásai május 18. Üzemeltetői konferencia Üzemeltetői konferencia március 23. A Windows Server idei újdonságai A Windows Server idei újdonságai

3 Napirend  Az SQL Server adatplatform  Az SQL Server 2005 áttekintése  Nagyvállalati adatkezelés –Biztonság –Rendelkezésre állás –Skálázhatóság  Programozhatóság –XML, CLR, T-SQL  (Üzleti intelligencia)

4 SQL Server Átfogó, integrált adatplatform Integration Services Reporting Services Analysis Services (OLAP, DM) Notification Services Replication Services Relációs adatbázis

5 Az SQL Server generációi SQL Server 7.0 SQL Server 2005 SQL Server 2000 • • A legalacsonyabb TCO • • Automatikus hangolás • • Megbízhatóság, biztonság • • Integrált üzleti intelligencia • •Rendelkezésre állás fókusz • •Biztonság • •Hatékony fejlesztés • •Natív XML • •Nagyvállalati ETL és adatbányászat • •Teljesítmény, skálázhatóság fókusz • •XML támogatás • •Továbbfejlesztett OLAP kiszolgáló • •Adatbányászat • •Notification Services • •Reporting Services • •Új relációs és tároló motor • •Kiterjedt automatikus erőforrás kezelés • •OLAP • •ETL eszköz (DTS) Állandó célok SQL Server 6.0/6.5 • •Windows integráció • •DTC (elosztott tranzakciók) • •Beépített tranzakcionális replikáció 1. A kezdetek2. A modern SQL Server3. A közeli jövő

6  Magas rendelkezésre állás  Biztonsági és teljesítmény jellemzők  Menedzselhetőség  Visual Studio és.NET CLR integráció  Natív XML technológia az adatbázisban  Web Service felületek (natív SOAP)  Valósidejű döntéstámogatás: jelentéskészítés, OLAP, adatbányászat  Intelligens kliensek; SharePoint megoldások  Átfogó (és lényegesen gyorsabb) ETL szolgáltatás Az SQL Server 2005 fejlesztés fő területei Nagyvállalati adatkezelés Programozhatóság Üzleti intelligencia

7 Nagyvállalati adatkezelés  Elvárások  Biztonság  Rendelkezésre állás  Skálázhatóság  Menedzselhetőség  SQL Server 2005  Jogosultságkezelés  Adatbázis tükrözés  Gyors helyreállítás  Adatbázis pillanatfelvétel  Online index műveletek  Pillanatfelvétel izoláció  Partícionálás

8 SQL Server 2005 biztonsági fejlesztések  Továbbfejlesztett biztonsági jellemzők  Adattitkosítás, titkosítási kulcs kezelés  Auditálás, felhasználó azonosítás és hozzáférési jogosultság kezelés  A felület minimalizálása  A legtöbb szolgáltatás telepítése opcionális – explicit választást igényel  Telepítés, javítócsomagok  Microsoft Update Services integráció  Common Criteria  Tervezett: EAL4+ (Evaluation Assurance Level 4, vagy erősebb)  Biztonsági eszközök  MBSA (Microsoft Baseline Security Analyzer)  SQL Server Best Practices Analyzer

9 Redukált (támadási) felület

10 demó  Surface Area Configuration

11 Jelszó házirend  A helyi NT jelszó házirend alapján  Jelszó erősség, lejárat  Fiók kizárás  Alapértelmezett működés  Megvalósítás  Új jelszó házirend ellenőrző API a Windows 2003 Server-től kezdve  Azonosításkor, jelszó megadáskor hívják  Adminisztrátori opciók a login-ok kapcsán  Házirend ellenőrzések, lejárat ki/be kapcsolása  Jelszócsere előírása az első bejelentkezéskor  Login-ok gyors letiltása

12 A felhasználók és a sémák szétválasztása  A principálisok és a sémák szétválasztása  Principális –Az egyedek, akikkel szemben az objektumokat védjük –sys.database_principals nézet  Séma –Objektum konténer; a 4 részes név 3. darabja –sys.schemas nézet  A default séma  A felhasználók és a szerepkörök tulajdonsága  A névfeloldáskor használja a kereső algoritmus  sys.database_principals  Új DDL a felhasználókra és a sémákra  CREATE/ALTER/DROP - USER/ROLE/SCHEMA  A felhasználó megszüntetése nem igényli a séma átnevezését

13 Default Schema  Névfeloldáshoz, ha nincs megadva a sémanév  Az SQL2000-ben a „dbo” az alapértelmezett „séma”  A dbo séma bővítése potenciális biztonsági rés –A tulajdonosi lánc helytelen használata esetén  SQL2005-ben csak akkor a „dbo” az alapértelmezett séma, ha az adatbázis felhasználónál nincs default schema megadva –create/alter user … WITH DEFAULT_SCHEMA = sémanév

14 Sémák és felhasználók  Az adatbázis több sémát tartalmazhat  Minden sémának van tulajdonosa – user vagy role  Minden felhasználónak van alapértelmezett sémája, aminek nem feltétlenül ő a tulajdonosa  Az adatbázis objektumok sémákban léteznek  A tulajdonosi lánc változatlanul működik Role1User1 Owns Has default schema Owns Approle1 Owns Schema1Schema2 Schema3 SP1 Fn1 Tab1 Adatbázis

15 Végrehajtási környezet Végrehajtási környezet User 3 Select jog ellenőrzés User3-ra Execute jog ellenőrzés User3-ra User1.Proc1 User1.T1 Nincs jogosultság ellenőrzés User3-ra User 3 User2.Proc1 User1.T1 ‘Execute AS ‘X’ ’ Execute jog ellenőrzés User3-ra Select jog ellenőrzés‘X’-re, Nem user3-ra SQL Server SQL Server 2000 User2.Proc1User1.T1

16 Modul végrehajtási környezet  Module  Tárolt eljárás, függvény, trigger  A tulajdonosi lánc helyett/mellett használható  A tulajdonosi lánc szabályok változatlanul érvényesek  A jogosultságokat a végrehajtási környezetre ellenőrizzük  Az adat definíciós utasításokra és a dinamikus SQL-re is  A modulok végrehajtási környezetét tartalmazó rendszer nézetek:  sys.sql_modules és a sys. assembly_modules

17 Modul végrehajtási környezet (2)  Execute AS CALLER  A modul utasításai a modult közvetlenül hívó nevében (és jogaival) hajtódnak végre  Alapértelmezett viselkedés, hasonló az SQL Server 2000-hez  Execute AS ‘user’  A modul a megadott felhasználóval hajtódik végre  Az execute as záradékot megadó felhasználónak IMPERSONATE jog kell a megadott ‘user’-re  Execute AS SELF  A végrehajtás a záradékot megadó felhasználó nevében történik  Execute AS OWNER  Az utasítások a modul mindenkori tulajdonosa nevében futnak  Impersonate jog kell az aktuális tulajdonosra (megadáskor)  Kiszolgáló hatókörű DDL triggerek esetén:  Execute AS ‘login’

18 Példa az Execute As használatára  Probléma:  A TRUNCATE jog nem továbbadható  Az ALTER jog a TRUNCATE-et tartalmazza, de az túl sok lenne  Megoldás: Execute As  Tárolt eljárást készítünk a TRUNCATE-re  Execute As egy olyan felhasználóval, akinek van ALTER joga  Grant execute jog a cél felhasználónak  Eredmény:  A TRUNCATE jogot „továbbadhatóvá” tettük

19 Új jogosultságok  A legtöbb objektumra vonatkoznak a következő jogosultságok  CONTROL: tulajdonos-szerű jogok  ALTER: a tulajdonságok megváltoztatása  ALTER ANY ‘X’: ALTER jog minden X típusú objektumra  Take Ownership: a tulajdonjog átvételének joga  Rendszer nézetek  sys.database_permissions, sys.server_permissions

20 Jogosultság alapú meta-adat biztonság  A meta-adatok alapértelmezésben védettek  A sysadmin szerep mindent láthat a kiszolgálón  Az adatbázis tulajdonos (dbo) mindent láthat az adatbázisban  Az objektum tulajdonosa láthatja az adott objektum adatait  A ”VIEW DEFINITON” engedély teszi lehetővé az objektum meta-adatainak olvasását

21 A rendelkezésre állás fokozása  Automatikus feladatátvétel  Feladatátvevő fürtözés (Failover Clustering)  Adatbázis tükrözés  Adatbázis karbantartás, helyreállítás  Online index műveletek  Gyors helyreállítás (recovery)  Online, akár lap szintű visszatöltés  Egyidejű adatelérés, blokkolás elkerülése  Pillanatfelvétel izoláció  Egyéb fejlesztések  Adatbázis pillanatfelvételek  Replikáció

22 Adatbázis tükrözés Magas rendelkezésre állás – alacsony költséggel TükörképPrincipális Ügyfelek Napló rekordok Tanú  Adatbázis feladatátvétel  <3 mp  Automatikus/ manuális feladatátvétel  Automatikus kliens átirányítás  Standard hardver eszközök

23 Az adatbázis tükrözés előnyei  Gyors, automatikus feladatátvétel  Adatbázis szinten teljes másolat  Különálló gépek  Az adatok két példányban léteznek  A gépek szabványos hálózaton keresztül kommunikálnak  Nem igényel speciális hardvert  Önellenőrző  Magas rendelkezésre állás – adatbázis szinten

24 Tükrözés - szerepkörök  Principális  Fogadja az ügyfél kapcsolatokat  Engedi az adatok módosítását  Tükörkép („azonnali” tartalék)  A principálisnál történő változásokat végrehajtja a tükör adatbázison  Az ügyfelek közvetlenül nem érik el a tükörképet  Szerepet cserélhet, principálissá válhat  A tükörkép pillanatfelvételei felhasználhatók jelentés készítésre

25 A tanú szerepe  Lehetővé teszi az automatikus feladatátvételt  Megakadályozza a „megosztott agy” problémát  „Miért nem látom a másik kiszolgálót? A hálózat szűnt meg, vagy a kiszolgáló nem működik?  Csak az a kiszolgáló lehet principális, amelyik legalább egy másik kiszolgálóval képes kommunikálni

26 A tanú jellemzői  Egy SQL Server 2005 példány  Egy tanú több tükrözést támogathat  Nagyon kevés erőforrást fogyaszt  Válaszol a „ping”-ekre  Közli, hogy a másik kiszolgáló él-e  Nem egyetlen meghibásodási pont  A tükröző partnerek egymással is meg tudnak állapodni  Amíg két szerver tud kommunikálni egymással, a tükrözés működőképes

27 A tükrözés folyamata - szinkron Érvényesítés Tranzakció- napló írás Továbbítás a tükörhöz Log Nyugta Napló írás nyugta Folyamatos előregörgetés Nyugta DB Log Tranzakció- napló írás

28 Adatbázis tükrözés - szinkron  A principális egyszerre írja a saját tranzakciónaplóját és küldi a hálózatra a módosításokat  A tranzakció akkor érvényesítődik, ha a tükör is beírta a módosításokat a saját tranzakciónaplójába  Feladatátvétel esetén nincs adatvesztés  A tükörkép kész a feladatátvételre, ha megtörtént a tranzakciók előregörgetése – az esetleges visszagörgetésre nem kell várni  Automatikus feladatátvétel lehetséges

29 Az adatbázis állapotai a tükrözési folyamat során  SYNCHRONIZED  A tükör is minden adatot tartalmaz  SYNCHRONIZING  A tükör le van maradva, de dolgozik  SUSPENDED  A tükrözés fel van függesztve  DISCONNECTED  A kiszolgáló nem tud kommunikálni a partnerrel  EXPOSED (veszélyeztetett) =  SYNCHRONIZING / SUSPENDED / DISCONNECTED

30 Szinkron és aszinkron tükrözés  A biztonsági szint beállítása szerint  SECURITY: FULL – csak akkor érvényesítünk a principálison, ha a módosítás naplózódott a tükörképen is –A tükrözés hatással van a principális áteresztőképességére –A feladatátvétel ideje szabályozható (REDO_QUEUE adatbázis opció)  SECURITY: OFF – a principális nem vár a tükörkép nyugtájára –A tükrözés hatása a principális áteresztőképességére minimális

31 Aszinkron tükrözés Érvényesítés Tranzakció- napló írás Továbbítás a tükörhöz Log Nyugta Napló írás megtörtént Folyamatos előregörgetés DB Log Tranzakció- napló írás

32 Az tükrözés alkalmazásai  Magas rendelkezésre állás  Biztonság: FULL  Automatikus feladatátvétel  Egy kiszolgáló elvesztése esetén az adatbázis változatlanul használható  Magas védelem  Biztonság: FULL; nincs tanú  manuális áttérés  Nagy teljesítmény  Biztonság: OFF  A rendszergazda végzi a feladatátadást  Adatvesztés lehetséges  Egy fajta mentési mechanizmus

33 demó  Adatbázis tükrözés

34 Gyors helyreállítás (recovery)  SQL Server 2000  Az adatbázis a visszagörgetés után hozzáférhető  SQL Server 2005  Az adatbázis a visszagörgetés megkezdésekor hozzáférhető Visszagörgetés Előregörgetés Használható VisszagörgetésElőregörgetés Használható Idő

35 Adatbázis pillanatfelvétel Mire jó?  Felhasználói hiba kivédése  Visszatérés a „múltba”  A hiba megtörténte előtt kell pillanatfelvételt készíteni  Erősen használt adatbázis adott állapotának elmentése  Például, adatbázis tükörkép esetén  Jelentéskészítés céljából

36 Adatbázis pillanatfelvétel  Az adatbázis állapota egy adott időpillanatban  Azonnal létrejön  Csak olvasható  Az eredeti adatbázis változását nem korlátozza  A pillanatfelvétel új (csak olvasható) adatbázisként jelenik meg  Hiba esetén visszanyúlhatunk a pillanatfelvételhez a régi adatokért

37 Pillanatfelvétel Technológia  Helykímélő  Csak a módosult adatlapokat tároljuk  Másolás íráskor (Copy-On-Write)  Kezdetben a kópia nem igényel helyet  A pillanatfelvétel létezése befolyásolja az eredeti adatbázis működési sebességét

38 ValueR D B H J L Y M Tárolási igény Parancs Create Northwind_SS NorthwindNorthwind_SS Update Northwind 0%Value DX Read Northwind_SS 12.5% Eredmény: Pillanatfelvétel Másolás íráskor DD

39 Pillanatfelvétel a tükörképen  Több pillanatfelvétel is készíthető  Minden pillanatfelvétel saját névvel rendelkezik  Az adatbázis állapotát eltérő időpontokban mutatják  A tükörképen létrehozott pillanatfelvételek befolyásolhatják a principális működését  Az egy időben létező pillanatfelvételek számát csak az erőforrások korlátozzák

40 Jelentéskészítés a tükörképen  Pillanatfelvételekkel Tükörkép Principális Jelentéskészítő kliensek Adatbázis tükrözés OLTP kliensek Tanú Pillanatfelvételek

41 Online index műveletek  Online index karbantartás  Create, Rebuild, Reorganize, Drop  Add / Drop Constraint  Parallel végrehajtás (MAXDOP opció)  Online/offline választható

42 Pillanatfelvétel tranzakció izoláció  Az adatok olvasásakor az utasítás, vagy a tranzakció megkezdésekor érvényes utolsó értékeket látjuk  Nincs zárolás  Az olvasások nem blokkolják a módosításokat és a módosítások nem blokkolják az olvasásokat  Javítja az adatok elérhetőségét, csökkenti a deadlock-ok kialakulását  Az adatsorok verziózásán alapul (tempdb)  Adatbázis szinten lehet engedélyezni

43 Pillanatfelvétel izoláció változatok  A Read Committed szint új változata  Zárolás nélküli Read Committed  Utasítás szintű pillanatfelvétel izoláció –Olvasáskor az utasítás kezdetekor érvényes utolsó értéket kapjuk  Új tranzakció izolációs szint  Snapshot – új izolációs szint  Tranzakció szintű –Olvasáskor a tranzakció kezdetekor érvényes utolsó értéket kapjuk

44 SQL Server 2005 Tranzakció izolációs szintek Lehetséges anomáliák Izolációs szintek Érvénytelen adat olvasás Nem megismétel- hető olvasás Fantomok UPDATE konfliktus Egyidejű elérés vezérlése Read Uncommitted igenigenigennemnincs Read Committed - zárolással - pillanatfelvétel nemnemigenigenigenigennemnempesszimistaoptimista Repeatable Read nemnemigennempesszimista Snapshotnemnemnemigenoptimista Serializablenemnemnemnempesszimista

45 A pillanatfelvétel engedélyezése és az izolációs szint beállítása  Engedélyezés – adatbázis szinten  alter database set READ_COMMITTED_SNAPSHOT on  és/vagy:  alter database set ALLOW_SNAPSHOT_ISOLATION on  Izolációs szint beállítás – kapcsolat szinten  set transaction isolation level read committed  set transaction isolation level snapshot  A tranzakció működése az engedélyezett és a beállított értéktől is függ

46 Read Committed Snapshot  Adatbázis: READ_COMMITTED_SNAPSHOT on  Kapcsolat: set transaction isolation level read committed  A módosítások nem blokkolják az olvasásokat és fordítva  A módosítások blokkolják egymást!  A módosítások zárakkal történnek  Nem használható a master, az msdb és a tempdb adatbázisokkal

47 Snapshot  Adatbázis: ALLOW_SNAPSHOT_ISOLATION on  Kapcsolat: set transaction isolation level snapshot  A módosítások nem blokkolják az olvasásokat és fordítva  A módosítások konfliktusba kerülhetnek  Elvesztett módosítás veszélye  Automatikus és kötelező konfliktus feloldás véd az „elvesztett módosítás” probléma ellen  Alapértelmezett a master–en és az msdb-n

48 demó  Pillanatfelvétel izoláció

49 Replikáció újdonságok  Tranzakcionális replikáció Oracle-ből az SQL Server-be  HTTPS Merge szinkronizálás  AZ SQL Server 2005 új adattípusainak támogatása  Pont-pont replikáció  A replikált táblák szerkezete módosítható  Jobb biztonság, teljesítmény, adminisztráció, diagnosztika, …

50 Partícionált táblák és indexek  Értéktartomány (range) alapú partícionálás  A táblákat, indexeket több tárolási objektumra bontjuk egy adatoszlop értéke szerint  A relációs motor és az SQL programozó számára a tábla egyetlen egység marad  A tároló motor több objektumként kezeli a partíciókat  Max partíció / tábla

51 Egy nagy monolitikus tábla Customer ID Index Order History Table Nem partícionált: Filegroup DATA Filegroup IDX Példa: Az ORDER HISTORY tábla; egy nem fürtözött index a CUSTOMER ID-n Order History Customer ID Order Date Amount … Order ID

52 Partícionálás és tárolás Customer ID Index ORDER DATE szerint: Order Date < ‘ ’ Order Date >= ‘ ’ and Order Date < ‘ ’ Order Date >= ‘ ’ Filegroup DATA_2002 Filegroup DATA_2003 Filegroup DATA_2004 Filegroup IDX_2002 Filegroup IDX_2003 Filegroup IDX_2004 Orders Customer ID Order Date Amount … Order ID Order History Customer ID Order Date Amount … Order ID Order History Table

53 A partícionált táblák előnyei  Kezelhetőség  Gyors adatbetöltés és törlés  Darabonkénti mentés/visszatöltés a „régi” adatokra  Partíciónkénti index kezelés  Nincs index töredezettség a régi adatokra  Eltérő tárolási mód lehetséges a régi adatokra  Jobb lekérdezési sebesség a nagy táblák esetén  Hatékony join, ha az illeszkedő táblák azonosan partícionáltak  Kisebb index fát és adatpartíciót kell bejárni

54 A partícionálás elemei Objektumok:  Partíció függvény  Partíció séma Műveletek:  Megosztás - Split Partition  Összefésülés - Merge Partition  Csere - Switch Partition

55 A partíció függvény  A partícionáló oszlop adatait egész számokra képezi le  A határpontok által definiált  N pont  N+1 partíció Partition # Boundary 1Boundary 2Boundary 3Boundary 4

56 Partíció függvény példa CREATE PARTITION FUNCTION annual_range (DATETIME) as RANGE RIGHT /* a határpontokra eső adatok helye */ for values (-- Partition és korábbi ' ',-- Partition ' ',-- Partition ' ',-- Partition ' '-- Partition és későbbi ) Partíció sorszám lekérdezése: select $partition.annual_range(‘ ’)

57 dátum < <=dátum < <=dátum < <=dátum < <=dátum Partíció függvény példa (2) Partition # Boundary 1Boundary 2Boundary 3Boundary

58 Partíció séma  Egy-egy fájlcsoportot rendel a partíciókhoz  Nem kötelező különböző fájlcsoportokat használni  Különböző fájlcsoportok használata hasznos lehet mentés/helyreállítás esetén

59 Partíció séma példák CREATE PARTITION SCHEME annual_scheme_1 as PARTITION annual_range to (annual_min,-- filegroup pre-2002 annual_2002,-- filegroup 2002 annual_2003,-- filegroup 2003 annual_2004,-- filegroup 2004 annual_2005)-- filegroup 2005-től Create PARTITION SCHEME annual_scheme_2 as PARTITION annual_range ALL to ([PRIMARY])

60 Partícionált táblák és indexek  A partícionáló kulcs csak egyetlen oszlop lehet  A partícionált táblák és indexek partíció sémákon hozhatók létre (nem fájlcsoportokon)  Több tábla és index is használhatja ugyanazt a partíció függvényt és sémát Tábla,index Partícióséma Partíciófüggvény

61 Tábla és index létrehozása CREATE TABLE Order_History ( Order_ID bigint, Order_Datedatetime, Customer_IDbigint … ) ON Annual_Scheme_1(Order_Date) CREATE INDEX Order_Cust_Idx ON Order_History(Order_ID) ON Annual_Scheme_1(Order_Date)

62 Index partícionálás  Ha egy index hasonló partíció függvényt használ és ugyanazt a partícionáló kulcsot használja, mint az alaptábla, akkor az index „illeszkedő” (aligned)  1-1 megfelelés az adat és index partíciók között  Hasonló: –Azonos adattípus –Azonos számú partíció –Azonos határpontok  Index létrehozásakor alapértelmezett az illeszkedő index  Lehetővé teszi a gyors partícióváltást (switch partition)

63  Ha a partícionáló kulcs szerepel a WHERE záradékban, a végrehajtás kevesebb partíciót érint Select * from OrderHistory o where … o.date_key between ‘ ’ and ‘ ’  Vigyázat: join-on keresztül nem tudjuk szűkíteni az érintett partícók számát Select * from Sales s INNER JOIN Region d on d.region_id = s.region_id where … d.Name = ‘Asia’ Partícionált táblák adatainak lekérdezése

64 Műveletek partíciókkal  Megosztás - Split Partition  Összefésülés - Merge Partition  Csere - Switch Partition

65 Split  ALTER PARTITION FUNCTION … SPLIT RANGE …  Új határpont felvétele a partíció függvényben  Minden objektumra hat, amelyik a függvényt használja  Az új határpont egy partíciót kettéoszt  Az új partícióba eső adatokat a tároló motor átmozgatja a régi helyükről  Azonnal megtörténik, ha a partíció üres  Partícionált tábla végein célszerű mindig egy üres partíciót fenntartani

66 Merge  ALTER PARTITION FUNCTION … MERGE RANGE  Eltávolít egy határpontot a partíció függvényből  A határpont két oldalán levő partíciók adatai összemásolódnak  Sok írással, olvasással járó művelet  Gyors (azonnali) ha a két partíció üres

67 Switch  Felcseréli a forrás partíciót, vagy táblát egy másik tábla egy üres partíciójával, vagy egy üres táblával (cél)  Tisztán meta-adat művelet  Megkötések:  A cél üres kell, hogy legyen  A forrás és a cél azonos fájlcsoportban legyen  A forráson legyen meg minden index, amit a cél megkövetel, illeszkedve, és a megfelelő fájlcsoporton  Ha a cél egy partíció, a forrás táblán legyen olyan check constraints, ill. a forrás partíció olyan legyen, ami beleillik a cél partíció tartományba  A csere az összes kapcsolódó indexet is automatikusan magával viszi

68 Switch tippek  Ha táblát cserélünk partícióra, a tábla indexeinek tartalmazni kell a partícionáló kulcsot  CREATE INDEX, INCLUDE opció  A $partition. konstrukciót használjuk az abszolút partíció sorszámok helyett  A partíció sorszámok változhatnak

69 Csúszó időablak kezelés Új adatok betöltése Partíció # & korábbi 2002 adatok 2003 adatok 2004 adatok 2005 & későbbi [üres]  Előkészítő tábla létrehozása  Split az utolsó partíción  Bulk load és index az előkészítő táblán  Switch [üres] adatok 2006 & későbbi Staging Table

70 Csúszó időablak kezelés A legrégebbi adatok törlése Partíció # adatok 2004 adatok  Üres tábla létrehozása az eltávolítandó adatok számára  Switch  Merge [üres] adatok 2006 & későbbi 2002 adatok & korábbi [üres] Unload Table [üres] & korábbi

71 Mentés, visszatöltés  A partícionálással kihasználhatjuk az SQL Server 2005 új szolgáltatásait  A Read-Only fájlcsoportok a tranzakciónapló visszatöltése nélkül is helyreállíthatók  Nem változó, historikus adatok esetén meggyorsítja a mentést

72 Online visszatöltés  SQL Server 2000  Visszatöltés közben az adatbázis offline, nem használható  SQL Server 2005  Az adatbázis online marad –Csak a visszatöltött rész nem elérhető  Visszatöltés részekben –File / Filegroup visszatöltés –A megsérült adatlapok követése és lap szintű visszatöltés

73 Programozhatóság  Elvárások  Hatékony fejlesztés  Üzleti logika a kiszolgálón  Kevéssé strukturált adatok kezelése  Együttműködés más rendszerekkel  SQL Server 2005  Visual Studio integráció  CLR függvények, eljárások, triggerek  XML adattípus kezelés a kiszolgálóban  Natív http, SOAP  Transact-SQL továbbfejlesztések

74 .NET és Visual Studio integráció  Programozási nyelvek választéka  T-SQL a halmaz-orientált adatkezelésre .NET nyelvek a procedurális algoritmusokra  Az üzleti logika helye választható  Adatbázis, középső réteg, ügyfél oldal  Ugyanaz a modul, ugyanaz az adatelérési felület (ADO.Net)  Integrált hibakeresés  Különböző nyelveken keresztül – TSQL és.NET  Rugalmas, bővíthető kód  Függvények, tárolt eljárások, triggerek – SQL-ben, vagy.Net nyelven  Felhasználói adattípusok, aggregátumok  XML adattípus

75 Üzleti logika megvalósítása a kiszolgálón - CLR  Függvények, tárolt eljárások, triggerek - tetszőleges CLR nyelven  Számításigényes algoritmusokat procedurális nyelvekben könnyebb megírni és a kapott kód gyorsabban fut, mint ugyanaz Transact-SQL-ben  A Transact-SQL (T-SQL) beépített függvényeinek kiterjesztése  Célterület:  Számításigényes, procedurális logika az adatbázis rétegben  Sok adatelérést végző logika a középső rétegben  SQL Server  Nem (csak) SQL Server API-kat használó modulok  Külső erőforrások elérése

76 VS.NET Project Assembly: “MyLib.dll”VB,C#,C++ Build SQL Server SQL Data Definition: SQL Data Definition: create assembly … create function … create procedure … create trigger … create type … SQL lekérdezés: select dbo.függvény(paraméter) CLR runtime SQL Server (in-process) A fejlesztés menete

77 Függvények  Skaláris  Tábla-értékű

78 Skaláris CLR függvények  Egy.NET Framework assembly egy osztályának metódusai  A visszatérési érték  Csak skaláris (Unicode) lehet  Nem lehet: rowversion, text, ntext, image  A visszaadott.Net adattípusnak illeszkednie kell egy SQL Server adattípushoz  Testre szabott attribútumok használhatók  [SqlFunction(attribútumok)]

79 demó  Skaláris CLR függvény készítése

80 A skaláris függvények attribútumai  SqlFunction[(függvény-attribútum [,...])]  IsDeterministic= {true | false}  DataAccess = { DataAccessKind.None | DataAccessKind.Read } –Felhasználói táblák elérése  SystemDataAccess = { SystemDataAccessKind.None | SystemDataAccessKind.Readread } –Rendszer katalógusok, nézetek elérése  IsPrecise = { true | false }

81 A skaláris függvények attribútumai - példa SqlFunction [SqlFunction(IsDeterministic = true, IsPrecise = true)] public static SqlString ExtractAreaCode(string s) { Regex r1 = new Regex("\\((? [1-9][0-9]+)\\)"); Match m = r1.Match(s); if (m.Success) return m.Value.Substring(1, m.Length-2); else return SqlString.Null; }

82 Számított oszlop CLR függvénnyel  A CLR skaláris függvényeket felhasználhatjuk számított oszlopok létrehozására  A PERSISTED kulcsszóval előírhatjuk a számított oszlop tárolását  CLR függvénnyel készített számított oszlopra akkor készíthető index, ha  determinisztikus, nem végez adathozzáférést  PERSISTED (tárolt)

83 Index számított oszlopon - példa create table Contacts ( Fname nvarchar(30), Lname nvarchar(30), PhoneNo nvarchar(30), AreaCode AS dbo.ExtractAreaCode(PhoneNo) PERSISTED) go create index ContactAreaCode ON Contacts(AreaCode)

84 Tábla értékű függvények  A függvény értéke táblaként használható  A tábla értékű függvény adatainak elérése  T-SQL függvény esetén: belső munkatáblán keresztül (spooled)  CLR függvény esetén: adatfolyam (streamed) –Nem kell bevárni az egész adathalmaz elkészültét a feldolgozással  A függvénynek implementálni kell az ISqlReader interfészt

85 demó  Tábla értékű CLR függvény készítése

86 CLR tárolt eljárások  A függvényekkel ellentétben:  Végezhetnek adat definíciós (DDL) és adat módosító (DML) műveleteket  Küldhetnek eredményeket a kliens oldalra  Felhasználási terület  A CLR előnyös, ha: –Sok számítást végzünk az adatokon –A korábbi verziókban használt kiterjesztett tárolt eljárások (Extended Stored Procedures) helyett  Halmaz műveletekre változatlanul az SQL a legjobb

87 Adatelérés CLR tárolt eljárásból  In-process adatelérésre optimalizált ADO.NET szolgáltató  System.Data.SqlServer névtér  A programozási modell alapvetően megfelel az SqlClient-nek  SqlConnection, SqlCommand, SqlReader, SqlParameter  Bővítmények  SqlContext –SqlPipe – eredmények küldése a kliens felé –SqlTriggerContex – a triggerek számára

88 CLR adatmódosítás példa using System.Data.SqlServer; … SqlConnection cn = SqlContext.GetConnection(); SqlCommand cmd = cn.CreateCommand(); cmd.CommandText = “UPDATE Emp SET photo + “WHERE EmpId=10”; SqlParameter param1 = SqlDbType.VarBinary, SqlMetadata.Max); param1.Value = img; cmd.ExecuteNonQuery();

89 Eredményhalmaz küldése  SqlPipe - Send metódus (overloaded):  void Send(string message) –T-SQL: print  void Send(SqlDataReader reader) –Több soros eredményhalmaz  void Send(SqlDataRecord record) –Egy soros eredményhalmaz  Adatbázis lekérdezés eredménye a kliensre:  SqlPipe.Execute(SqlCommand) SqlCommand cmd = SqlContext.GetCommand(); cmd.CommandText = "select SqlContext.GetPipe().Execute(cmd);

90 Eredményhalmaz küldése (2)  Előzőleg végrehajtott lekérdezés eredményének elküldéseküldése public static void SendReaderToClient() { SqlCommand cmd = SqlContext.GetCommand(); cmd.CommandText = "select ISqlReader rdr = cmd.ExecuteReader(); using (rdr) { SqlContext.GetPipe().Send(rdr); }

91 Dinamikusan összeállított eredményhalmaz //oszlop meta-adatok létrehozása SqlMetaData[] columnSchema = new SqlMetaData[] { new SqlMetaData("stringcol", SqlDbType.NVarChar, 128) }; //sor meta-adatok létrehozása SqlMetaData tableSchema = new SqlMetaData("row",SqlDbType.Row,columnSchema); //rekord létrehozás ISqlUpdatableRecord newRecord = SqlContext.GetConnection().CreateRecord(tableSchema); //rekord oszlopainak feltöltése newRecord.SetSqlString(0, "Hello World!"); //rekord elküldés SqlContext.GetPipe().SendResultsStart(newRecord, true /*sending row*/); //a küldés befejezése SqlContext.GetPipe().SendResultsEnd();

92 Triggerek  DML és DDL triggerek is készíthetők CLR-ben  A triggerek a TriggerContext objektumon keresztül érik el a módosításra vonatkozó információkat

93 Trigger ADO.NET bővítmények  SqlContext.GetTriggerContext()  bool [ ] ColumnsUpdated: –T-SQL: ColumnsUpdated()  TriggerAction: a triggert elindító művelet tc =SqlContext.GetTriggerContext(); if (tc.TriggerAction == TriggerAction.Update) LogDirectUpdate(…);

94 Felhasználási javaslatok  A CLR nem a Transact-SQL helyett van  A CLR modulok lehetővé teszik  Komplex, procedurális üzleti logika megvalósítását  Külső adatok elérését  Az üzleti logika SQL Serverben történő megvalósítását  Nem „kötelező” minden üzleti logikát kiszolgálóban megvalósítani  Skálázhatósági megfontolások

95 XML kezelés  XML támogatás az SQL Server 2000-ben  XML támogatás az SQL Server 2005-ben  Beépül az adatbázis-motorba –XML adattípus, XML manipuláció, XML indexek, XML sémák  XML adat-manipuláció a kiszolgálón

96 SQL Server 2000 – kiszolgáló XML be és XML ki sp_xml_preparedocument OpenXML XML DOM …… … … PhoneID name insert into … Table Table Table XML data Parse select … for xml … 5

97 SQL Server 2000 – középső réteg XML nézetek  Annotált leképező sémák (XDR, XSD)  SQLXML 3.0 SP2 PhoneAddress Last Name First Name Bul k loa d Person AddressLNPhoneFN Lekérdezés, updategram XML View 3 2 1

98 SQL Server 2005 XML a relációs adatbázisban  XML adattípus  Oszlop, változó, …  Típus nélküli, és/vagy séma gyűjteménnyel ellenőrzött  Ellenőrzések (constraint-ek) XML adatokon  Bináris, vagy szöveges tárolás (max. 2GB)  XML adatok lekérdezése és módosítása  XQuery (fejlődő W3C szabvány), XPath 2.0  Indexek XML oszlopokon  Elsődleges XML index: B+ fa minden címkén, értéken és ösvényen  Másodlagos XML indexek (PATH, PROPERTY, VALUE)

99 SQL Server 2005 A relációs és XML adatok integrációja  Egységes relációs és XML tároló  A meglevő SQL Server tároló motor és lekérdezés optimalizáló felhasználásával  A relációs és az XML záradékok ugyanabba az optimalizált lekérdezési tervbe kerülnek  Az integrált XML adattípus előnyei  Kevéssé strukturált adatok modellezése  A táblákra bontás, ill. újra összekapcsolás költsége eltűnik  Az XML feldolgozást az SQL Server optimalizálja  A meglevő relációs táblákba beilleszthető XML oszlopok nem igénylik a működő alkalmazások módosítását

100 Kiszolgáló oldali XML támogatás  Tárolás  XML adattípus, varchar(max), varbinary(max)  Táblákra bontás  openXML() és  XML metódusok –query() – XML dokumentum egy részének előállítása –value() – skaláris érték kiolvasása –exist() – létezés vizsgálata –nodes() – csomópontok keresése az XML dokumentumban –modify() – XML dokumentum egy részének módosítása

101 Kiszolgáló oldali XML támogatás (2)  Indexelés  XML indexek  Full-text index az elemek tartalmára  Lekérdezés  for xml … [type]  XQuery, XPath  XSD támogatás  CREATE XML SCHEMA COLLECTION  CLR támogatás  System.Xml névtér eszközei

102 Eszközök az XML dokumentumok kezeléséhez  XML szerkesztő SQL Server Management Studio-ban  Integration Services  XML dokumentum táblákra bontása  XML dokumentum XML oszlopokban történő tárolása

103 Adatmodellezési javaslatok  Strukturált adatok, ismert séma  relációs modell  Bevált, ismert technológia  Esetleg [n]varchar(max) oszlopok a tárolásra, ha nem akarjuk manipulálni a dokumentumot a kiszolgálón  XML adattípus  Egyszerű adatkezelés kevéssé strukturált adatok esetén  Jobb teljesítmény, mintha felbontanánk és újra összeállítanánk a komplex XML dokumentumokat  Egyszerű migráció text típusú oszlopról:  ALTER TABLE  ALTER TABLE ALTER COLUMN XML [XML schema collection]

104 XML kezelés összefoglalás  Gyengén strukturált adatok kezelése  Natív XML adattípus  Fejlett indexelés & lekérdezés optimalizálás  Modern programozási nyelv a kiszolgálón  Az XML támogatás beépül a relációs tárolóba és a lekérdezés optimalizálóba  Az SQL Server eszközei használhatók  hibakeresés, lekérdezési tervek, nyomkövetés – a meglevő eszközökkel

105 Transact-SQL újdonságok  Lekérdezések  Rekurzív lekérdezések  Rang függvények  Új relációs operátorok  Adatmódosítás – output záradékkel  Teljes-szöveges keresés  Új adattípusok  T-SQL procedurális bővítmények

106 Common Table Expression (CTE) és rekurzív lekérdezések  Rekurzív hierarchia bejárása egyetlen lekérdezéssel Felhasználás  Hierarchia egy táblában (főnök- beosztott, alkatrészek beépülése)  Keressük egy főnök összes beosztottját  Keressük egy termék beépülő alkatrészeit

107 Common Table Expression  SQL-99  Szintaxis: WITH ( ) AS ( ) SELECT … FROM … SELECT … FROM …  Lehet rekurzív és nem rekurzív  Nem rekurzív CTE:  Olvashatóbb lekérdezések

108 Rekurzív CTE  Önmagára hivatkozik  Rekurzív CTE definíció: UNION ALL  A rekurzió megáll, ha a második SELECT nem ad eredményt inicializálás gyűjtés

109 Rekurzív CTE példa WITH EmpCTE(ID, Név, Mgr, Szint) AS( SELECT EmployeeID, FirstName+' '+LastName, ReportsTo, 1 SELECT EmployeeID, FirstName+' '+LastName, ReportsTo, 1 FROM Employees FROM Employees WHERE ReportsTo is null WHERE ReportsTo is null UNION ALL UNION ALL SELECT E.EmployeeID, E.FirstName+' '+ E.LastName, E.ReportsTo, M.Szint+1 SELECT E.EmployeeID, E.FirstName+' '+ E.LastName, E.ReportsTo, M.Szint+1 FROM Employees AS E JOIN EmpCTE AS M FROM Employees AS E JOIN EmpCTE AS M ON E.ReportsTo = M.ID ON E.ReportsTo = M.ID) SELECT * FROM EmpCTE Northwind adatbázis

110 Rang és sorszám függvények  Az SQL-99 OLAP bővítmények szerint  RANK()  DENSE_RANK()  NTILE( )  ROW_NUMBER()  Szintaxis OVER( [PARTITION BY ] ORDER BY ) ORDER BY )

111 Rang és sorszám használata  Adatelemzés (RANK, DENSE_RANK, NTILE)  Sorrendeket generálhatunk különböző kritériumok szerint, egyetlen lekérdezésben  A megjelenítés sorrendje eltérhet a rangoktól  Lapozás a ROW_NUMBER segítségével  Nagyobb eredményhalmaz megjelenítése

112 Rang példa select ProductName, sum(Quantity), rank() over (order by sum( Quantity) desc), rank() over (order by max(od.UnitPrice)) from dbo.Products p join dbo.[Order Details] od on p.ProductID=od.ProductID join dbo.Orders o on od.OrderID=o.OrderID group by ProductName order by ProductName A termékek rangjának lekérdezése eladott darabszám és egységár szerint Northwind adatbázis

113 Sorszámozás példa select N=row_number() over (order by CustomerID), * from dbo.Orders Northwind adatbázis

114 TOP  SQL 2000: SELECT TOP  SQL 2000: SELECT TOP  SQL 2005: SELECT TOP ( )  INSERT, UPDATE, DELETE esetén is használható  A SET ROWCOUNT is használható –a SELECT utasítás esetén felülbírálja a TOP-ot –INSERT, UPDATE, DELETE esetén a TOP felülbírálja a SET ROWCOUNT-ot –A következő verzióban (  ) a SET ROWCOUNT nem fog hatni INSERT, UPDATE, DELETE esetén

115 Új relációs operátorok PIVOT, UNPIVOT, APPLY  PIVOT  Sorokból oszlopokat készít  Hasonló az Access TRANSFORM-hoz  UNPIVOT  A PIVOT ellentéte  APPLY  A külső tábla minden sorára kiértékel egy tábla értékű függvényt és a két táblát összekapcsolja

116 PIVOT példa, összegzés MakeYearSales Honda Acura Honda Acura SELECT * FROM T PIVOT(SUM(Sales) FOR Year IN ([1990], [1991])) t Make Honda Acura500600

117 PIVOT példa, név-érték párosítás SELECT * FROM table PIVOT(MIN(PropVal) FOR PropName IN ([Name],[Author])) t ObjIDPropNamePropVal 1Namex.doc 1CrDate12/3/2001 2NameSales.xls 2AuthorHiggins ObjIDNameAuthor1 x.doc NULL 2Sales.xlsHiggins

118 DML utasítás OUTPUT záradékkal  Az adatmódosító utasítás részeként sorokat tudunk visszaadni egy tábla változóba  Az Inserted és Deleted virtuális táblák tartalmazzák a régi és új értékeket Példa: UPDATE Orders SET status= 'processed' OUTPUT DELETED.*, INSERTED.* WHERE status='unprocessed'

119 Full-Text indexelés  Skálázhatóság, teljesítmény  Az index felépítése egy nagyságrenddel gyorsabb  A lekérdezések 30-50%-kal gyorsabbak

120 Full-Text - újdonságok  Thesaurus támogatás  Több oszlopos lekérdezések  CONTAINS((col1,col2), ‘Yukon’)  Jobb nyelv támogatás  Konfigurálható ékezetfüggőség  Elosztott lekérdezések:  Fulltext lekérdezés kapcsolt kiszolgálóra  Indexelt nézetek támogatása

121 Full-Text - adminisztráció  Az adatbázis mentés a full-text katalógusokat is tartalmazza  Adatbázis detach/attach a full-text katalógusokat is mozgatja  Példány szintű erőforrás (nincsenek megosztott komponensek)  Az MS Search az SQL Server biztonsági kontextusában fut

122 Varchar(max)  A varchar, nvarchar, varbinary kiterjesztése 2GB méretig create table T (Id int, Picvarbinary(max))  A text/ntext/image alternatívája  Minden string függvény működik a varchar(max)-on  Az UPDATE támogatja a darabolást UPDATE

123 DDL triggerek  Adatszerkezet módosításra induló triggerek  Minden DDL eseményre  CREATE_TABLE, ALTER_PROCEDURE, DROP_LOGIN, stb.  Adatbázis és kiszolgáló szinten  Az esemény adatait a trigger az eventdata() függvényen keresztül éri el

124 A DDL triggerek felhasználása  Fejlesztési szabályok érvényesítése  CREATE/ALTER visszagörgetése  Véletlen objektum eldobás megakadályozása  Objektum checkin/checkout  Forrás verziózás  Az adatbázis menedzsment naplózása

125 Kivételkezelés  Az “if kód helyett  Szintaxis: BEGIN TRY END TRY BEGIN CATCH END CATCH

126 Kivételkezelés - tranzakció  Tranzakció abortáló kivételek esetén a tranzakció „haldokló” állapotban marad egy explicit „rollback” kiadásáig  Haldokló tranzakcióban naplózott műveletek nem végezhetők  A kivételkezelés többnyire rollback-kel kezdődik  Új függvények a hibakód, hibaüzenet, súlyosság elérésére a CATCH blokkban  Újra lehet dobni az eredeti kivételt

127 Tranzakció abort példa CREATE PROCEDURE nvarchar(1000) AS int BEGIN TRY BEGIN TRAN BEGIN TRAN --idegen kulcs megsértés hiba --idegen kulcs megsértés hiba INSERT T1 INSERT T1 COMMIT TRAN COMMIT TRAN END TRY BEGIN CATCH ROLLBACK ROLLBACK INSERT T1_Log GETDATE()) INSERT T1_Log END CATCH

128 Utasítás szintű újrafordítás (recompile)  Nem kell az egész tárolt eljárást újrafordítani (mint az SQL2000-ben)  Az utasítás szintű tervek is a gyorsírótárba kerülnek a modul szintű tervekkel együtt  Hasznos, ha:  Változnak a tábla statisztikák  Nagy méretű tárolt eljárás újrafordítása helyett  Dinamikus SQL helyett

129 Összefoglalás  A Transact-SQL tovább él és virul  A Transact-SQL változatlanul a legjobb nyelv halmaz-orientált műveletekre  A.Net CLR kiváló procedurális lehetőségekkel bővíti az SQL Server fejlesztők eszköztárát

130 Címek, hivatkozások  SQL Server 2005    SQL Server 2005 Webcasts  sqlserver2005.mspx   lserver2005.mspx   MSDN  

131


Letölteni ppt "Az SQL Server 2005 relációs motorjának újdonságai Kószó Károly rendszermérnök Microsoft Magyarország."

Hasonló előadás


Google Hirdetések