1. Czy mi się przyda hierarchyid?
80. spotkanie PLSSUG Warszawa, 09.10.2014.
2. O czym będzie?
• O hierarchiach ogólnie
• Hierarchyid jako takie
• Męczenie i dręczenie hierarchyid
• Ograniczenia i możliwości
• Linki i literatura
3. O mnie
Bartosz Ratajczyk
programista baz danych
(i aplikacji)
czasem też administrator
PHP, JS, C#, T-SQL, SAS 4GL
http://bartekr.net | b.ratajczyk@gmail.com | MCTS, MCP
5. Przykłady hierarchii
• schemat organizacyjny firmy
• system plików
• kategorie sklepu internetowego
• wątki dyskusji
• wykaz składników (bill of materials)
• masa innych
• (i innych)
6. Jak to sensownie obsługiwać w bazie?
• Adjacency List
• Nested sets
• Closure table/bridge table
• Lineage column / materialized path
• (inne)
11. Hierarchyid
• typ danych .NET
• materialized path w wersji MS
• wystarczy jedna kolumna do obsługi hierarchii
• duże upakowanie danych
• zawsze bez problemów dodasz węzeł potomny
• domyślnie przeszukuje w dół hierarchii
17. Są pewne ograniczenia
• maksymalny rozmiar węzła to 892 bajty
• kanoniczna reprezentacja poziomu/węzła nie
dłuższa niż 14-15 znaków
• chyba że mamy węzeł „z kropkami”
18. Ale i zalety
• zajmuje mało miejsca
• wystarczy jedna kolumna do obsługi hierarchii
• wygodny zestaw metod do obsługi
20. Co zapamiętać
• zajmuje niewiele miejsca
• metody tylko generują identyfikator
• programista robi całą robotę
21. Do poczytania
• Microsoft SQL Server 2008 Bible – Paul
Nielsen et al.
• Inside Microsoft SQL Server 2008: T-SQL
Querying – Itzik Ben-Gan et al.
• Joe Celko’s Trees and Hierarchies in SQL for
Smarties, Second Edition – Joe Celko
22. Linki
• Jak może działać hierarchyid:
http://www.adammil.net/blog/v100_how_the_SQL_Server_hierarc
hyid_data_type_works_kind_of_.html
• Przykłady porównań metod obsługi hierarchii
– Bill Karwin - http://www.slideshare.net/billkarwin/models-for-hierarchical-
data str. 69 lub http://www.slideshare.net/billkarwin/sql-antipatterns-
strike-back str. 77
– Stackoverflow: http://stackoverflow.com/questions/4048151/what-are-
the-options-for-storing-hierarchical-data-in-a-relational-database
• Jedno z porównań prędkości działania obsługi hierarchii w MS SQL
http://jsimonbi.wordpress.com/2011/03/01/sql-hierarchy-comparative-
performance-2/
• Patent metody Davida Chandlera:
http://www.google.com/patents/US6480857