• Save
Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp
Upcoming SlideShare
Loading in...5
×
 

Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp

on

  • 3,241 views

W życiu mamy często do czynienia z hierarchią. Problem pojawia się jak mamy ją odpowiednio zapisać w bazie danych, żeby później z niej efektywnie korzystać. W ramach sesji będą ...

W życiu mamy często do czynienia z hierarchią. Problem pojawia się jak mamy ją odpowiednio zapisać w bazie danych, żeby później z niej efektywnie korzystać. W ramach sesji będą przedstawione zagadnienia związane zarówno z reprezentacją hierarchii przy użyciu złączenia self-join, jak i przy użyciu nowego typu hirarchyid. W ramach sesji przedstawione będą metody korzystania z obu reprezentacji i porównanie ich wydajności.
Prezentacja z konferencji 2nd Sielesian CodeCamp która odbyła się 9 kwietnia 2011 roku.

Statistics

Views

Total Views
3,241
Views on SlideShare
1,322
Embed Views
1,919

Actions

Likes
0
Downloads
1
Comments
0

3 Embeds 1,919

http://ziembor.pl 1255
http://sqlresearch.com 660
http://www.sqlresearch.com 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Grafy – cykliczne, acykliczne, Drzewo – acykliczny graf, gdzie między dodolnymi dwoma węzłami istnieje tylko jedna ścieżkaHierarchia – drzewo z jednym korzeniem, gdzie każdy następny węzeł ma jednego rodzica
  • Grafy – cykliczne, acykliczne, Drzewo – acykliczny graf, gdzie między dodolnymi dwoma węzłami istnieje tylko jedna ścieżkaHierarchia – drzewo z jednym korzeniem, gdzie każdy następny węzeł ma jednego rodzica
  • Grafy – cykliczne, acykliczne, Drzewo – acykliczny graf, gdzie między dodolnymi dwoma węzłami istnieje tylko jedna ścieżkaHierarchia – drzewo z jednym korzeniem, gdzie każdy następny węzeł ma jednego rodzica
  • Grafy – cykliczne, acykliczne, Drzewo – acykliczny graf, gdzie między dodolnymi dwoma węzłami istnieje tylko jedna ścieżkaHierarchia – drzewo z jednym korzeniem, gdzie każdy następny węzeł ma jednego rodzica
  • Grafy – cykliczne, acykliczne, Drzewo – acykliczny graf, gdzie między dodolnymi dwoma węzłami istnieje tylko jedna ścieżkaHierarchia – drzewo z jednym korzeniem, gdzie każdy następny węzeł ma jednego rodzica
  • Grafy – cykliczne, acykliczne, Drzewo – acykliczny graf, gdzie między dodolnymi dwoma węzłami istnieje tylko jedna ścieżkaHierarchia – drzewo z jednym korzeniem, gdzie każdy następny węzeł ma jednego rodzica
  • Grafy – cykliczne, acykliczne, Drzewo – acykliczny graf, gdzie między dodolnymi dwoma węzłami istnieje tylko jedna ścieżkaHierarchia – drzewo z jednym korzeniem, gdzie każdy następny węzeł ma jednego rodzica

Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp Presentation Transcript

  • Reprezentacja i obsługa hierarchii w SQL Server 2008/2008R2
    Łukasz Grala
    MVP SQL Server | MCT
  • Łukasz Grala – MVP SQL Server | MCT
    Niezależny konsultant (bazy i hurtownie danych, data mining, analiza danych, audyty baz danych – SQL Server, BI, SQL Azure, konsolidacja BI w SharePoint 2010)
    Trener technologii Microsoft, wykładowca na wyższych uczelniach
    Lider Polish SQL Server User Group (PLSSUG) Poznań
    Prelegent na wielu konferencjach informatycznych
    Prowadzi blogi:
    http://powerpivot.info.pl
    http://sqlresearch.com
    Kontakt:
    lukasz@grala.biz
  • Agenda
    Co to jest hierarchia?
    Hierarchie w SQL Server 2008/2008R2
    Self-Join i rekurencja
    Typ hierarchyid
    Metody hierarchyid
    Porównanie metod reprezentacji
    lukasz@grala.biz
  • Hierarchie
    Wprowadzenie
    lukasz@grala.biz
  • Hierarchie
    Słownik
    Pracownicy
    Organizacja
    BoM (Bill of Material)
    Zadania w projekcie
    System plików
    Wizualizacja stron web (mapa serwisów)
    Klas / Obiektów
    lukasz@grala.biz
  • Hierarchie
    lukasz@grala.biz
  • Hierarchie
    GRAF – zbiór węzłów i krawędzi
    Drzewo – specjalny graf
    Hierarchia odmiana drzewa
    lukasz@grala.biz
  • Hierarchie
    Reprezentacja w SQL Server 2008/2008R2
    lukasz@grala.biz
  • Reprezentacja w SQL Server 2008
    XML
    HierarchyId
    Self-Join
    lukasz@grala.biz
  • Reprezentacja w SQL Server 2008
    XML
    CREATE TABLE XMLOrg
    (
    Orgidint,
    Orgdataxml
    ) ;
    lukasz@grala.biz
  • Hierarchie - XML
    Xpath
    XQuery
    lukasz@grala.biz
  • Reprezentacja w SQL Server 2008
    Self-Join
    lukasz@grala.biz
  • Reprezentacja w SQL Server 2008
    Self-Join
    lukasz@grala.biz
  • Self-Join
    SELECT
    prac.ID_Employee, prac.LastName,
    manager.FirstName, manager.LastName
    FROM Employee prac JOIN Employee manager
    ON prac.ID_Manager = manager.ID_Employee
    lukasz@grala.biz
  • Demo
    Self-Join
    lukasz@grala.biz
  • Hierarchie
    Self-Join i rekurencja
    lukasz@grala.biz
  • Self-Join i rekurencja
    AnchorMember – początek drzewa rekurencji
    Operator UNION ALL
    RecursiveMember – połączenie self-join z CTE
    SELECT ManagerID, EmployeeID
    FROM Employee WHERE ManagerID = NULL
    UNION ALL
    SELECT c.ManagerID, e.EmployeeID
    FROM Employee e JOIN CTE c ON c.EmoloyeID = e.ManagerID
    lukasz@grala.biz
  • Demo
    Self-Join i CTE (rekurencja)
    lukasz@grala.biz
  • Hierarchie
    HierarchyID
    lukasz@grala.biz
  • Hierarchie
    Typ do reprezentacji hierarchii
    Posiada własne metody
    Optymalne - kompaktowe składowanie (duża „kompresja”)
    lukasz@grala.biz
  • HierarchyId - indeksy
    DEPTH-FIRST INDEX
    lukasz@grala.biz
  • HierarchyId - indeksy
    BREADTH-FIRST INDEX
    lukasz@grala.biz
  • Indeksy
    CREATE CLUSTERED INDEX Org_Breadth_First
    ON Organization(OrgLevel, BusinessEtityID);
    CREATE UNIQUE INDEX Org_Depth_First
    ON Organization(BusienssEntityID);
    lukasz@grala.biz
  • Demo
    HierarchyID
    lukasz@grala.biz
  • Hierarchie
    Metody HierarchyID
    lukasz@grala.biz
  • Metody HierarchyID
    T-SQL
    CLR / .Net
    Dynamiczne .
    Statyczne ::
    lukasz@grala.biz
  • Metody HierarchyID
    GetAncestor()
    GetDescendant()
    GetRoot()
    IsDescendantOf()
    Parse()
    Read()
    GetReparentedValue()
    ToString()
    Write()
    lukasz@grala.biz
  • Metody w CLR/.Net
    SqlHierarchyId parent, child1, child2;
    parent = SqlHierarchyId.GetRoot();
    child1 = parent.GetDescendant(SqlHierarchyId.Null, SqlHierarchyId.Null);
    child2 = parent.GetDescendant(child1, SqlHierarchyId.Null);
    Console.Write(parent.GetDescendant(child1, child2).ToString());
    lukasz@grala.biz
  • Demo
    Metody HierarchyID
    lukasz@grala.biz
  • Hierarchie
    Porównanie Self-Join i hierarchyID
    lukasz@grala.biz
  • Porównanie Self-Join i HierarchyID
    lukasz@grala.biz
  • Demo
    Porównanie Self-Join i hierarchyID
    lukasz@grala.biz
  • Pytania?
    Prowadzi blogi:
    http://powerpivot.info.pl
    http://sqlresearch.com
    Kontakt:
    lukasz@grala.biz
  • Dziękuję za uwagę
    Prowadzi blogi:
    http://powerpivot.info.pl
    http://sqlresearch.com
    Kontakt:
    lukasz@grala.biz