system centralnej ewidencji kierowców i pojazdów
DESCRIPTION
System Centralnej Ewidencji Kierowców i Pojazdów. Opracował:Promotor: Tadeusz Pydamgr inż. Andrzej Ptasznik. System Centralnej Ewidencji Kierowców i Pojazdów. 1. Zadanie. Projekt i częściowa implementacja systemu Centralnej Ewidencji Kierowców i Pojazdów. System Centralnej - PowerPoint PPT PresentationTRANSCRIPT
System Centralnej Ewidencji Kierowców
i PojazdówOpracował: Promotor:Tadeusz Pyda mgr inż. Andrzej Ptasznik
System Centralnej Ewidencji Kierowców i Pojazdów
1. Zadanie
Projekt i częściowa implementacja systemu
Centralnej Ewidencji Kierowców i Pojazdów
System Centralnej Ewidencji Kierowców i Pojazdów
1. Zadanie
• 20 milionów posiadaczy Prawa Jazdy (CEPiK – stan na 31 grudnia 2011)
• Ponad 10 000 ośrodków szkolenia kierowców.• 24 189 000 zarejestrowanych pojazdów (GUS – stan na 31 grudnia 2011)
• Dziesiątki do setek milionów rocznie popełnianych wykroczeń i przestępstw drogowych.
System Centralnej Ewidencji Kierowców i Pojazdów
1. Zadanie
Baza danych
System Centralnej Ewidencji Kierowców i Pojazdów
1. Zadanie
99,999 %Wysoka dostępność
System Centralnej Ewidencji Kierowców i Pojazdów
1. Zadanie
Zarządzanie uprawnieniami i dostęp do zasobów
System Centralnej Ewidencji Kierowców i Pojazdów
1. Zadanie
Integracja podsystemów i problem zasilania systemu danymi
SAN
Active Directory
Aplikacje
Backup
Baza Danych
Zasilanie
systemu danymi
Reporting services
System Centralnej Ewidencji Kierowców i Pojazdów
2. Analiza
Anal
iza w
ymag
ań fu
nkcj
onal
nych
(UM
L)
Analiza wymagań pozafunkcjonalnych
Wybór technologii
System Centralnej Ewidencji Kierowców i Pojazdów
2.1. Diagramy UML i diagram ERD
System Centralnej Ewidencji Kierowców i Pojazdów
2.2. Analiza wymagań pozafunkcjonalnych
• Kompatybilność komponentów systemu.• Łatwość konfiguracji i zarządzania systemem.• Wysoka niezawodność systemu.• Techniczny aspekt zasilania systemu
aktualnymi danymi z systemów zewnętrznych.• Bezpieczeństwo danych.• Aplikacje i raportowanie.
System Centralnej Ewidencji Kierowców i Pojazdów
3. Implementacja
System Centralnej Ewidencji Kierowców i Pojazdów
3.1. Ogólny schemat implementowanego systemu
Windows Server Failover Cluster (pojedyncze WSFC obejmujące dwa centra danych )
Podstawowe centrum danychCentrum danych
odzyskiwania awaryjnego
AlwaysOn Availability Group
File Server
SQL 1 SQL 2SQL 3
SQL 4 Active Directory Exchange Server IIS Server
Odrębna sieć LAN zarezerwowana dla WSFC
Sieć LAN organizacji
System Centralnej Ewidencji Kierowców i Pojazdów
3.1. Windows Server 2012 Core Edition
D:\>setup.exe /qs /ACTION=Install /FEATURES=SQLEngine,FullText,Conn /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS="cekip.local\Administrator" /TCPENABLED=1 /SQLTEMPDBDIR="T:\MSSQLSERVER\110\MSSQL\Data" /SQLTEMPDBLOGDIR="L:\MSSQLSERVER\110\MSSQL\Data" /SQLUSERDBDIR="U:\MSSQLSERVER\110\MSSQL\Data" /SQLUSERDBLOGDIR="L:\MSSQLSERVER\110\MSSQL\Data" /IACCEPTSQLSERVERLICENSETERMS
System Centralnej Ewidencji Kierowców i Pojazdów
3.2. AlwaysOn z podziałem na 2 centra danych
Primary Data CenterDisaster Recovery
Data Center
SQL ServerPrimary
SQL ServerSecondary
Windows Server Failover Cluster (single WSFC crossing two data centers)
Availability Group
SQL Server
Secondary
Synchronous
Asynchronous
Additional Server for Node Majority Quorum Model
System Centralnej Ewidencji Kierowców i Pojazdów
3.2. AlwaysOn w MS SQL Management Studio
System Centralnej Ewidencji Kierowców i Pojazdów
3.3. Programowanie bazy danychCREATE TRIGGER dbo.odbierzPrawoJazdy ON dbo.wykroczenie FOR INSERT AS BEGIN DECLARE @suma INT; DECLARE @endDate DATETIME; DECLARE @dataBusted DATETIME; DECLARE @pes CHAR(11); SET @pes = (SELECT id_podmiot FROM inserted) SET @dataBusted = (SELECT data_uprawom FROM inserted) SET @endDate = (SELECT DATEADD(year, -2, GETDATE())) SET @suma = (SELECT SUM(pkt_karne) FROM dbo.wykroczenie WHERE id_podmiot = (SELECT id_podmiot FROM inserted) AND data_uprawom BETWEEN @endDate AND @dataBusted) IF @suma >= '21' BEGIN DECLARE @body NVARCHAR(MAX) = N''; DECLARE @id CHAR(14); IF (SELECT PESEL FROM dbo.podmiot WHERE dbo.podmiot.id_podmiot = @pes) IS NOT NULL BEGIN SELECT @body =+ 'Kierowca o numerze PESEL: ' + CHAR(11) + RTRIM(PESEL) + ' przekroczył dopuszczalną liczbę 21 punktów karnych.' FROM dbo.podmiot WHERE dbo.podmiot.id_podmiot = @pes; EXEC msdb.dbo.sp_send_dbmail @recipients = '[email protected]', @profile_name = 'SQL Server', @subject = 'Utrata prawa jazdy', @body = @body; END END END GO
CREATE PROCEDURE SP_updateAdres @pesel CHAR(11), @regon CHAR(14), @a xml AS IF @pesel IS NOT NULL BEGIN UPDATE dbo.podmiot SET adres.modify (N'insert sql:variable("@a") as last into (/adres)[1]') WHERE dbo.podmiot.PESEL = @pesel END ELSE BEGIN UPDATE dbo.podmiot SET adres.modify (N'insert sql:variable("@a") as last into (/adres)[1]') WHERE dbo.podmiot.regon = @regon END GO
GO CREATE VIEW pojazdSkradz AS SELECT Tbl.Col.value('marka[1]', 'VARCHAR(20)') AS Marka, Tbl.Col.value('model[1]', 'VARCHAR(20)') AS Model, Tbl.Col.value('urzad_komunikacji[1]/nazwa_urzedu_komunikacji[1]', 'VARCHAR(50)') AS 'Urzad komunikacji' FROM pojazd X CROSS APPLY X.dane_pojazd.nodes('//pojazd') Tbl(Col) WHERE stat ='1' GO
System Centralnej Ewidencji Kierowców i Pojazdów
3.3. Programowanie bazy danych - XMLsource <xs:element name="pojazd">
<xs:complexType> <xs:sequence> <xs:element ref="marka" maxOccurs="1"/> <xs:element ref="typ" maxOccurs="1"/> <xs:element ref="model" maxOccurs="1"/> <xs:element ref="wariant" maxOccurs="1"/> <xs:element ref="wersja" maxOccurs="1"/> <xs:element ref="rodzaj" maxOccurs="1"/> <xs:element ref="rok_prod" maxOccurs="1"/> <xs:element ref="vin" maxOccurs="1"/> <xs:element ref="data_1_rej" maxOccurs="1"/> <xs:element ref="badanie_tech" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="zastrzezenia" maxOccurs="unbounded"/> <xs:element ref="extra_tech_test" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="urzad_komunikacji" maxOccurs="unbounded"/> <xs:element ref="ubezpieczenie" maxOccurs="unbounded"/> <xs:element ref="tech_info" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element>
GO CREATE VIEW pojazdSkradz AS SELECT Tbl.Col.value('marka[1]', 'VARCHAR(20)') AS Marka, Tbl.Col.value('model[1]', 'VARCHAR(20)') AS Model, Tbl.Col.value('urzad_komunikacji[1]/nazwa_urzedu_komunikacji[1]', 'VARCHAR(50)') AS 'Urzad komunikacji' FROM pojazd X CROSS APPLY X.dane_pojazd.nodes('//pojazd') Tbl(Col) WHERE stat ='1'
System Centralnej Ewidencji Kierowców i Pojazdów
3.4. Implementacja – prezentacja danych
System Centralnej Ewidencji Kierowców i Pojazdów
3.5. Implementacja – zasilanie systemu danymi
System Centralnej Ewidencji Kierowców i Pojazdów
Podsumowanie i wnioski
• Ograniczenia.• Osiągnięte cele poznawcze.• Napotkane problemy.• Praca inżynierska jako résumé kształcenia w WWSI.
System Centralnej Ewidencji Kierowców i Pojazdów
Dziękuję za uwagę.