Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Tworzenie typów danych i tabel

Podobne prezentacje


Prezentacja na temat: "Tworzenie typów danych i tabel"— Zapis prezentacji:

1 Tworzenie typów danych i tabel
PANIE DZIEKANIE, SZANOWNA KOMISJO, SZANOWNI PT RECENZENCI, SZANOWNI PAŃSTWO Podczas dzisiejszego seminarium zaprezentuję wyniki moich prac nad rozprawą doktorską pt. „Badania nad algorytmami syntezy statycznych obrazów medycznych – na przykładzie znamion melanocytowych skóry”. Rozprawa została przygotowana pod kierunkiem Prof. Zdzisława Hippe. UWAGI: 1. Czcionka Times New Roman wszędzie 2. Przykład znamion … - kursywą, ale w podtytule (Partycjonowanie tabel) dr inż. Łukasz Piątek Katedra Systemów Ekspertowych i Sztucznej Inteligencji, Instytut Informatyki Biomedycznej Wyższa Szkoła Informatyki i Zarządzania z siedzibą w Rzeszowie

2 Informacje podstawowe
Partycjonowanie tabel dostępne jest tylko w edycjach Enterprise i Developer SQL Server (oraz wersje ewaluacyjne), Partycjonowanie obiektów bazy danych: umożliwia zwiększenie wydajności (szybkość dostępu do danych), oraz ułatwia zarządzanie, Partycjonowanie tabeli polega na podzieleniu na mniejsze części, Nie jest wymagane jednak, aby podział skutkował fizycznym ro-złożeniem tabeli pomiędzy kilka fizycznych plików rozmiesz-czonych na fizyczne dyski twarde (zwiększenie wydajności samej aplikacji, ponieważ dane odczytywane są równocześnie przy udziale wielu głowic dysku twardego). Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych)

3 Partycjonowanie tabel (przykład)
Przykład – wykorzystanie podziału horyzontalnego, względem pewnego klucza nałożonego na wiersze tabeli: Na przykład tabela zawierająca 100 milionów wierszy może zostać podzielona na 12 partycji (mniejszych tabel) reprezentujących kolejne miesiące w roku. Jeżeli zapytanie wymaga danych z określonego miesiąca, to będzie odwoływało się do określonej części (partycji) tabeli, a nie do całego zbioru. Najistotniejszym pytaniem, na które należy odpowiedzieć, jest w jaki sposób wyznaczyć klucz partycjonowania tabeli. Odpowiedź na to pytanie wymaga przeprowadzenia analizy biznesowej, ponieważ jako klucz partycjonowania powinny zostać wybrane te kolumny, które pozwolą odwoływać się do jak najmniejszej liczby partycji. Typowym zastosowaniem partycjonowania tabeli jest podział ze względu na „wiek” danych. Można wyobrazić sobie sytuację, w której tabela zawiera dane z ostatnich dwóch lat, ale tylko dane z ostatniego miesiąca są najczęściej potrzebne. Można więc w taki sposób podzielić tabelę, aby w jednej partycji znajdowały się dane tylko z ostatniego miesiąca, a pozostałe dane znajdą się na innej lub innych partycjach. Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych)

4 Proces partycjonowania tabeli
Proces partycjonowania (podziału) tabeli: Utworzenie odpowiedniej liczby grup plików, Wstawienie do każdej grupy pliku, zawierającego partycję tabeli, Utworzenie funkcji partycjonującej, Wykonanie schematu partycjonowania – powiązanie funkcji partycjonują-cej oraz grup plików, w których będą przechowywane kolejne partycje ta-beli, Utworzenie definicji tabeli (CREATE TABLE) i wskazanie we frazie ON schematu partycjonowania (a nie grupy plików, jak dla tabel niepartycjo-nowanych). Uprawnienia – rola serwerowa sysadmin lub role bazodanowe (db_owner, db_ddladmin) Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych)

5 Proces partycjonowania tabeli (c.d.2)
Utworzenie grupy plików – należy rozważyć wszystkie uwa-runkowania biznesowe oraz znać dobrze dane, ich przyrost oraz rozkład zanim zostanie podjęta decyzja o liczbie grup plików, które mają być utworzone. W naszym przypadku utworzone zostaną cztery grupy plików: Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych) USE master GO ALTER DATABASE AdventureWorks ADD FILEGROUP grupa_1 ALTER DATABASE AdventureWorks ADD FILEGROUP grupa_2 ALTER DATABASE AdventureWorks ADD FILEGROUP grupa_3 ALTER DATABASE AdventureWorks ADD FILEGROUP grupa_4

6 Proces partycjonowania tabeli (c.d.3)
Następnie do każdej nowej grupy plików należy wstawić pliki. W praktyce, każdy plik zostałby umieszczony na osobnym dysku, aby zwiększyć szybkość odczytu i zapisu danych. Jednak w przykładzie pliki zostaną utworzone w jednym katalogu: ALTER DATABASE [AdventureWorks] ADD FILE (NAME = N'AdventureWorks_D1', FILENAME = N'C:\BazyDanych\DAY_2\MOD_2\AdventureWorks_D1.ndf', SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [grupa_1] GO (NAME = N'AdventureWorks_D2', FILENAME = N'C:\BazyDanych\DAY_2\MOD_2\AdventureWorks_D2.ndf', SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [grupa_2] GO (NAME = N'AdventureWorks_D3', FILENAME = N'C:\BazyDanych\DAY_2\MOD_2\AdventureWorks_D3.ndf', SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [grupa_3] GO (NAME = N'AdventureWorks_D4', FILENAME = N'C:\BazyDanych\DAY_2\MOD_2\AdventureWorks_D4.ndf', SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [grupa_4] GO Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych)

7 Proces partycjonowania tabeli (c.d.4)
Następnie Po utworzeniu grup plików i wstawieniu plików należy zdefiniować funkcję partycjonującą, która określa sposób podziału tabeli na partycje. Na tym etapie nie wskazuje się, która kolumna będzie kluczem partycjonowania, wiadomo jedynie jakiego typu jest ten klucz (w tym wypadku – int). W definicji funkcji partycjonującej nie podaje się również nazwy tabeli: Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych) USE AdventureWorks GO CREATE PARTITION FUNCTION funkcja_SalesOrderDetail(int) AS RANGE RIGHT FOR VALUES(50000,60000,70000) W pokazanym powyżej przypadku kluczem partycjonowania będzie ko-lumna o typie int, a do kolejnych partycji trafią przedziały wartości (1) od 0 do (pierwsza partycja), (2) od do (druga), (3) od do (trzecia) oraz (4) od (czwarta). Słowo kluczowe RIGHT w definicji funkcji oznacza, że wartości brzegowe (50000, i 70000) trafią do kolejnej partycji.

8 Proces partycjonowania tabeli (c.d.5)
Ostatnim krokiem przed podziałem tabeli na partycje jest utworzenie schematu partycjonowania, który wykorzysta funkcje partycjonującą wykonaną w poprzednim punkcie. Tak, jak w przypadku funkcji, podczas tworzenia schematu partycjo-nowania nie trzeba podawać nazwy tabeli w jego definicji. tabeli: Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych) USE AdventureWorks GO CREATE PARTITION SCHEME schemat_SalesOrderDetail AS PARTITION funkcja_SalesOrderDetail TO (grupa_1,grupa_2,grupa_3,grupa_4)

9 Proces partycjonowania tabeli (c.d.6)
Obiekty, które zostały wykonane, czyli funkcja i schemat partycjono-wania, można odnaleźć w SSMS w Eksploratorze obiektów. Należy wy-brać bazę danych AdventureWorks2008 a następnie przejść do sek-cji Storage: Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych)

10 Proces partycjonowania tabeli (c.d.7)
Po utworzeniu wszystkich wymaganych obiektów należy przystąpić do utworzenia partycjonowanej tabeli. Należy w niej podać nazwę schematu, względem którego zostanie podzielona na partycje. Nazwę tą wskazuje się we frazie ON nazwa_schematu(nazwa_klucza): USE [AdventureWorks] GO CREATE TABLE [Sales].[Kopia_SalesOrderDetail] ( [SalesOrderID] [int] NOT NULL, [SalesOrderDetailID] [int] IDENTITY(1,1) NOT NULL, [CarrierTrackingNumber] [nvarchar](25) NULL, [OrderQty] [smallint] NOT NULL, [ProductID] [int] NOT NULL, [SpecialOfferID] [int] NOT NULL, [UnitPrice] [money] NOT NULL, [UnitPriceDiscount] [money] NOT NULL, [LineTotal] AS (isnull(([UnitPrice]*((1.0)-[UnitPriceDiscount]))*[OrderQty],(0.0))), [rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL, [ModifiedDate] [datetime] NOT NULL, CONSTRAINT [PK_SalesOrderDetail_SalesOrderDetailID] PRIMARY KEY CLUSTERED ( [SalesOrderID] ASC, [SalesOrderDetailID] ASC ) ON schemat_SalesOrderDetail([SalesOrderID]) Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych)

11 Wprowadzenie danych do tabeli
Po utworzeniu tabeli i podzieleniu jej na partycje można wypełnic ją danymi. Ponieważ wykonana w poprzednim punkcie tabela jest kopią tabeli Sales.SalesOrderDetail to najprościej będzie wypełnić ją już istniejącymi danymi: Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych) USE [AdventureWorks] GO INSERT INTO [Sales].[Kopia_SalesOrderDetail] ( [SalesOrderID] ,[CarrierTrackingNumber] ,[OrderQty] ,[ProductID] ,[SpecialOfferID] ,[UnitPrice] ,[UnitPriceDiscount] ,rowguid ,[ModifiedDate] ) SELECT [SalesOrderID] ,[CarrierTrackingNumber] ,[OrderQty] ,[ProductID] ,[SpecialOfferID] ,[UnitPrice] ,[UnitPriceDiscount] ,NEWID() ,[ModifiedDate] FROM [Sales].[SalesOrderDetail] GO

12 Wyświetlanie danych Po wypełnieniu tablicy danymi można sprawdzić, do których partycji dane zostały faktycznie zapisane. Kod zapytania, które wyświetla informację, w której partycji znajduje się dany wiersz: USE AdventureWorks GO SELECT SalesOrderDetailId, [SalesOrderID], $PARTITION.funkcja_SalesOrderDetail ([SalesOrderID]) AS 'Numer partycji' FROM Sales.Kopia_SalesOrderDetail Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych) Wynik:

13 Wyświetlanie danych (c.d.)
Poniższe zapytanie wyświetla informację o ilości wierszy w danej partycji. Pozwala to ocenić, czy funkcja partycjonująca została wybrana poprawnie, czy może należy ją zmodyfikować. W idealnym przypadku partycje powinny być zapełnione równą ilością elementów, ale w praktyce jest to trudne do osiągnięcia: Genezą prowadzonych badań jest związana z rolą informacji obrazowej, jaką odgrywa ona we współczesnej medycynie, w tym: zastosowanie obrazów syntetycznych (tj. generowanych komputerowo) do celów dydaktycznych, wykorzystanie obrazów syntetycznych w komputerowych systemach wspomagania diagnostyki obrazowej jako obrazy referencyjne (wzorzec porównawczy dla analizowanych obrazów rzeczywistych) SELECT $PARTITION.funkcja_SalesOrderDetail ([SalesOrderID]) AS 'Numer partycji', COUNT(*) AS 'Liczba elementów' FROM Sales.Kopia_SalesOrderDetail GROUP BY $PARTITION.funkcja_SalesOrderDetail ([SalesOrderID]) ORDER BY [Numer partycji] GO Wynik:

14 Dziękuję za uwagę… Wyższa Szkoła Informatyki i Zarządzania
ul. Sucharskiego 2, Rzeszów, Polska Dziękuję za uwagę…


Pobierz ppt "Tworzenie typów danych i tabel"

Podobne prezentacje


Reklamy Google