Jedną z flagowych funkcjonalności drugiego wydania serwera bazy danych Oracle Database 12c (12.2) jest Database Sharding (dzielenie bazy danych). Jest to klon rozwiązania dobrze znanego w świecie systemów NoSQL, polegającego na horyzontalnym partycjonowaniu danych pomiędzy wiele fizycznych lokalizacji. Taki rozdział danych pozwala następnie rozdzielić obciążenie aplikacyjne i tym samym uzyskać efekt prawie-liniowej skalowalności bardzo dużych baz danych. Oczywiście pod warunkiem, że rozsądnie rozdzielimy zarówno dane, jak i obciążenie aplikacyjne.
Realizacja Database Shardingu w Oracle Database 12.2 korzysta po części z dotychczasowych mechanizmów partycjonowania tabel (haszowego, zakresowego, listowego, dwupoziomowego), a po części wprowadza zupełnie nowe elementy architektoniczne, jak repozytorium metadanych (Shard Catalog) i procesy kierujące połączenia aplikacyjne do właściwych cząstkowych baz danych (Shard Directors). Pojawiły się przy tej okazji dwa nowe typy tabel: (1) Sharded Table – tabela dzielona horyzontalnie pomiędzy wiele cząstkowych baz danych, (2) Duplicated Table – tabela replikowana pomiędzy wszystkie cząstkowe bazy danych. Aplikacje klienckie mogą łączyć się bezpośrednio z cząstkowymi bazami danych (Direct Connections) lub z całą logiczną dzieloną bazą danych (Proxy Connections). Dzielenie bazy danych może mieć charakter jednopoziomowy (mapowanie danych na bazy cząstkowe za pomocą haszowania spójnego) lub dwupoziomowy (mapowanie danych na centra danych za pomocą partycjonowania zakresowego/listowego, a następnie na bazy cząstkowe za pomocą haszowania spójnego).
O praktycznych aspektach Database Shardingu opowiadałem na ostatniej konferencji PLOUG w Warszawie. Dla zainteresowanych załączam moją prezentację: .
Oto rekomendowane materiały źródłowe, pomagające we wdrażaniu rozwiązań Oracle 12.2 Database Sharding:
- wideo omawiające Oracle Database Sharding (Dominic Giles) – cz. I
- wideo omawiające Oracle Database Sharding (Dominic Giles) – cz. II
- oficjalna dokumentacja Oracle
- skrócony tutorial instalacyjny na GeeksInsight
Z zainteresowaniem czekam na pierwsze wdrożenia tej bardzo kosztownej metody skalowania wielkich baz danych…