Alibaba, jedna z największych chińskich firm informatycznych, otworzyła kod źródłowy rozproszonego systemu DBMS PolarDB, opartego na PostgreSQL. PolarDB rozszerza możliwości PostgreSQL o narzędzia do rozproszonego przechowywania danych z zachowaniem integralności i obsługą transakcji ACID w kontekście całej globalnej bazy danych rozproszonej w różnych węzłach klastra. PolarDB obsługuje również rozproszone przetwarzanie zapytań SQL, odporność na awarie i nadmiarowe przechowywanie danych w celu odzyskiwania informacji po awarii jednego lub większej liczby węzłów. Jeśli chcesz rozszerzyć pamięć masową, możesz po prostu dodać nowe węzły do klastra. Kod jest otwarty na licencji Apache 2.0.
PolarDB składa się z dwóch komponentów - rozszerzeń i zestawu poprawek dla PostgreSQL. Poprawki rozszerzają możliwości rdzenia PostgreSQL, a rozszerzenia obejmują komponenty implementowane niezależnie od PostgreSQL, takie jak mechanizm zarządzania transakcjami rozproszonymi, usługi globalne, rozproszony procesor zapytań SQL, dodatkowe metadane, narzędzia do zarządzania klastrem, wdrażania klastra i upraszczanie migrację do niego istniejących systemów.
Łatki dodają do rdzenia PostgreSQL rozproszoną wersję mechanizmu kontroli równoległego dostępu do danych z wykorzystaniem multiwersji (MVCC, Multiversion concurrency control) dla różnych poziomów izolacji. Większość funkcjonalności PolarDB zawarta jest w rozszerzeniach, co zmniejsza zależność od PostgreSQL oraz ułatwia aktualizację i wdrażanie rozwiązań bazujących na PolarDB (ułatwia to przejście na nowe wersje PostgreSQL i utrzymanie pełnej kompatybilności z PostgreSQL). Do zarządzania klastrem wykorzystywany jest zestaw narzędzi pgxc_ctl, oparty na podobnym narzędziu z PostgreSQL-XC i PostgreSQL-XL.
Klaster składa się z trzech podstawowych komponentów: węzły bazy danych (DN), menedżer klastra (CM) i usługa zarządzania transakcjami (TM). Dodatkowo można zastosować moduł równoważenia obciążenia proxy. Każdy komponent stanowi odrębny proces i może być uruchamiany na innym serwerze. Węzły bazy danych obsługują zapytania SQL od klientów i jednocześnie pełnią rolę koordynatorów rozproszonego wykonywania zapytań przy udziale innych węzłów bazy danych. Menedżer klastra monitoruje stan każdego węzła bazy danych, przechowuje konfigurację klastra i udostępnia narzędzia do zarządzania węzłami, tworzenia kopii zapasowych, równoważenia obciążenia, aktualizowania, uruchamiania i zatrzymywania węzłów. Usługa zarządzania transakcjami odpowiada za utrzymanie ogólnej integralności w całym klastrze.
PolarDB opiera się na architekturze obliczeń rozproszonych Shared-nothing, zgodnie z którą dane są dystrybuowane w przypadku przechowywania ich na różnych węzłach, bez korzystania ze wspólnego magazynu dla wszystkich węzłów, a każdy węzeł odpowiada za powiązaną z nim porcję danych i wykonuje zapytania związane do danych. Każda tabela jest dzielona na części (sharding) przy użyciu funkcji mieszania opartej na kluczu podstawowym. Jeśli żądanie obejmuje dane znajdujące się w różnych węzłach, aktywowany jest mechanizm realizacji transakcji rozproszonych i koordynator transakcji, aby zapewnić niepodzielność, spójność, izolację i niezawodność (ACID).
Aby zapewnić odporność na uszkodzenia, każdy segment jest replikowany do co najmniej trzech węzłów. Aby zaoszczędzić zasoby, pełne dane obejmują tylko dwie repliki, a jedna ogranicza się do przechowywania dziennika zapisu zwrotnego (WAL). Jeden z dwóch węzłów z pełnymi replikami zostaje wybrany na lidera i uczestniczy w przetwarzaniu żądań. Drugi węzeł pełni funkcję zapasową dla danego segmentu danych, zaś trzeci bierze udział w wyborze węzła wiodącego i może służyć do przywracania informacji w przypadku awarii dwóch węzłów z pełnymi replikami. Replikacja danych pomiędzy węzłami klastra zorganizowana jest przy użyciu algorytmu Paxos, który zapewnia spójną definicję konsensusu w sieci z potencjalnie zawodnymi węzłami.
Należy zauważyć, że pełna funkcjonalność systemu PolarDB DBMS ma zostać ujawniona w trzech wydaniach: W pierwszej wersji zostaną opublikowane narzędzia do replikacji, wysokiej dostępności i zarządzania klastrami. Druga wersja będzie zawierać rozproszony system wykonywania transakcji, który obsługuje międzywęzłowe wykonywanie ACID i rozproszone wykonywanie SQL. Trzecie wydanie będzie zawierało wtyczkę do PostgreSQL oraz narzędzia do elastycznej dystrybucji danych pomiędzy węzłami, w tym adaptacyjne rozmieszczanie segmentów w celu osiągnięcia optymalnej wydajności oraz możliwość rozbudowy klastra poprzez dodawanie nowych węzłów.
Źródło: opennet.ru