41
SQL Server 2008 { FileStream und Geodaten } Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Embed Size (px)

Citation preview

Page 1: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

SQL Server 2008{ FileStream und Geodaten }Daniel Walzenbach

Developer EvangelistMicrosoft Deutschland GmbH

Page 2: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Agenda

Unstrukturierten DatenGeodatenHierarchische Daten

Page 3: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Speichern unstrukturierter Daten Herausforderungen

Moderne Anwendungen speichern zunehmend unstrukturierte Daten

BilderVideosDokumente…

Datenmenge wächst jährlich um ca. 35%

Davon 85% unstrukturierte DatenWie können diese Daten gespeichert werden?

Page 4: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Derzeitige Lösungsansätze BLOB in der DB speichern (varbinary(max))

Transaktional konsistente DatenEinfaches Sichern/Wiederherstellen der DatenEinheitliches Programmiermodell und Berechtigungskonzept

Große DatenbankenSchlechte StreamingperformanceBeschränkung der Dateigröße auf 2GBVergleichsweise teuer

Page 5: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Derzeitige Lösungsansätze BLOB im Dateisystem, Verweis in DB

Kleine DatenbankenGute StreamingperformanceDateigröße nur durch Dateisystem begrenztVergleichsweise günstig

Transaktional inkonsistente DatenUnterschiedliche BerechtigungssystemeSichern/Wiederherstellen der Daten nicht trivial

Page 6: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Die Lösung: FileStream Vorteile beider Welten kombinieren

Transaktional konsistente DatenEinfaches Sichern/Wiederherstellen der Daten (integriert in SQL Backup)Einheitliches BerechtigungskonzeptGute StreamingperformanceDateigröße nur durch Dateisystem begrenztVergleichsweise günstig

Page 7: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

FileStream Wie funktioniert FileStream?

BLOBs (varbinary(max)) werden von SQL Server im Dateisystem verwaltet

BLOBs werden in eigenem Verzeichnis gespeichert (erfordert NTFS)

Verzeichnisse sind durch ACLs geschütztZwei Programmiermodelle

T-SQLWin32 Stream-API mit T-SQL Transaktionskontext

Page 8: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

FileStream Konfiguration

FileStream auf Server aktivierenNur T-SQLLokaler DateisystemzugriffLokaler und Remote Dateisystemzugriff

Ablageort in CREATE DATABASE festlegenFILEGROUP FileStreamGroup1

CONTAINS FILESTREAM(NAME = FSMedia, FILENAME = N‘C:\Demos\FSData‘)

Tabelle muss GUID-Feld enthalten ROWGUIDCOL NOT NULL UNIQUE

Page 9: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

FileStream Einschränkungen

Nicht unterstützt werdenDB SnapshotDB MirroringTransparente Verschlüsselung

Page 10: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

FileStream Einsatzzweck

Zu speichernde Daten sind im Schnitt größer als 1 MBSchneller, lesender Zugriff ist wichtigFür kleinere Datensätze bietet varbinary(max) (in der Datenbank gespeichert) häufig bessere Performance

varbinary(max), varchar(max) und XML Datentypen werden nach wie vor unterstützt

Page 11: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

{ FileStream demo }

Konfiguration des Servers

Zugriff auf FileStream Objekte mit T-SQL und .NET

Demo

Page 12: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Geodaten

Geodaten geben Antworten auf Fragen wie…

Welche Straßen kreuzen ein bestimmtes Gelände?Überlappen sich bestimmte Gebiete?Liste aller italienischen Restaurants im Umkreis von 5km?

Geodaten sind Bestandteil vieler Datenbanken

Adressen zu Kunden?

Page 13: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Spatial Datentypen

Das Open Geospatial Consortium (OGC) definiert eine Hierarchie von Geodatentypen

PointLinestringPolygonMultiPointMultiLinestringMultiPolygonGeomCollectionNicht instanziierbare Klassen auf denen diese Typen aufbauen

Page 14: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

OGC Hierarchie von Geodaten

Page 15: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

SQL Server 2008 und Geodaten

SQL Server unterstützt zwei Geodatentypen

GEOMETRY – flaches ErdmodellGEOGRAPHY – rundes Erdmodell

Beide Typen unterstützen alle OGC Typen

InstanceOf kann die Typen unterscheidenUnterstützung zweidimensionaler Daten

X und Y oder Längen-/BreitengradZ – Höhenangabe (benutzerdef. Semantik)M – Maßeinheit (benutzerdef. Semantik)

Page 16: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

GEOGRAPHY Anforderungen

GEOGRAPHY Typ hat weitere AnforderungenKoordinaten werden in Breiten-/Längengrad eingegeben

Ändert sich zu Längengrad/Breitengrad vor RTM

Koordinaten von außengelegene Polygonringe müssen „gegen den Uhrzeiger“ angegeben werden, innen liegende (Löcher) „mit dem Uhrzeiger“Ein einzelnes Geometrieobjekt kann nicht mehr als eine halbe logische Hemisphäre umfassen

Page 17: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Innen oder außen?

GEMOETRY arbeitet „in der Ebene“Ein Polygon ist unabhängig der Ausrichtung eindeutig definiert

Page 18: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Innen oder außen

Welche Fläche definiert einen Polygonzug um den Äquator?

Page 19: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Innen oder außen?

„Linke Hand“ Regel

Page 20: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Properties und Methods

Geodaten Typen sind SQLCLR UDTs'.' Syntax für Properties'.' Syntax für Instanzmethoden'::' Syntax für statische MethodenMethoden und Properties sind case-sensitive

Page 21: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Methoden und Properties

Jeder Typ unterstützt eine Anzahl von Methoden und Properties, die mit den OGC übereinstimmt

Zusätzliche Erweiterungen für die Typen (MakeValid, Reduce, …)GEOMETRY implementiert alle OGC Properties und MethodenGEOGRAPHY implementiert die meisten OGC Eigenschaften und Properties

Page 22: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Eingabe von Geodaten

Geodaten werden binär gespeichertInstanzen des Typs können NULL seinEingabe als

Well Known binary - ST[Type]FromWKBWell Known text - ST[Type]FromTextGeography Markup Language (GML) - GeomFromGml

Außerdem SQLCLR FunktionenParsePoint

Page 23: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Ausgabe von Geodaten

Geodaten können ausgegeben werden als

Well Known binary - STAsBinaryWell Known text - STAsTextGML - AsGmlText mit Z und M Werten - AsTextZM

SQLCLR Methode ToString – Gibt „Well Known text“ zurückAls SQLCLR Object - SqlGeometry, SqlGeographyAndere nützliche Formate: GeoRSS, KML

Nicht direkt unterstützt

Page 24: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

SRID (Spatial Reference Identifier)

Eine SRID pro GeodatensatzSRID legt die Spezifikation fest

4326 – GPS, 4269 – ESRI, …SRID 0 – keine spezielle Referenz. Default für GEOMETRY

Nur Geodaten mit der gleichen SRID können zusammen verarbeitet werden

Rückgabewerde ansonsten NULLSRID muss einen Eintrag von sys.spatial_reference_systems referenzieren

Page 25: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Nützliche Methoden/Properties

BeschreibendSTAreaSTLengthSTCentroid

Beziehungen zwischen zwei InstanzenSTIntersectsSTDistance

CollectionsSTGeometryNSTPointN

Page 26: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

SELECT *FROM roads WHERE roads.geom.Intersects(@ms)=1

Beispiel

Welche Straßen kreuzen das Firmengelände von Microsoft?

Page 27: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Extension Methods

SQL Server 2008 erweitert den OGC Standard

MakeValid – Konvertiert zu OGC gültiger InstanzBufferWithTolerence – erlaubt Annäherung und AbweichungReduce – Vereinfacht komplexe Geometrie (GEOMETRY/GEOGRAPHY)GML Unterstützung…

Page 28: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Spatial Indexes GEOMETRY Datentyp

Page 29: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Spatial Indexes GEOGRAPHY Datentyp

Page 30: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

{ Spatial demo }

Geodaten im Überblick

Demo

Page 31: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

T-SQL VerbesserungenHierarchyID Datentyp

Perfekter Einsatz für Unternehmensorganisation, Stücklisten, etc…

Repräsentiert eine Position in einer HierarchieKompakte/effiziente Speicherung

6*logAn (A = Anzahl Kinder, n = Anzahl Knoten)

Beliebige Datensätze speichern/löschenLeistungsfähige Abfragen

GetRoot, GetLevel, IsDescendant, ReParent, etc.

Page 32: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Hierarchische Daten in SQL 2005

Parent ID <- ChildIDEinfach Daten einzupflegen aber…Aufwändig in der Abfrage

Rekursion

Page 33: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

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

Page 34: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

HierarchyID erweitern

Da HierarchyID ein SQLCLR Typ istKann von dem Typ abgeleitet werdenErweitern um Methoden und Properties

Page 35: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

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)

Page 36: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

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)

Page 37: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

{ HierarchyID demo }

Speichern hierarchischer Daten

Demo

Page 38: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

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

Page 39: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

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)

Page 40: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

Ask the ExpertsWir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.

Page 41: Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH

© 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.