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

  • 3,003 views
Uploaded on

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 …

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.

More in: Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,003
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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

Transcript

  • 1.
  • 2. Reprezentacja i obsługa hierarchii w SQL Server 2008/2008R2
    Łukasz Grala
    MVP SQL Server | MCT
  • 3. Ł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
  • 4. 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
  • 5. Hierarchie
    Wprowadzenie
    lukasz@grala.biz
  • 6. 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
  • 7. Hierarchie
    lukasz@grala.biz
  • 8. Hierarchie
    GRAF – zbiór węzłów i krawędzi
    Drzewo – specjalny graf
    Hierarchia odmiana drzewa
    lukasz@grala.biz
  • 9. Hierarchie
    Reprezentacja w SQL Server 2008/2008R2
    lukasz@grala.biz
  • 10. Reprezentacja w SQL Server 2008
    XML
    HierarchyId
    Self-Join
    lukasz@grala.biz
  • 11. Reprezentacja w SQL Server 2008
    XML
    CREATE TABLE XMLOrg
    (
    Orgidint,
    Orgdataxml
    ) ;
    lukasz@grala.biz
  • 12. Hierarchie - XML
    Xpath
    XQuery
    lukasz@grala.biz
  • 13. Reprezentacja w SQL Server 2008
    Self-Join
    lukasz@grala.biz
  • 14. Reprezentacja w SQL Server 2008
    Self-Join
    lukasz@grala.biz
  • 15. 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
  • 16. Demo
    Self-Join
    lukasz@grala.biz
  • 17. Hierarchie
    Self-Join i rekurencja
    lukasz@grala.biz
  • 18. 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
  • 19. Demo
    Self-Join i CTE (rekurencja)
    lukasz@grala.biz
  • 20. Hierarchie
    HierarchyID
    lukasz@grala.biz
  • 21. Hierarchie
    Typ do reprezentacji hierarchii
    Posiada własne metody
    Optymalne - kompaktowe składowanie (duża „kompresja”)
    lukasz@grala.biz
  • 22. HierarchyId - indeksy
    DEPTH-FIRST INDEX
    lukasz@grala.biz
  • 23. HierarchyId - indeksy
    BREADTH-FIRST INDEX
    lukasz@grala.biz
  • 24. Indeksy
    CREATE CLUSTERED INDEX Org_Breadth_First
    ON Organization(OrgLevel, BusinessEtityID);
    CREATE UNIQUE INDEX Org_Depth_First
    ON Organization(BusienssEntityID);
    lukasz@grala.biz
  • 25. Demo
    HierarchyID
    lukasz@grala.biz
  • 26. Hierarchie
    Metody HierarchyID
    lukasz@grala.biz
  • 27. Metody HierarchyID
    T-SQL
    CLR / .Net
    Dynamiczne .
    Statyczne ::
    lukasz@grala.biz
  • 28. Metody HierarchyID
    GetAncestor()
    GetDescendant()
    GetRoot()
    IsDescendantOf()
    Parse()
    Read()
    GetReparentedValue()
    ToString()
    Write()
    lukasz@grala.biz
  • 29. 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
  • 30. Demo
    Metody HierarchyID
    lukasz@grala.biz
  • 31. Hierarchie
    Porównanie Self-Join i hierarchyID
    lukasz@grala.biz
  • 32. Porównanie Self-Join i HierarchyID
    lukasz@grala.biz
  • 33. Demo
    Porównanie Self-Join i hierarchyID
    lukasz@grala.biz
  • 34. Pytania?
    Prowadzi blogi:
    http://powerpivot.info.pl
    http://sqlresearch.com
    Kontakt:
    lukasz@grala.biz
  • 35. Dziękuję za uwagę
    Prowadzi blogi:
    http://powerpivot.info.pl
    http://sqlresearch.com
    Kontakt:
    lukasz@grala.biz