Upload
ottila-stiehl
View
107
Download
1
Embed Size (px)
Citation preview
SQL Server 2008{ Was ist neu für Entwickler? }Jens K. Süßmeier, Daniel Walzenbach
DB Consultant, Developer EvangelistMicrosoft Deutschland GmbH
Überblick
Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies
Unstrukturierte DatenFileStream
VARBINARY(MAX)Unstrukturierte Daten werden direkt in NTFS Dateisystem gespeichertZwei Programmiermodelle
T-SQL (genau wie SQL BLOB)Win32 Streaming APIs mit T-SQL transaktionaler Semantik
Transaktionales VerhaltenBessere Handbarkeit
Backup/restoreSQL Server Sicherheit
Dateigröße nur durch das Dateisystem limitiert
BLOBs in DB + Datei-system
speichern
Anwendung
BLOB
DB
{ Unstrukturierte Daten }
demoDer FileStream Datentyp
Überblick
Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies
Neue Zeiten sind angebrochen
DateTimeOffset(n)
DateTime2(n)
Date
Time(n)
Neue Zeiten sind angebrochen Date
Enthält nur den DatumswertFeste Größe von 3 byteSpanne: 01.01.0001 – 31.12.9999Bsp: 31-08-2007, 2007-08-31
Neue Zeiten sind angebrochen Time(n)
Enthält nur den ZeitwertVariable Größe von 3-5 byte (je nach konfigurierter Genauigkeit)Genauigkeit bis zu 100 Nanosekunden möglich)Bsp: 08:17:36.22332
Neue Zeiten sind angebrochen DateTimeOffset(n)
Datum und Uhrzeit inklusive der ZeitzonenverschiebungVariable Größe von 8-10 byte (je nach konfigurierter Genauigkeit, bis zu 100 Nanosekunden möglich)Bsp: 2007-08-31 08:17:36.22332 01:00
Neue Zeiten sind angebrochen DateTime2(n)
Kombination aus dem neuen Date und Time Datentyp mit erweiterter Spanne und PräzisionVariable Größe von 6-8 byte (je nach gewünschter Genauigkeit)Genauigkeit bis zu 100 Nanosekunden möglich)Spanne von 01.01.0001 – 31.12.9999Bsp: 31-08-2007 08:17:36.22332
Neue Zeiten sind angebrochen Visual Studio 2008
Erweiterung des SqlDbType Enum und der Clientbibliotheken
SQL Server Type .NET Typedate System.DateTime time System.TimeSpan datetimeoffset System.DateTimeOffs
et datetime2 System.DateTime
Überblick
Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies
T-SQL VerbesserungenHierarchyID Datentyp
Perfekter Einsatz für Unternehmensorganisation, Stücklisten, etc…
Repräsentiert eine Position in einer HierarchieKompakte/effiziente SpeicherungBeliebige Datensätze speichern/löschenLeistungsfähige Abfragen
GetRoot, GetLevel, IsDescendant, ReParent, etc.
Hierarchische Daten in SQL 2005
Parent ID <- ChildIDEinfach Daten einzupflegen aber…Aufwändig in der Abfrage
Rekursion
Hierarchische Daten in SQL 2008
Neuer „Built-In“ Datentyp – HierarchyIDSQLCLR basierte System UDT
Kann auch in .NET (VB.NET, C#) verwendet werden (SqlHierarchyId)
Als path enumeration model implementiert (ORDPATH)HierarchyID (SQLCLR Typ) kann erweitert werden
Von dem Typ ableitenUm Methoden und Properties erweitern
HierarchyID erweitern
Da HierarchyID ein SQLCLR Typ istKann von dem Typ abgeleitet werdenErweitern um Methoden und Properties
HierarchyID IndexstrategienDepth-first
Knoten in einem Unterbaum sind benachbart angeordnet
Effizient für Fragen nach Unterbäumen„Suche nach allen Dateien in diesem und den untergeordneten Ordnern“
CREATE UNIQUE INDEX Org_Depth_First ON Organization(EmployeeID)
HierarchyID Indexstrategien Breadth-first
Knoten in einer Ebene sind benachbart angeordnet
Effizient für Fragen nach direkt unterstellten Knoten„Suche nach allen Angestellten eines Managers“
CREATE CLUSTERED INDEX Org_Breadth_First ON Organization(OrgLevel,EmployeeID)
{ Hierarchische Daten }
demo Hierarchische Struktur
anlegen verwalten
Überblick
Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies
Merge statementAusgangslage
Für einen Abgleich müssen drei separate statements erzeugt werden (INSERT/UPDATE/DELETE) und nacheinander ausgeführt werdenEine explizite Transaktion muss über alle DML Operationen separat gepflegt werden um bei Fehlern das Rollback zu ermöglichen
Merge statementAnwendungsgebiete
Bietet die Möglichkeit für die gleichzeitige Verwendung von DML Operationen (INSERT / UPDATE / DELETE) in einer AnweisungBietet die Möglichkeit Änderungen in einem Batch durch den Client übertragen zu lassen und die Logik serverseitig auszuführenBefüllungen eines DataWareHouseBatchUpdate von ClientsSynchronisieren von Datenquellen
Merge statement Syntax
[ WITH <common_table_expression> [,...n] ]MERGE [ TOP ( expression ) [ PERCENT ] ] [ INTO ] target_table [ [ AS ] table_alias ] [ WITH ( <merge_hint> ) ]USING <table_source>(… 58 lines of syntax following…)
Merge statement Aktionen
WHEN MATCHED (INNER JOIN)Ermöglicht Operationen wenn Datensätze sowohl in der Quelle als auch im Ziel vorhanden sind
WHEN [TARGET] NOT MATCHED (LEFT OUTER JOIN)
Ermöglicht Operationen wenn Datensätze in der Quelle aber nicht im Ziel existieren
Merge statement Aktionen
WHEN SOURCE NOT MATCHED (RIGHT OUTER JOIN)
Ermöglicht Operationen wenn Datensätze im Ziel aber nicht in der Quelle existieren
Merge statement Vorteile
MERGE ist transaktional und benötigt keine explizite Transaktion für die beinhaltetenden DML OperationenMERGE löst Trigger nur einmal pro Aktion aus (BTW: Triggers are fired per statement NOT per row! )$action ermöglicht es die ausgeführte Aktion (INSERT / UPDATE / DELETE) des Datensatzes zu erkennen
Merge statement Vorteile
UPDATE Nicht-deterministisch: Mehrere gefundene (durch ON clause) Datensätze in der Quelltabelle
MERGE Deterministisch: Join (ON clause) erwartet einen eindeutigen Datensatz in der Quelle
{ Merge }
demoDie Verwendung von Merge Statements
Überblick
Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies
Integrierte Volltextsuche
Komplett neue Volltextsuche Architektur
Volltextsuche als Feature der DatenbankVolltextkataloge sind in DB inregriertUmfassend Konfiguration von „Noise Words“
„Noise Word“ Konfiguration bleibt bei Backup/Restore und Detach/Attach intakt
Suchergebnisse visualisierenVerbesserte SuchergebnisseQuery und Indexing Performance deutlich gesteigert
{ Integrierte Volltextsuche }
demo Volltext Index anlegen, abfragen, mit SQL Serve 2005 vergleichen
Überblick
Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies
Table-valued parameterAusgangslage
Batch Updates benötigten bisher mehrere Roundtrips zum Server um einen Abgleich zu machenSenden von strukturierten Daten war bisher nicht möglich, außer diese auf dem Server wieder zu zerlegen (TextArrays, XML, Binärdaten)Untypisierte Daten führten oftmals zu serverseitigen Fehlern
Table-valued parameterAusgangslage
Grundlage sind benutzerdefinierte Tabellentypen
Erweiterung der benutzterdefinierten Typen, der Typ wird in sys.table_types persistiertErweiterung der bestehenden “Create Type” Syntax
CREATE TYPE myTableType AS TABLE (id INT, name NVARCHAR(100),qty INT);
DECLARE @MyVar myTableType
Table-valued parameterAnwendung
Table-valued parameters
Verwendung von benutzerdefinierte Tabellentypen für die temporäre Speicherung von und den lesenden Zugriff auf die Daten (READONLY)Vereint Vorteile von Tabellenvariablen und temporären Tabellen
Table-valued parameterAnwendung
Ermöglicht die Übergabe als SqlParameter von Instanzen der Typen
DataTableDbDataReaderSystem.Collections.Generic.IList<SqlDataRecord>
Unterstützung der client stacks OLEDB/ODBC/ADO.NET Erweiterung der .NET (3.x) Client durch den neuen SqlDbType „Structured“
Table-valued parameterVorteile
Ermöglicht große Mengen an Daten vom Client an den Server effizient (zur weiteren Verarbeitung) zu übertragenBietet die Möglichkeit Parameter / Datensätze an Routinen in einer Variable zu übergeben (vs. XML, BLOB, CSV und andere Möglichkeiten die zusätzliche Verarbeitungen benötigen) Verringert bei großen Datenmengen die Anzahl der erzeugten Roundtrips erheblich
{ Table-valued parameters}
demoMit Table-valued parameters arbeiten
Überblick
Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies
Geodaten
Geodaten sind vielfältig einsetzbarPlanare (ebene Welt) und geodätische (runde Welt) AlgorithmenVisualisierung von Geodaten mit dem Virtual Earth SDKAustausch von Geodaten über GML XMLIntegration von Geodaten in .NET AnwendungenVerbesserte Performance durch „Spatial Indexes“
47.6456,-122.12551
Geodaten Geography Datentyp
Geodätisches Modell („Runde Erde“)Beschreibt Punkte, Linien und Gebiete durch Längen- und BreitengradeBerechnet Erdkrümmung und berücksichtigt korrekte „Großkreis“-Entfernungen
Geodaten Geometry Datentyp
Ebenes Modell („Flache Erde“)Beschreibt Punkte, Linien und Gebiete durch X/Y KoordinatenEinsetzbar für kleine Gebiete und nichtprojezierte Oberflächen wie Innenräume, etc.
Geodaten Methoden des Geometry Datentyps
OGC Methoden (43)Erweiterte Methoden (10)OGC Statische Methoden (16)Erweiterte Statische Methoden (4)
{ JobScout24 }
Sven SchneiderTeamleiter SoftwareentwicklungJobScout24
Partner
{ Geodaten }
demo Übersicht Geodaten Mit Geodaten arbeiten
Überblick
Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies
Die kleinen Dinge im Leben…
C# Unterstüzung für SSIS-Tasks
Large UDTsDie Größe von 8k wurde gebrochen, neue mögliche Größe der UDTs ist 2GB
Intellisense in SQL Server Management Studio
Die Kleinen Dinge im Leben…
Row constructors
SELECT * FROM (VALUES
(10002,1,12,1,12), (10002,1,12,1,12), (10003,1,12,1,12)
) AS SomeOrders(OrderId, ProductId, UnitPrice, Quantity, Discount)
Die kleinen Dinge im Leben…
Row constructors
Insert Into [Order Details]VALUES (10001,1,12,1,12) , (10002,1,12,1,12) , (10003,1,12,1,12)
Die kleinen Dinge im Leben…
INSERT over DMLErweiterung zu OUPUT INTO AnweisungErmöglicht die Speicherung und Verarbeitung der DML relevanten Informationen (INSERTED /DELETED / $Actions)
Update [Order Details]SET Discount = 0 WHERE Price < 10
Update [Order Details]SET Discount = 0OUTPUT DELETED.OrderId, DELETED.PosIdINTO OrdersThatChangedWHERE Price < 10
INSERT INTO OrdersThatChanged(OrderId,PosId)SELECT OrderId,PosId FROM(
Update [Order Details]SET Discount = 0OUTPUT DELETED.OrderId, DELETED.PosIdWHERE Price < 10
) ChangedOrders (OrderId, PosId)WHERE ProductId > 1000
Die kleinen Dinge im Leben…
Zuweisungsoperatoren+=, -=, *=, /=, &=,|=,%=,^=
UPDATE [Order Details]SET Discount *= 1.1FROM [Order Details] ODINNER JOIN Orders ODON O.OrderId = OD.OrderIdWHERE OrderId = 10001
Variableninititalisierungen
DECLARE @MyInt INT = 0
Die kleinen Dinge im Leben…
Variableninititalisierungen
Zuweisungsoperatoren+=, -=, *=, /=, &=,|=,%=,^=
UPDATE [Order Details]SET Discount *= 1.1FROM [Order Details] ODINNER JOIN Orders ODON O.OrderId = OD.OrderIdWHERE OrderId = 10001
DECLARE @MyInt INT = 0
Die kleinen Dinge im Leben…
Intellisense :-)
Zusammanfassung
SQL Server 2008 ermöglicht ein effektiveres Arbeiten mit Daten
Geo- und unstrukturierte DatenT-SQL VerbesserungenNeue DatentypenSynchronisierungen von DatenADO.NET Entity Framework…
Resources
Learn more about data programmabilityhttp://www.microsoft.com/sql/2008/technologies/dataprogrammability.mspx
Learn more about spatial datahttp://www.microsoft.com/sql/2008/technologies/spatial.mspx
Learn more about SQL Server 2008http://www.microsoft.com/sql/2008/default.mspx
Discover SQL Server 2008: Webcasts, Virtual Labs, and White Papershttp://www.microsoft.com/sql/2008/learning/default.mspx
SQL Server 2008 traininghttp://www.microsoft.com/learning/sql/2008/default.mspx
Download latest SQL Server CTPhttp://www.microsoft.com/sql/2008/prodinfo/download.mspx
Join the SQL PASS communityhttp://www.sqlpass.org
Visual Studio 2008weitere Angebote
Visual Studio Team System Information DayRegelmäßige ganztägige Informationsveranstaltung von MicrosoftPraxisnahe Demos & viel Raum für DiskussionenDetails & Anmeldung: www.event-team.com/events/visualstudio
TeamConf 2008 – Die Visual Studio Team System KonferenzVSTS in der Praxis - 22.-24. April 2008 in MünchenAnwenderberichte (Siemens, ABB, Commerzbank, Datev, Münchener Rück,..)Fach- und TechnologievorträgeVortragsprogramm und Anmeldung: www.teamconf.de
Visual Studio Launch PromotionTauschen Sie Ihre Visual Studio Standard in eine höherwertige Visual Studio Edition Ihrer Wahl Anrechnung in Höhe von 299 € beim Kauf eines anderen VS Produktesvom 19. Februar bis zum 30. April 2008Nur bei den Partnern: PC Ware, SoftExpress, SOS und Zoschke (befinden sich alle in der Ausstellerhalle)
Ask the ExpertsWir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.