Migration d’Oracle vers PostgreSQL : ce qu’il faut savoir 

Migracja z Oracle do PostgreSQL — co powinieneś wiedzieć?

/ 17.04.2024 Java

Czy rozważasz migrację z Oracle do PostgreSQL? Wielu ekspertów zauważyło, że migracja wszystkich baz danych do Postgres kosztuje mniej niż opłacenie rocznego utrzymania Oracle. Jednak dokonanie płynnego przejścia między bazami danych dla wielu może być wyzwaniem. W tym artykule dowiesz się jak z sukcesem przeprowadzić migrację z Oracle do PostgreSQL oraz jakich błędów unikać. 

Powodów do migracji z Oracle do PostgreSQL może być wiele, od potrzeby obniżenia kosztów, poprawy wydajności czy korzystania ze wsparcia społeczności open-source. Niezależnie od tego, co jest głównym powodem zmian, niewątpliwie PostgreSQL jest mocnym graczem na rynku, oferującym solidną i bogatą w funkcje alternatywę dla Oracle.

Bardzo mocno potwierdzają to najnowsze statystyki. Według ankiety Stack Overflow przeprowadzonej w maju 2023 r. przez ponad 90 000 programistów z całego świata Postgres (skrót używany zamiennie z PostgreSQL), został uznany za najbardziej podziwianą bazę danych, pokonując 31 innych baz danych m.in takich jak Oracle, MySQL, Microsoft SQL Server, MongoDB.  71 % z prawie 76 000 respondentów stwierdziło, że korzystało z Postgres w zeszłym roku i zamierza nadal z niego korzystać. Z kolei 42% procent programistów, którzy obecnie nie korzystają z Postgres, planuje użyć go w przyszłym roku.  

W tym artykule skupimy się na zrozumieniu potrzeby migracji. Przyjrzymy się również jakie ryzyko jest z tym związane i jak go unikać, od etapu oceny bieżącej infrastruktury Oracle po projektowanie, przesyłanie danych i testowanie nowego systemu.  

Dlaczego migrować z Oracle do PostgreSQL? 

Zarówno Oracle i PostgreSQL to potężne systemy zarządzania relacyjnymi bazami danych, ale istnieje kilka powodów, dla których organizacje decydują się na migrację z Oracle do PostgreSQL.

  • Koszty

Jednym z głównych czynników są wysokie koszty licencji. Oracle rozwinęło model biznesowy polegającym na wyeliminowaniu produktów bazodanowych, które były popularne wśród mniejszych klientów dysponujących ograniczonym budżetem, na rzecz rozwiązań w zakresie tworzenia aplikacji i infrastruktury przeznaczonych dla dużych organizacji, dla których koszty nie grają roli. Ponieważ licencje Oracle stają się coraz droższe, wiele firm decyduje się na wybór solidnego rozwiązania, które skupia się wyłącznie na relacyjnej bazie danych.

Z drugiej strony, PostgreSQL jest bazą danych typu open-source, co oznacza, że jest darmowa i ma niższe koszty operacyjne. Została zaprojektowana z myślą o łatwości użytkowania i wdrożenia, skupiając się wyłącznie na obsłudze bazy danych (bez konieczności wykorzystywanie zasobów na zarządzanie dodatkowymi środowiskami IT). To jedna z pierwszych zalet, które zauważają klienci po migracji z Oracle do Postgres: zamiast spędzać wiele godzin na studiowaniu złożonej technologii dotyczącej działania bazy danych Oracle, Postgres ułatwia wykonywanie wielu takich samych funkcji jak Oracle w ciągu kilku minut. Co mówią programiści na temat kosztów obu technologii?

“Jeśli głównym problemem są dla Ciebie nadmierne koszty, wybierz PostgreSQL lub MariaDB, które mogą zrobić ponad 90% tego, co OracleDB w prostszy sposób i bez kosztownych licencji.”

Na poniższych grafikach z danych serwisu DB engines widać spadek popularności Oracle i wzrost Postgres na przestrzeni lat 2018-2024.

  • Wydajność

PostgreSQL bardzo się rozwinął w ostatnich latach, oferując porównywalną wydajność do Oracle. Posiada solidny optymalizator zapytań i obsługuje zaawansowane techniki indeksowania, co czyni go realnym wyborem dla aplikacji o wysokiej wydajności. Dodatkowo, zdolność PostgreSQL do obsługi dużych zbiorów danych i złożonych zapytań sprawia, że jest to odpowiednia opcja dla organizacji zajmujących się dużymi zbiorami danych.

  • Społeczność

Co więcej, PostgreSQL ma tętniącą życiem społeczność open-source, udostępniającą regularne aktualizacje, poprawki błędów i ulepszenia funkcji. Umożliwia to szybkie znalezienie rozwiązań swoich problemów technicznych, a ciągły rozwój wpływa na wysoki poziom techniczny rozwiązania.

  • Wysoka skalowalność

PostgreSQL może obsługiwać duże ilości danych i równoległych użytkowników bez poświęcania wydajności. Skalowalność jest szczególnie istotna dla dynamicznie rosnących organizacji lub mających do czynienia z dużymi zbiorami danych.

  • Zgodność z ACID (Atomicity, Consistency, Isolation, and Durability)

PostgreSQL zapewniając integralność i niezawodność danych. Obsługuje zaawansowane funkcje zarządzania transakcjami, w tym wielo-wersyjną kontrolę współbieżności (MVCC), która pozwala na współistniejące operacje odczytu i zapisu bez narażania spójności danych.

  • Obsługa szerokiego zakresu typów danych

PostgreSQL zapewnia również szeroki zakres opcji indeksowania, dzięki czemu jest elastyczny i można go dostosować do różnych przypadków użycia. Obsługuje zarówno ustrukturyzowane, jak i nieustrukturyzowane dane, umożliwiając organizacjom przechowywanie i analizowanie różnych typów informacji. Pozwala również na definiowanie niestandardowych typów danych, operatorów i funkcji, umożliwiając dostosowanie rozwiązań do konkretnych wymagań.

  • Wysoki poziom bezpieczeństwa

PostgreSQL zapewnia kontrolę dostępu opartą na rolach, umożliwiając administratorom definiowanie szczegółowych uprawnień i ograniczeń, oferuje różne metody uwierzytelniania, aby zapewnić dostęp do bazy danych tylko autoryzowanym użytkownikom.

Wyzwania i kwestie związane z migracją z Oracle do PostgreSQL

Migracja z Oracle do PostgreSQL nie jest pozbawiona wyzwań. Wymaga starannego planowania i rozważenia, czy migracja jest możliwa, a jeśli tak, to jak zapewnić płynne przejście.

  • Customizacja systemu

Jeżeli architektura systemu od początku nie była konkretnie zaplanowana pod bazę Oracle, tylko ogólnie używa mechanizmów standardu SQL, wtedy łatwo dokonać migracji do PostgreSQL. Natomiast jeśli system został stworzony przez specjalistę od Oracle, z wykorzystaniem nowinek technicznych czy charakterystycznych funkcji, które są tylko w Oracle, to migracja jest znacznie trudniejsza, a niekiedy niemożliwa. Co na ten temat twierdzą programiści?

“Pracowałem kiedyś przy projekcie, który wykorzystywał wiele mechanizmów Oracle (wdrożone specyficzne implementacje) i nie można było przeprowadzić migracji do innej bazy, bo ten system działał na specyficznych mechanizmach Oracle, których w innych bazach nie było. Rozwiązanie nie było zaprojektowane tak, by było przenośne i praktycznie trzeba było je przepisać od zera.” (Marcin Żak, Full-stack developer )

  • Różnice w składni i dialektach SQL między Oracle i PostgreSQL.

Oracle ma własną, zastrzeżoną składnię i funkcje SQL, które mogą nie być kompatybilne z PostgreSQL. Dlatego ważne jest, aby dokładnie przeanalizować istniejącą bazę kodu Oracle i zidentyfikować wszelkie potencjalne problemy związane ze zgodnością składni.

Istnieją również pewne różnice w typach danych, które należy uwzględnić podczas migracji. Na przykład typ danych NUMBER w Oracle jest mapowany na NUMERIC lub DOUBLE PRECISION w PostgreSQL, w zależności od wymagań dotyczących precyzji i skali.

W bazie Oracle istnieje funkcja SUBSTR (str, start_pos, len), która zwraca fragment ciągu znakowego. Można ją zastąpić funkcją SUBSTRING (str, start_pos, len) w PostgreSQL. Jednakże w Oracle argument start_pos może być liczbą ujemną. Wtedy znaki liczone są od końca ciągu (od prawej do lewej), zamiast od początku (od lewej do prawej). W PostgreSQL argument przyjmuje tylko wartości dodatnie. Łatwo więc można przenieść kod z Oracle do PostgreSQL, zmieniając tylko nazwę funkcji. Ale jeżeli argument będzie ujemny, otrzymamy odmienne wyniki, a wychwycenie takiego błędu jest bardzo trudne. Dlatego migracja wymaga znajomości obu środowisk oraz przeprowadzenia dokładnych testów porównawczych. (Dla ścisłości: W PostgreSQL istnieje funkcja RIGHT(), która zwraca znaki, licząc od końca ciągu).

Migration d’Oracle vers PostgreSQL : ce qu’il faut savoir_4

Poniżej widać różnice w typach danych, pełne źródło różnic w funkcjach, danych i definicjach obiektu znajdziesz tutaj–> https://www.sqlines.com/oracle-to-postgresql

  • Różne podejścia do obsługi ograniczeń i indeksów.

Istotne jest, aby przejrzeć i zmodyfikować istniejący schemat w celu zapewnienia kompatybilności i optymalnej wydajności. Migracja złożonych ograniczeń, takich jak ograniczenia sprawdzania lub inne unikalne ograniczenia (UNIQUE CONSTRAINT), może wymagać ręcznej interwencji (może być potrzeba przepisania indeksu bądź wyzwalacza (TRIGGER)) i starannej walidacji.

Migracja takiego istniejącego rozwiązania Oracle do Postgres wprowadza ryzyko, że funkcje będą wykorzystywane nieprawidłowo i pojawią się błędy, które na początku nie są widoczne. Program się skompiluje, więc się wydaje, że wszystkie funkcje są poprawne. Również pierwsze testy mogą pokazać pozorną poprawność wyników, ale nie jesteśmy pewni czy parę miesięcy później nie okaże się, że jednak pewne dane zostały utracone albo funkcje źle zaimplementowane.

Dlatego ocena wpływu migracji na istniejące aplikacje i systemy jest niezbędna. Wszelkie zmiany w strukturze lub składni bazy danych mogą wymagać aktualizacji kodu aplikacji, procedur składowanych i zapytań. Jest to szczególnie istotne, biorąc pod uwagę istnienie danych wrażliwych bądź danych finansowych, które muszą być bezpiecznie wdrożone. Kluczowe jest dokładne przetestowanie codebase w celu zapewnienia kompatybilności i funkcjonalności.

Planowanie procesu migracji

Zatem jesteśmy przekonani, że chcemy zmigrować naszą bazę danych. Jak w takim razie się za to zabrać? Kluczowe jest staranne planowanie. Jakie kroki to obejmuje?

  1. Dokładna ocena istniejącej infrastruktury Oracle i określenie zakresu migracji.W tym celu musimy przeprowadzić analizę rozmiaru bazy danych, złożoności schematu i wszelkich zależności od zewnętrznych systemów lub aplikacji.
  2. Zdefiniowanie celów i założeń migracji.Może to obejmować redukcję kosztów, poprawę wydajności lub wykorzystanie określonych funkcji PostgreSQL. Dzięki jasnemu zdefiniowaniu celów łatwiej jest ustalić priorytety zadań i odpowiednio przydzielić zasoby.
  3. Stworzenie szczegółowego planu migracji.Plan ten powinien określać kolejność zadań, harmonogramy i obowiązki. Powinien on również zawierać plan awaryjny na wypadek nieprzewidzianych problemów lub opóźnień.

Wybór strategii i narzędzia migracji danych

Jednym z najbardziej krytycznych aspektów procesu migracji jest przeniesienie danych z Oracle do PostgreSQL. Dostępnych jest kilka strategii i narzędzi ułatwiających ten proces.

Jednym z powszechnych podejść jest wykorzystanie metody ETL (Extract, Transform, Load). Polega ona na wyodrębnieniu danych z bazy Oracle, przekształceniu ich do formatu zgodnego z PostgreSQL i załadowaniu do nowej bazy danych. Dostępnych jest kilka narzędzi ETL, zarówno open-source, jak i komercyjnych, które mogą zautomatyzować ten proces i obsługiwać złożone transformacje danych.

Inną opcją jest skorzystanie z wbudowanych funkcji PostgreSQL, takich jak rozszerzenie Foreign Data Wrapper (FDW). FDW pozwala PostgreSQL na bezpośredni dostęp i odpytywanie danych ze zdalnych baz danych Oracle. Takie podejście eliminuje potrzebę migracji danych, ale wymaga dodatkowej konfiguracji i może mieć wpływ na wydajność.

Testowanie i walidacja migrowanych danych

Niezależnie od wybranej strategii, kluczowe jest dokładne przetestowanie procesu migracji danych. Obejmuje to sprawdzenie integralności i spójności przeniesionych danych, a także sprawdzenie, czy zmigrowane dane zachowują się zgodnie z oczekiwaniami w nowym środowisku PostgreSQL.

Zaleca się utworzenie oddzielnego środowiska testowego, które ściśle przypomina środowisko produkcyjne. Pozwala to na kompleksowe testowanie migrowanych danych i aplikacji bez wpływu na działający system.

Podczas testów niezbędne jest sprawdzenie integralności i spójności danych. Obejmuje to m.in:

  • sprawdzenie brakujących lub nieprawidłowych danych,
  • weryfikację czy relacje między tabelami zostały zachowane,
  • przeprowadzenie testów funkcjonalnych, aby upewnić się, że migrowane aplikacje i zapytania działają poprawnie.

Zadania po migracji

Po zakończeniu migracji danych należy zająć się kilkoma zadaniami i kwestiami, m.in:

  1. Aktualizacja aplikacji i systemów w celu połączenia z nową bazą danych PostgreSQL. Może to obejmować modyfikację ciągów połączeń, aktualizację plików konfiguracyjnych lub przepisanie zapytań SQL, aby były zgodne ze składnią PostgreSQL.
  2. Ponowna ocena wydajności i strategii optymalizacji dla nowego środowiska PostgreSQL. Obejmuje to przegląd i dostosowanie konfiguracji bazy danych, strategii indeksowania i technik optymalizacji zapytań.
  3. Tworzenie kopii zapasowych danych i odzyskiwanie danych po awarii. PostgreSQL zapewnia kilka mechanizmów tworzenia kopii zapasowych danych, w tym fizyczne kopie zapasowe, logiczne kopie zapasowe i ciągłą archiwizację.

Case Study – migracja bazy danych z Oracle do PostgreSQL

Dlaklienta pracującego w branży logistycznej, przeprowadziliśmy migrację danych z Oracle do PostgreSQL. Klientowi zależało na tym, żeby ograniczyć koszty licencji. Wcześniej miał rozwiązania oparte na Oracle, ale nie był do końca przekonany czy inne rozwiązania bazodanowe typu open – source są wystarczająco solidne i stabilne, żeby można ich było produkcyjnie używać. Dzięki migracji wykonanej przez programistów VM.PL udało się z sukcesem zrealizować wdrożenie PostgresSQL, które działa jako poważna baza danych, pracująca w dużych projektach komercyjnych.

Wnioski i przemyślenia końcowe

Chociaż zarówno Oracle, jak i PostgreSQL oferują solidne rozwiązania w zakresie bezpieczeństwa danych, wybór ostatecznie zależy od specyficznych wymagań, zasobów i długoterminowych celów Twojej organizacji. Dokładne rozważenie tych czynników zapewni wybór systemu zarządzania bazą danych, który najlepiej odpowiada potrzebom organizacji w zakresie bezpieczeństwa danych.

Jeśli zdecydujesz się na migrację z Oracle do PostgreSQL to przy starannym planowaniu, dokładnym testowaniu oraz walidacji migrowanych danych z pewnością będzie to udany proces. Jeśli miałbyś pytania w tym zakresie i chciałbyś doradzić się doświadczonych ekspertów baz danych, skontaktuj się z nami. Chętnie pomożemy w doborze odpowiednich rozwiązań dla Twojej organizacji.

Kategoria: Java


Mariola Nowak Content Writer

Design, Development, DevOps czy Cloud – jakiego zespołu potrzebujesz, aby przyspieszyć pracę nad swoimi projektami?
Porozmawiaj o swoich potrzebach z naszymi specjalistami.

Jakub Orczyk

Członek zarządu / Dyrektor sprzedaży
VM.PL

Zamów bezpłatną konsultację
kuba (1)