1 / 58

SQL Server 2008 { Was ist neu für Entwickler? }

SQL Server 2008 { Was ist neu für Entwickler? }. Jens K. Süßmeier , Daniel Walzenbach DB Consultant, Developer Evangelist Microsoft Deutschland GmbH. Überblick. Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche

verlee
Télécharger la présentation

SQL Server 2008 { Was ist neu für Entwickler? }

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL Server 2008{Was ist neu für Entwickler?} Jens K. Süßmeier, Daniel Walzenbach DB Consultant, Developer Evangelist Microsoft Deutschland GmbH

  2. Überblick • Mit unstrukturierten Daten arbeiten • Neue Zeiten sind angebrochen • Hierarchische Daten • MERGE • Integrierte Volltextsuche • Table Value parameters, Table rowconstructor • Geodaten • Goodies

  3. Unstrukturierte DatenFileStream BLOBs in DB + Datei-system speichern • VARBINARY(MAX) • Unstrukturierte Daten werden direkt in NTFS Dateisystem gespeichert • Zwei Programmiermodelle • T-SQL (genau wie SQL BLOB) • Win32 Streaming APIs mit T-SQL transaktionaler Semantik • Transaktionales Verhalten • Bessere Handbarkeit • Backup/restore • SQL Server Sicherheit • Dateigröße nur durch das Dateisystem limitiert Anwendung BLOB DB

  4. { Unstrukturierte Daten} demo DerFileStreamDatentyp

  5. Überblick • Mit unstrukturierten Daten arbeiten • Neue Zeiten sind angebrochen • Hierarchische Daten • MERGE • Integrierte Volltextsuche • Table Value parameters, Table rowconstructor • Geodaten • Goodies

  6. Neue Zeiten sind angebrochen Date Time(n) DateTimeOffset(n) DateTime2(n)

  7. Neue Zeiten sind angebrochenDate • Enthält nur den Datumswert • Feste Größe von 3 byte • Spanne: 01.01.0001 – 31.12.9999 • Bsp: 31-08-2007, 2007-08-31

  8. Neue Zeiten sind angebrochenTime(n) • Enthält nur den Zeitwert • Variable Größe von 3-5 byte (je nach konfigurierter Genauigkeit) • Genauigkeit bis zu 100 Nanosekunden möglich) • Bsp: 08:17:36.22332

  9. Neue Zeiten sind angebrochenDateTimeOffset(n) • Datum und Uhrzeit inklusive der Zeitzonenverschiebung • Variable 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

  10. Neue Zeiten sind angebrochen DateTime2(n) • Kombination aus dem neuen Date und Time Datentyp mit erweiterter Spanne und Präzision • Variable 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.9999 • Bsp: 31-08-2007 08:17:36.22332

  11. Neue Zeiten sind angebrochenVisual Studio 2008 • Erweiterung des SqlDbTypeEnum und der Clientbibliotheken

  12. Überblick • Mit unstrukturierten Daten arbeiten • Neue Zeiten sind angebrochen • Hierarchische Daten • MERGE • Integrierte Volltextsuche • Table Value parameters, Table rowconstructor • Geodaten • Goodies

  13. T-SQL VerbesserungenHierarchyID Datentyp • Perfekter Einsatz für • Unternehmensorganisation, Stücklisten, etc… • Repräsentiert eine Position in einer Hierarchie • Kompakte/effiziente Speicherung • Beliebige Datensätze speichern/löschen • Leistungsfähige Abfragen • GetRoot, GetLevel, IsDescendant, ReParent, etc.

  14. Hierarchische Daten in SQL 2005 • Parent ID <- ChildID • Einfach Daten einzupflegen aber… • Aufwändig in der Abfrage • Rekursion

  15. Hierarchische Daten in SQL 2008 • Neuer „Built-In“ Datentyp – HierarchyID • SQLCLR basierte System UDT • Kann auch in .NET (VB.NET, C#) verwendet werden (SqlHierarchyId) • Als pathenumeration model implementiert (ORDPATH) • HierarchyID (SQLCLR Typ) kann erweitert werden • Von dem Typ ableiten • Um Methoden und Properties erweitern

  16. HierarchyIDerweitern • DaHierarchyIDein SQLCLR Typist • Kann von demTypabgeleitetwerden • Erweitern um Methoden und Properties

  17. 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)

  18. HierarchyID IndexstrategienBreadth-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)

  19. { Hierarchische Daten} demo • HierarchischeStruktur • anlegen • verwalten

  20. Überblick • Mit unstrukturierten Daten arbeiten • Neue Zeiten sind angebrochen • Hierarchische Daten • MERGE • Integrierte Volltextsuche • Table Value parameters, Table rowconstructor • Geodaten • Goodies

  21. MergestatementAusgangslage • Für einen Abgleich müssen drei separate statements erzeugt werden (INSERT/UPDATE/DELETE) und nacheinander ausgeführt werden • Eine explizite Transaktion muss über alle DML Operationen separat gepflegt werden um bei Fehlern das Rollback zu ermöglichen

  22. MergestatementAnwendungsgebiete • Bietet die Möglichkeit für die gleichzeitige Verwendung von DML Operationen (INSERT / UPDATE / DELETE) in einer Anweisung • Bietet die Möglichkeit Änderungen in einem Batch durch den Client übertragen zu lassen und die Logik serverseitig auszuführen • Befüllungen eines DataWareHouse • BatchUpdate von Clients • Synchronisieren von Datenquellen

  23. MergestatementSyntax [ 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…)

  24. MergestatementAktionen • 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

  25. MergestatementAktionen • WHEN SOURCE NOT MATCHED (RIGHT OUTER JOIN) • Ermöglicht Operationen wenn Datensätze im Ziel aber nicht in der Quelle existieren

  26. MergestatementVorteile • MERGE ist transaktional und benötigt keine explizite Transaktion für die beinhaltetenden DML Operationen • MERGE löst Trigger nur einmal pro Aktion aus (BTW: Triggers arefired per statement NOT per row! ) • $action ermöglicht es die ausgeführte Aktion (INSERT / UPDATE / DELETE) des Datensatzes zu erkennen

  27. MergestatementVorteile • 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

  28. { Merge } demo Die Verwendung von Merge Statements

  29. Überblick • Mit unstrukturierten Daten arbeiten • Neue Zeiten sind angebrochen • Hierarchische Daten • MERGE • Integrierte Volltextsuche • Table Value parameters, Table rowconstructor • Geodaten • Goodies

  30. Integrierte Volltextsuche • Komplett neue Volltextsuche Architektur • Volltextsuche als Feature der Datenbank • Volltextkataloge sind in DB inregriert • Umfassend Konfiguration von „Noise Words“ • „Noise Word“ Konfiguration bleibt bei Backup/Restore und Detach/Attach intakt • Suchergebnisse visualisieren • Verbesserte Suchergebnisse • Query und Indexing Performance deutlich gesteigert

  31. { Integrierte Volltextsuche} demo Volltext Index anlegen, abfragen, mit SQL Serve 2005 vergleichen

  32. Überblick • Mit unstrukturierten Daten arbeiten • Neue Zeiten sind angebrochen • Hierarchische Daten • MERGE • Integrierte Volltextsuche • Table Value parameters, Table rowconstructor • Geodaten • Goodies

  33. Table-valuedparameterAusgangslage • Batch Updates benötigten bisher mehrere Roundtrips zum Server um einen Abgleich zu machen • Senden 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

  34. Table-valuedparameterAusgangslage • Grundlage sind benutzerdefinierte Tabellentypen • ErweiterungderbenutzterdefiniertenTypen, derTypwird in sys.table_typespersistiert • Erweiterungderbestehenden “Create Type” Syntax CREATE TYPE myTableType AS TABLE (id INT, name NVARCHAR(100),qty INT); DECLARE @MyVarmyTableType

  35. Table-valuedparameterAnwendung • Table-valuedparameters • 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

  36. Table-valuedparameterAnwendung • Ermöglicht die Übergabe als SqlParameter von Instanzen der Typen • DataTable • DbDataReader • System.Collections.Generic.IList<SqlDataRecord> • Unterstützung der clientstacks OLEDB/ODBC/ADO.NET • Erweiterung der .NET (3.x) Client durch den neuen SqlDbType „Structured“

  37. Table-valuedparameterVorteile • Ermöglicht große Mengen an Daten vom Client an den Server effizient (zur weiteren Verarbeitung) zu übertragen • Bietet 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

  38. { Table-valued parameters} demo MitTable-valuedparameters arbeiten

  39. Überblick • Mit unstrukturierten Daten arbeiten • Neue Zeiten sind angebrochen • Hierarchische Daten • MERGE • Integrierte Volltextsuche • Table Value parameters, Table rowconstructor • Geodaten • Goodies

  40. Geodaten • Geodaten sind vielfältig einsetzbar • Planare (ebene Welt) und geodätische (runde Welt) Algorithmen • Visualisierung von Geodaten mit dem Virtual Earth SDK • Austausch von Geodaten über GML XML • Integration von Geodaten in .NET Anwendungen • Verbesserte Performance durch „Spatial Indexes“ 47.6456, -122.12551

  41. Geodaten Geography Datentyp • Geodätisches Modell („Runde Erde“) • Beschreibt Punkte, Linien und Gebiete durch Längen- und Breitengrade • Berechnet Erdkrümmung und berücksichtigt korrekte „Großkreis“-Entfernungen

  42. GeodatenGeometry Datentyp • Ebenes Modell („Flache Erde“) • Beschreibt Punkte, Linien und Gebiete durch X/Y Koordinaten • Einsetzbar für kleine Gebiete und nichtprojezierte Oberflächen wie Innenräume, etc.

  43. GeodatenMethoden des Geometry Datentyps • OGC Methoden (43) • ErweiterteMethoden (10) • OGC StatischeMethoden (16) • ErweiterteStatischeMethoden (4)

  44. {JobScout24} Partner Sven Schneider TeamleiterSoftwareentwicklung JobScout24

  45. { Geodaten} demo Übersicht Geodaten Mit Geodaten arbeiten

  46. Überblick • Mit unstrukturierten Daten arbeiten • Neue Zeiten sind angebrochen • Hierarchische Daten • MERGE • Integrierte Volltextsuche • Table Value parameters, Table rowconstructor • Geodaten • Goodies

  47. Die kleinen Dinge im Leben… • C# Unterstüzung für SSIS-Tasks • Large UDTs • Die Größe von 8k wurde gebrochen, neue mögliche Größe der UDTs ist 2GB • Intellisense in SQL Server Management Studio

  48. Die Kleinen Dinge im Leben… • Rowconstructors 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)

  49. Die kleinen Dinge im Leben… • Rowconstructors Insert Into [Order Details]VALUES (10001,1,12,1,12) , (10002,1,12,1,12) , (10003,1,12,1,12)

  50. Die kleinen Dinge im Leben… • INSERT over DML • Erweiterung zu OUPUT INTO Anweisung • Ermö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 = 0 OUTPUT DELETED.OrderId, DELETED.PosId INTO OrdersThatChanged WHERE Price < 10 INSERT INTO OrdersThatChanged (OrderId,PosId) SELECT OrderId,PosId FROM ( Update [Order Details] SET Discount = 0 OUTPUT DELETED.OrderId, DELETED.PosId WHERE Price < 10 ) ChangedOrders (OrderId, PosId) WHERE ProductId > 1000

More Related