prisoner management system sql server 2008 replication · • publisher = baza de date care...
TRANSCRIPT
Prisoner Management SystemSQL Server 2008 Replication
Mihai Matei, MCSD, MCTDaniel Bitin, MCITP, MCDBA, MCSD
Agenda
EssensysPMS WebArhitecturaSQL Server 2008 ReplicationMetodologieQ & A
1
2
3
4
5
6
Essensys1 3 4 5 62
1 Essensys
Essensys1 3 4 5 62
Daniel Bitin Mihai Matei
Quality Software on Time !
Essensys1 3 4 5 62
Oameni•MCITP - BI Dev, DB Dev, DB Dev 2008, DB Admin, etc.•MCPD•MCTS - Web Dev, Windows Dev, etc.•MCDBA•MCSD .Net•MCT•MCP
Essensys1 3 4 5 62
Oameni Proces
•Microsoft Solutions Framework•ISO9001, IQNet•Tailoring•Influente: SCRUM, FDD
Essensys1 3 4 5 62
Oameni Proces Tehnologie
•.Net Framework 3.5 – 1.0•SQL Server 2008-2000•Sharepoint•Office•Dynamics CRM
Essensys1 3 4 5 62
Business Intelligence Solutions
• SQL Server 2008, 2005, 2000• Reporting Services• Integration Services• Analysis Services• Crystal Reports
Essensys1 3 4 5 62
Business Intelligence Solutions
Custom Solutions
• Application integration• Workflow solutions• Web based applications• Windows forms• Web services• Windows services• Simulation solutions
Essensys1 3 4 5 62
Business Intelligence Solutions
Custom Solutions
Collaboration Solutions
• Internet & Intranet portals• Sharepoint Portal• eCommerce solutions
Essensys1 3 4 5 62
Business Intelligence Solutions
Custom Solutions
Collaboration Solutions
Consulting Services
• Requirements analysis• Software architecture• Development Process Guidance (MSF)• Technical Reviews• Training
Essensys1 3 4 5 62
Business Intelligence Solutions
Custom Solutions
Collaboration Solutions
Consulting Services
CRM Solutions• Customer Relationship Management• Microsoft Dynamics CRM
Essensys1 3 4 5 62
Business Intelligence Solutions
Custom Solutions
Collaboration Solutions
Consulting Services
CRM Solutions
Outsourcing Services
Essensys1 3 4 5 62
Clienti publici:
Essensys1 3 4 5 62
Alte informatii:
• 5 ani de activitate (2005 - 2010)• 50+ proiecte de succes• Sectoare: financiar-bancar, telecom,
distributie, militar, servicii, public• 100% satisfactie clienti (87%+13%) • 96% din clienti ar recomanda Essensys• 97% din clienti ar contracta Essensys
http://www.essensys.ro
Essensys1 3 4 5 62
PMS Web2 3 4 5 61
2 PMS Web
Beneficiar: Administratia Nationala a Penitenciarelor,Ministerul Justitiei
Denumire: Sistemul de evidenta a datelor persoanelorprivate de libertate a.k.a PMS Web
Scop: Dezvoltarea PMS Web V3
Deadline: 23 Decembrie 2008
PMS Web2 3 4 5 61
Functionalitate:
•Evidenta datelor personale•Pedepse•Drepturi•Evidenta medicala•Evidenta psihologica•Evidenta financiara•Paza•Incidente•Sistem de telefonie•Vizite•Evidenta contracte
•Organizarea muncii•Evidenta juridica•Cod penal•Cartele acces•Prezentari instante•Calcul zile muncite•Calcul drepturi banesti•Pontaj•Miscare zilnica•Rapoarte•Etc. etc.
PMS Web2 3 4 5 61
Provocari:
• Timp !• Complexitate functionala
• Domenii : medical, legal, financiar, etc.• Echipa de proiect
• Distributie geografica: 46 locatii• Nr mare de utilizatori (>3000)• Aplicatie critica• Baza de cod considerabila• Timp !• Timp !
PMS Web2 3 4 5 61
Echipa Essensys: 13 persoane1 Project Manager 1 Technical Lead 11 Dezvoltatori
Echipa ANP: 7 persoane (IT ANP)Echipa ANP analiza: 17 persoane (beneficiari)Echipa ANP IT teritoriu: 45 persoane (IT teritoriu)--------------------------------------------------------------------Total ~81 persoane
PMS Web2 3 4 5 61
Statistici:
Total linii de cod: 785.886Nr de tabele: 361Nr total inregistrari: 28.505.940Volum baza centrala: 30 GbNr de pagini: 373Nr de proceduri stocate: 1841Nr de view-uri: 140Nr de rapoarte: 341Nr utilizatori: 3100
PMS Web2 3 4 5 61
Arhitectura2 4 5 61 3
3 Arhitectura
Arhitectura2 4 5 61 3
Arhitectura logica
Arhitectura2 4 5 61 3
Tehnologii:
• Microsoft .Net Framework 3.5 : C#, ASP.Net, ADO.Net, AJAX,
• SQL Server 2008 Enterprise
• SQL Server Integration Services
• SQL Server Reporting Services
• Windows Server 2008
• HyperV
• Active Directory
Arhitectura2 4 5 61 3
4 Replicare in SQL Server 2008
Replicare2 3 5 61 4
Replicare :
Copierea, distribuire si sincronizare de date intre baze de date distincte.
Replicare2 3 5 61 4
Publisher
Publication
Distributor
Subscriber
Subscriber
Subscriber
Replicare2 3 5 61 4
Publisher
Publication = N articles
Distributor
Subscriber
Subscriber
Subscriber
TablesViewsStored proceduresFunctionsRecordsFiltre
Replicare2 3 5 61 4
• Publisher = Baza de date care furnizeaza publicatii.
• Distributor = Baza de date cu informatii despre replicare. Fiecare publisher este asociat unui singur distributor. Local = Publisher si Distributor pe acelasi server (comun)Remote = Publisher si Distributor servere separate
• Subscriber = Baza de date care receptioneaza informatii.Poate receptiona date de la mai multi publisheri.In functie de tipul replicarii poate modifica datele!
• Article = Obiect inclus in replicare. Tabele, view-uri, proceduri stocate.Pentru tabele se pot filtra coloanele si inregistrarile incluse.
• Publication = Colectie de unul sau mai multe articole
• Subscription = Cererea unui subcriber de a primi date replicate
• Replication Agents = Aplicatii care participa la executia replicarii
Replicare2 3 5 61 4
Agents
• SQL Server Agent
• Snapshot Agent
• Log Reader Agent
• Distribution Agent
• Merge Agent
• Queue Reader Agent
Replicare2 3 5 61 4
Scenarii de utilizare
• Server – Client• Server – Server
Replicare2 3 5 61 4
Server - Client
Replicare2 3 5 61 4
Exemple scenarii Server – Client
• Sales Force Automation
• Distributie
• POS
• Aplicatii de sondaje
• Aplicatii tip Info Kiosk
• Transporturi (aerian, maritim, terestru)
• Aplicatii SCADA
Scenarii semiconectate (conexiune permanenta indisponibila)
Replicare2 3 5 61 4
Server - ServerSincronizare intre locatii
Replicare2 3 5 61 4
Server - ServerScalability Load Balancing
READ
WRITE
Replicare2 3 5 61 4
Server - ServerScalability & Availability
Bucuresti
Iasi
Craiova
Cluj
Replicare2 3 5 61 4
Server - ServerPerformance :- Business Intelligence - Batch Processing
Replicare2 3 5 61 4
ETL
Server - ServerIntegrare Oracle / IBM DB2
Replicare2 3 5 61 4
Exemple scenarii Server – Server
• Aplicatii distribuite geografic• Cu centralizarea datelor (ex: PMS Web)
• eCommerce
• Solutii BI
• Aplicatii cu procesari complexe (ex: procesari statistice)
• Aplicatii cu incarcare mare (preponderent citire, ex: site-uri)
• Integrare cu Oracle / IBM DB2 (ex: integrare core banking)
Replicare2 3 5 61 4
PUSH Vs. PULL
Model PUSH
• “Push subscription”• Agentii ruleaza la Distributor• Distribuitor-ul controleaza replicarea
Model PULL
• “Pull subscription”• Agentii ruleaza la Subscriber• Subcriber-ul controleaza replicarea
Replicare2 3 5 61 4
3 Tipuri de replicare:
•Snapshot
•Transactional• Standard • Updating subscription (Immediate updates)• Updating subscription (Queued updates)• Peer-to-peer
•Merge
Replicare2 3 5 61 4
Snapshot Replication (“Copy & Paste”)Detectia modificarilor: Nu se aplicaModificari la subscriber: NU Conflicte: NUAgenti: Snapshot, DistributionFiltare/partitionare: DA
Aplicatii:•Sincronizare initiala pentru transactional & merge•Volum mic de date •Date semistatice (modificari rare)•Multe modificari intr-o perioada scurta de timp•Datele neactualizate sunt acceptabile
Replicare2 3 5 61 4
Replicare2 3 5 61 4
Snapshot
Pas initial in Transactional & Merge
Transactional ReplicationDetectia modificarilor: Transaction LogModificari la subscriber: NU (Default)
DA (Updating Subscription)Conflicte: NU / DAAgenti: Snapshot, Log Reader, Distribution, Queue Read.Filtare/partitionare: DA
Aplicatii:• Latenta minima (~Real time)• Starile intermediare sunt necesare • Volum mare de operatii (insert, delete, update)• Modificari incrementale sunt necesare• Integrare cu Oracle sau IBM DB2
Replicare2 3 5 61 4
Replicare2 3 5 61 4
Transactional - Default
Replicare2 3 5 61 4
Transactional – Immediate Updates
Replicare2 3 5 61 4
Transactional – Queued Updates
Transactional – Peer-to-Peer
• Caz particular tranzactional• Fiecare nod este si publisher si subscriber
Avantaje: • + Performanta la citire • Performanta la scriere este identica• Availability• Scriere pe un singur nod (partitionare)• Mentenanta
Nu suporta:• Initializari snapshot (backup)• Participanti non-SQL Server• Filtre pe inregistrari sau coloane• Updating subscriptions• Coloane timestamp
Replicare2 3 5 61 4
Merge ReplicationDetectia modificarilor: TriggersModificari la subscriber: DAConflicte: DAAgenti: Snapshot, MergeFiltare/partitionare: DA
Aplicatii:• Mai multi subscriberi pot modifica aceleasi date• Subscriberi autonomi (offline)• Modificari incrementale nu sunt necesare (doar starea finala)• Date partitionate intre subscriberi
Replicare2 3 5 61 4
1. RowguidIdentifica unica o inregistrare replicata
2. Triggers INS, UPD, DELPentru determinarea modificarilor
3. Tabele sistemContin metadate despre modificariMSMerge_contents & MSMerge_tombstone
4. Proceduri stocatePentru aplicarea modificarilor la destinatie
Replicare2 3 5 61 4
Initializare
Replicare2 3 5 61 4
Sincronizare (PULL)1. UPLOAD
2. DOWNLOAD
Replicare2 3 5 61 4
Sincronizare (PUSH)1. UPLOAD
2. DOWNLOAD
Replicare2 3 5 61 4
Detectie Conflicte
•Prioritati (Server/Client)•Change Tracking
•Row level•Column level•Logical record level
Replicare2 3 5 61 4
Tipuri Conflicte
•Update – Update
•Update – Delete
•Failed change conflicts• Violari de constrangeri (FK, unique, etc.)• Coloane identity (fara range-uri)• Conflicte intre triggeri (ex: triggeri custom)• Lipsa obiecte dependente (ex: view publicat fara table)
Solutia in general este marcarea constrangerii Not For Replication
Replicare2 3 5 61 4
Partitii - Publicare nefiltrata
Replicare2 3 5 61 4
Partitii - Filtre statice
Replicare2 3 5 61 4
Partitii - Filtrare dinamica (Partitii distincte)
Replicare2 3 5 61 4
Partitii – Filtrare dinamica (Partitii intersectate / Overlapping)
Replicare2 3 5 61 4
Partitii - Filtre Join
Replicare2 3 5 61 4
Evaluarea partitiilor
• Precalculate (default)• Performanta la download (Publisher->Subscriber)• Hit minor de performanta la upload (Subscriber->Publisher)• MSmerge_partition_groups• MSmerge_current_partition_mappings =
Partition_groups X Contents • MSmerge_past_partition_mappings• Conditii pentru filtre (sintaxa)
• Determinate dinamic (“SetupBelongs”)• Mai putin performante la download• Tabele temporare• #belongs• #notbelongs
Replicare2 3 5 61 4
CONCLUZII
1. Sincronizarea este o problema complexa
2. Replicarea este o solutie robusta de sincronizare
3. Performanta: minim de trafic (column tracking)
4. Flexibilitate: snapshot, tranzactional, merge
5. Fiabilitate: SQL Server 7.0 -> 2008 R2
6. Comunicatii: IP, HTTPS, VPN, IPSec
7. Costuri dezvoltare: minime vs. development
8. Costuri licentiere: rezonabile (SQL Standard)
9. Necesita un efort minim de mentenanta
10. Unele constrangeri in design-ul bazei
11. Alternative: Sync Framework, SQL Service Broker, Third party, Custom
Replicare2 3 5 61 4
DEMOMerge Replication
Replicare2 3 5 61 4
Replicare2 3 5 61 4
Replicare2 3 5 61 4
ID Name LoginName ReportsToLoginName Rowguid
1 Ion Popescu vanzator1 vanzator2 123abf-…..
2 Pop Ionescu vanzator2 NULL 4e5cde-…..
SalesPerson
OrderHeader
ID SalesPersonID CustomerID OrderDate Rowguid
1 1 1 3/10/2010 a23abf-…..
2 2 1 3/10/2010 4e5cde-…..
OrderDetails
ID OrderID ProductID Quantity Price Rowguid
1 1 1 2 5 a23abf-…..
2 1 2 3 4 4e5cde-…..
3 2 2 3 6
4 2 3 4 7
Vanzator 1 + Vanzator 2
Vanzator 2
Vanzator 1 + Vanzator 2
Vanzator 1 + Vanzator 2
Vanzator 2
Vanzator 2
Demo Merge Replication
1. Initializarea publicarii
2. Initializare subscriber 1
3. Initializare subscriber 2
4. Sincronizare
Replicare2 3 5 61 4
1. Initializarea publicariiConfigurarea Distributor-ului – acelasi cu instanta Publisher.
Replicare2 3 5 61 4
1. Initializarea publicariiCrearea unui share accesibil de subscriber-i si configurarea acestuia ca locatie ptr
snapshot-uri.
Replicare2 3 5 61 4
1. Initializarea publicariiCrearea publicarii de tip merge.
Replicare2 3 5 61 4
1. Initializarea publicariiAlegerea tipurilor de subscriber-i permise.
Replicare2 3 5 61 4
1. Initializarea publicariiAlegerea articolelor ce se vor publica. Pentru fiecare tabela se poate alege daca publicarea
sa fie bidirectionala sau download-only.
Replicare2 3 5 61 4
1. Initializarea publicariiCrearea filtrului pe tabela OrderHeader care la replica datele astfel incat un vanzator sa
aibe acces la order-ele lui si ale vanzatorilor subordonati lui.
Replicare2 3 5 61 4
1. Initializarea publicariiCrearea filtrului join care va asigura faptul ca, la un vanzator, vor ajunge doar inregistrarile
din OrderDetail corespunzatoare inregistrarilor in OrderHeader la care are acces.
Replicare2 3 5 61 4
1. Initializarea publicariiSe alege ca job-ul care creeaza snapshot-ul sa porneasca imediar si sa ruleze periodic.
Replicare2 3 5 61 4
1. Initializarea publicariiSe aleg credentialele sub care va rula job-ul de snapshot la Distributor si cum se va
conecta el la Publisher.
Replicare2 3 5 61 4
1. Initializarea publicariiSe da un nume publicarii. Pe o baza de date pot exista mai multe publicari.
Replicare2 3 5 61 4
1. Initializarea publicariiSe adauga inregistrari in tabelele sistem si se porneste job-ul de snapshot.
Replicare2 3 5 61 4
1. Initializarea publicariiSe adauga inregistrari in tabelele sistem si se porneste job-ul de snapshot.
Replicare2 3 5 61 4
1. Initializarea publicariiPentru fiecare vanzator avem un login Sql care este in rolul [public] pe baza publicata.
Replicare2 3 5 61 4
1. Initializarea publicariiLogin-ul fiecarui vanzator se adauga la Publication Access List.
Replicare2 3 5 61 4
1. Initializarea publicariiSe creaza cate un Data Partition ptr fiecare vanzator. Se selecteaza toate Data Partition-
urile create si se apasa “Generate the selected snapshots now”.
Replicare2 3 5 61 4
1. Initializarea publicariiSe pornesc job-urile de snapshot dinamic care
scriu fisierele cu schema si datelearticolelor publicate.
Replicare2 3 5 61 4
2. Initializare subscriber 1Se creaza subscrierea ptr vanzator1 de tip pull.
Replicare2 3 5 61 4
2. Initializare subscriber 1Se creaza o noua baza de date in care se vor replica datele de la Publisher.
Replicare2 3 5 61 4
2. Initializare subscriber 1Se aleg credentialele sub care va rula job-ul de sincronizare la subscriber si cum se va
conecta la Publisher.
Replicare2 3 5 61 4
2. Initializare subscriber 1Alegem ca sinscronizarea sa se faca “on demand” si initializarea sa se produca imediat.
Replicare2 3 5 61 4
2. Initializare subscriber 1Subscrierea este creata si merge agent-ul este rulat prima data.
Replicare2 3 5 61 4
3. Initializare subscriber 2Initializarea subscrierii 2 se face in acelasi
mod ca si prima cu exceptia ca aceastase va conecta la Publisher folosind login-ul vanzator2.
Replicare2 3 5 61 4
4. SincronizareAdaugam un order nou la subscriber-ul 1 (vanzator1). Observam ca primeste id-ul 2003
si rowguid-ul b98b20…
Replicare2 3 5 61 4
4. SincronizareSincronizam subscriber-ul 1.
Replicare2 3 5 61 4
4. SincronizareNoul order apare la Publisher.
Replicare2 3 5 61 4
4. SincronizareApare si in MSmerge_current_partition_mapping ca apartinand ambelor partitii de date.
Replicare2 3 5 61 4
4. SincronizareDupa sincronizare la subscriber2...
Replicare2 3 5 61 4
4. SincronizareOrder-ul nou introdus va fi accesibil si acestuia.
Replicare2 3 5 61 4
Metodologie
5 Metodologie
2 3 4 61 5
T0+2 Saptamani
T0+6 Saptamani?????
Metodologie2 3 4 61 5
Decizii:
1. Paralelizare extrema => Riscuri asumate2. T0: Start configuration management3. T0: Start dezvoltare4. Separarea analizei in module5. Echipe separate de analiza6. Sign-off analiza separat pe module7. Start dezvoltare inainte de sign-off8. Planning detaliat9. Status zilnic10.Generare de cod11.1% Inspiratie + 99% Transpiratie
Metodologie2 3 4 61 5
Planning
Stabi
Start Scopecomplete
Metodologie2 3 4 61 5
Development
Configuration Management
Dezvoltare infrastructura & cerinte nefunctionale
Planning M1
Stabilization M1
Stabilization M5
Start Scopecomplete
Releasereadiness
Deployment
Sign off
Development M1
Planning M2 Sign off
Stabilization M2Development M2
Planning M3 Sign off
Development M3 Stabilization M3
Planning M4 Sign off
Development M4 Stabilization M4
Planning M5 Sign off
Development M5
Planning M5 Sign off
Development M5 Stabilization M5
Metodologie2 3 4 61 5
Metodologie2 3 4 61 5
Metodologie2 3 4 61 5
Q&A2 3 4 5 61 7
7 Q & A
Quality Software on Time !
http://www.essensys.roPrezentarea in sectiunea Download\Whitepapers