Changes between Version 3 and Version 4 of DataStoringOrganization


Ignore:
Timestamp:
02/08/26 16:12:18 (3 weeks ago)
Author:
185022
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DataStoringOrganization

    v3 v4  
    5151}}}
    5252
    53 == Партиционирање на Encounters по датум
    54 
    55 За табелата `encounters` е креирана партициска функција - `pf_Encounters_Year (datetime2)` со `boundaries: 2000, 2010, 2020, 2030` и партициска шема `ps_Encounters_Year` која ги мапира партициите на горните filegroups.
     53== Партиционирање
     54
     55=== Партициски функции и шема
     56
     57Поради тоа што `encounters`, `medications`, `observations` и `procedures` користат ист тип за колоната за датум - `datetime2`, тие може да користат иста функција - `pf_Encounters_Year` и иста партициска шема - `ps_Encounters_Year`.
     58
     59Табелата `conditions` користи различен тип за датум - `date`, па за неа ќе се направи посебна партициска функција и шема.
     60
     61==== `pf_Encounters_Year` и `ps_Encounters_Year`
     62
     63Партициската функција - `pf_Encounters_Year (datetime2)` е креирана со `boundaries: 2000, 2010, 2020, 2030`.
     64
     65Партициската шема `ps_Encounters_Year` ги мапира партициите на горните `filegroups`.
    5666
    5767{{{#!sql
     
    7888}}}
    7989
    80 === Clustered индекс на `encounters` со партиционирање
    81 
    82 Партиционирањето реално се применува ког clustered индексот е креиран врз партициската шема.
     90* `range right` значи дека граничната вредност припаѓа на десната (повисока) партиција.
     91
     92==== `pf_Conditions_Year` и `ps_Conditions_Year`
     93
     94{{{#!sql
     95create partition function pf_Conditions_Year (date)
     96as range right for values
     97(
     98    '2000-01-01',
     99    '2010-01-01',
     100    '2020-01-01',
     101    '2030-01-01'
     102);
     103go
     104
     105create partition scheme ps_Conditions_Year
     106as partition pf_Conditions_Year to
     107(
     108    FG_Old,
     109    FG_2000s,
     110    FG_2010s,
     111    FG_2020s,
     112    FG_Future
     113);
     114go
     115}}}
     116
     117=== Clustered индекси со партиционирање
     118
     119Партиционирањето реално се применува кога clustered индексот е креиран врз партициската шема.
     120
     121Помалите табели како `allergies` и `immunizations` не се партиционирани затоа што се помали и не зависат од временски период.
     122
     123==== `encounters`
    83124
    84125{{{#!sql
    85126create clustered index CI_Encounters_StartDate_Id
    86127on encounters(start, Id)
     128with (drop_existing = off)
    87129on ps_Encounters_Year(start);
     130go
     131}}}
     132
     133==== `observations`
     134
     135{{{#!sql
     136create clustered index CI_Observations_Date_Patient
     137on observations([date], patient)
     138with (drop_existing = off)
     139on ps_Encounters_Year([date]);
     140go
     141}}}
     142
     143==== `medications`
     144
     145{{{#!sql
     146create clustered index CI_Medications_Start
     147on medications([start], patient)
     148with (drop_existing = off)
     149on ps_Encounters_Year([start]);
     150go
     151}}}
     152
     153==== `procedures`
     154
     155{{{#!sql
     156create clustered index CI_Procedures_Start
     157on procedures([start], patient)
     158with(drop_existing = off)
     159on ps_Encounters_Year([start]);
     160go
     161}}}
     162
     163==== `conditions`
     164
     165{{{#!sql
     166create clustered index CI_Conditions_Start
     167on conditions([start], patient)
     168with (drop_existing = off)
     169on ps_Conditions_Year([start]);
     170go
    88171}}}
    89172
    90173=== Верификација
     174
     175Проверката е слична за сите табели.
     176
     177Подолу е прикажан пример само за `encounters` табелата.
    91178
    92179==== Проверка дека датотечните групи се креирани исправно