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]