Projektowanie: architektura baz danych

advertisement
2012
Projektowanie: architektura baz danych
Paweł Sieniawski,
Columb Technologies S.A.
Wyzwania w projektowaniu
i programowaniu e-usługi
Poznań, 11 października 2012
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
„Dobra” architektura – czyli jaka?
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Taxxo – nasze doświadczenie
• Codziennie integrujemy bazy
danych ponad 2500 klientów –
głównie spółek
• Współdziałamy z ponad 25
różnymi systemami księgowymi
• W internetowej Platformie Taxxo
obsługiwane są firmy o łącznym
obrocie rocznym > 1,2mld zł
• Sieć Taxxo to ponad 50 biur
rachunkowych w całej Polsce
www.taxxo.pl
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Architektura bazy danych, czyli:
1.
2.
3.
4.
„Silnik” bazy danych
Hosting - infrastruktura
Model danych - sposób organizacji danych w bazie
Procedury dotyczące rozwoju i wdrażania
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
JAK WYBRAĆ
SILNIK BAZY DANYCH?
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Dane… serce e-usługi
eBay - 26 mld zapytań SQL / dzień
do 2 petabyte’ów danych [2008 rok] !
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Wymagania – charakter usługi / danych
• Czy zgubienie jednego rekordu to problem?
GOOGLE vs NBP
• Czy wszyscy natychmiast muszą widzieć modyfikację?
FACEBOOK vs PKP
• Czu użytkownik poczeka 1 minutę?
RYANAIR vs WIKIPEDIA
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Wymagania – inwestor – czyli $$$
• Wymagania cenowe odnośnie rozwiązania
OPEN SOURCE vs BAZA Z PEŁNYM WSPARCIEM
• Preferencje – np. Microsoft Partner, członek Open
Software Foundation …
• Wizja bezpieczeństwa inwestycji
stabilny duży producent, powszechnie używana
technologia, kod źródłowy
a MySQL przejęty przez Oracle?
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Wymagania – dostępna wiedza & zasoby
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Wymagania – wykonawca
• Język programowania / środowisko programistyczne
PHP, .NET, JAVA/J2EE, ….
• Posiadane kompetencje – ludzie z doświadczeniem
PL/SQL, T-SQL, CQL, Hibernate, …
• Posiadane licencje, narzędzia, komponenty
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Wymagania - architekt
• Determinacja architekta rozwiązania – krytyczny
wpływ na końcowy wybór
„W tej technologii dostarczymy
dobrej jakości produkt na czas”
vs
„To jest takie fajne, nowe –
chętnie bym w tym to zrobił…”
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Jaki „silnik” wybrać ?
MySQL, Oracle, PostgreSQL, MS SQL Server, Amazon
S3, MonoDB, Apache Cassandra, IBM DB/2, Teradata,
SQL Azure, Amazon SimpleDB, BigTable, Jet Engine
(MS Access), Btrieve, PervasiveSQL, InnoDB, Firebird,
FoxPro, SQLite, Sybase, Netezza, Panorama,
OpenOffice Base, Clarion, Informix, InterBase, SAS DB,
Apache CouchDB, FlockDB, objectDB, Virtuoso …
Ten najlepiej spełniający kryteria 
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
„Silnik” bazy danych – typowe wybory:
•
•
•
•
•
•
Nie róbcie swojego „silnika” 
Najczęściej w Internecie PHP + MySQL (np. Joomla, Wordpress)
Dla wymagających rozbudowanej darmowej bazy danych do PHP
– PostgreSQL (np. Skype)
Dla .NET – MS SQL Server (np. Taxxo)
Duże, transakcyjne bazy– Oracle (np. Allegro)
Duże ilości danych, do bardzo szybkiego przetwarzania – BigTable,
Apache Cassandra – (np. Google Earth, Facebook search)
Bazy w „chmurze”
• Dla .NET – najczęściej wybierane SQL Azure – bardzo rozbudowane,
praktycznie (95%) zgodne z bazą „tradycyjną”
• Dla pozostałych środowisk – Amazon Web Services (S3, SDB)
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
HOSTING
INFRASTURKTURA BAZY
DANYCH
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Hosting – jakie mamy opcje?
Ogromna popularność
Niewiele użytkowników
Współdziel
ony
VPS
Serwer
dedykowany
Kilka
serwerów
Usługa hostingowa
Własna serwerownia
Data center
Chmura
Farma
serwerów
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Co możemy zyskać dzięki
odpowiedniej infrastrukturze?
• Wydajność – czas obsługi użytkownika nie przekracza
dopuszczalnej normy
• Wysoka dostępność – pełne działanie usługi
w przypadku awarii części podsystemu
• Skalowalność – możliwość łatwego obsłużenia
większej liczby użytkowników
• Spokój…
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Infrastruktura bazy danych –
podstawowa
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Infrastruktura bazy danych –
wysoka dostępność
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Infrastruktura bazy danych –
wydajność i skalowalność
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Infrastruktura bazy danych –
wysoka dostępność, wydajność, skalowalność
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Model danych
PRZECHOWYWANIE
DANYCH WIELU KLIENTÓW
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Model danych –
przechowywanie danych wielu klientów
Wariant 1. Jedna tabela dla danych wszystkich klientów
BAZA: MojaBaza
TABELA: FAKTURY
ID_KLIENT NR_FAKT
DATA
KONTRAHENT
--------- -------
----------
-----------
1
1
2
3
01.10.2012
07.10.2012
03.10.2012
06.10.2012
Firma Krzak
PKN Orlen
Columb Tech
PARP
1/10/2012
2/10/2012
17/2012
1/10/2012
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Model danych –
przechowywanie danych wielu klientów
Wariant 2. Osobna baza dla danych każdego klienta
BAZA: Klient1
TABELA: FAKTURY
NR_FAKT
DATA
1/10/2012 01.10.2012
2/10/2012 07.10.2012
KONTRAHENT
Firma Krzak
PKN Orlen
BAZA: Klient2
TABELA: FAKTURY
NR_FAKT
17/2012
DATA
03.10.2012
KONTRAHENT
Columb Tech
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Model danych – porównanie wariantów
1. Jedna tabela
2. Osobna baza
Zalety:
• Łatwe modelowanie relacji (akcji)
pomiędzy klientami
• Łatwe wdrożenie / aktualizacja –
jedna „instancja” danych
• Łatwe zarządzanie (np. backup
danych)
Wady:
• Łatwo o błąd programisty „pomieszanie” danych
• Wymaga implementacji filtrowania
danych przy każdym dostępie
• Skalowanie wymaga
zaawansowanych mechanizmów
Zalety:
• Izolowanie danych klientów (np.
odporność na błąd programisty)
• Łatwość implementacji (użytkownik
powiązany z nazwą bazy)
• Łatwa skalowalność poprzez
rozrzucenie danych na różne serwery
Wady:
• Kosztowne (limity baz danych / opłaty
per baza)
• Kłopotliwe wdrożenie / aktualizacja
• Kłopotliwy backup
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Jak to robiliśmy w Taxxo?
Wymagania do modelu bazy danych Taxxo
• Odporność na błędy programisty – niedopuszczalne aby klienci
zobaczyli nawzajem swoje dane!
• Brak potrzeby odzwierciedlenia relacji pomiędzy klientami
• Łatwa i szybka implementacja rozwiązania
• Wysoka skalowalność – zbliżona do liniowej
• Niski koszt użytkowania
• Łatwe zarządzanie i wdrażanie nowych wersji
• Możliwość wybrania różnych wariantów hostingu rozwiązania
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Jak to robiliśmy w Taxxo?
BAZA: Fizyczna1
TABELA: Klient1_FAKTURY
NR_FAKT
DATA
1/10/2012 01.10.2012
2/10/2012 07.10.2012
KONTRAHENT
Firma Krzak
PKN Orlen
TABELA: Klient2_FAKTURY
NR_FAKT
17/2012
DATA
03.10.2012
KONTRAHENT
Columb Tech
BAZA:
Fizyczna2
TABELA:
Klient3_...
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Jak to robiliśmy w Taxxo?
Wirtualizacja: Separacja fizycznych baz danych
od instancji danych klienta
Zalety:
• Izolowanie danych klientów (np. odporność na błąd programisty)
• Łatwość implementacji (użytkownik powiązany z nazwą bazy i prefixem)
• Łatwa skalowalność poprzez rozrzucenie danych klientów na różne serwery
Wady
• Kosztowne (limity baz danych / opłaty per baza)
• Kłopotliwy backup
• Kłopotliwe wdrożenie / aktualizacja
Wyeliminowaliśmy
wady dzięki
modelowi
i narzędziom
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Procedury
ROZWÓJ APLIKACJI
W OBSZARZE BAZY DANYCH
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Procedury: Rozwój struktury bazy danych
Przemyślana
konwencja
nazewnicza
Proces
modyfikacji
struktury
bazy
Gromadzenie
informacji o
zmianach
w strukturze
Ochrona
struktury
bazy
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Jak to robiliśmy w Taxxo?
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Komunikacja z bazą – wytyczne dla programistów
• Używaj mapowania obiektowo-relacyjnego (ORM)
- automatyczne tłumaczenie świata „tabel i rekordów”
na świat „kolekcji i obiektów”
(np. Hibernate, Linq2SQL, Zend/Doctrine)
• Unikaj tworzenia poleceń SQL bezpośrednio w kodzie –
słabo zarządzalne, narażone na ataki SQL Injection
• Używaj tej samej metody dostępu w ramach całej aplikacji
• Jeżeli przetwarzasz dane (np. sumujesz rekordy, liczysz średnią) –
optymalniej wykona to silnik bazy danych niż Twój kod
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Podsumowanie: POZNAJ WYMAGANIA
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Podsumowanie: NIE KIERUJ SIĘ MODĄ …
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
Podsumowanie: PRZEWIDUJ ZMIANY
Wyzwania w projektowaniu i programowaniu e-usługi, Poznań, 11.10.2012
„Architektura to nauka i sztuka
projektowania, konstruowania
i wykonywania” (Wikipedia / MySQL)
Dziękuję za uwagę!
[email protected]
Download