Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Oracle Database to jeden z najbardziej rozpoznawalnych systemów baz danych na świecie i od dekad standard w bankowości, telekomunikacji oraz dużych systemach firmowych. W tym przewodniku wyjaśnimy prostym językiem, czym Oracle jest, jak jest zbudowany i - co najważniejsze - czym rzeczywiście różni się od PostgreSQL, MySQL/MariaDB oraz Microsoft SQL Server. Pokażemy też, gdzie Oracle jest dziś: w chmurze i w erze sztucznej inteligencji.
Oracle Database to system zarządzania relacyjną bazą danych (po angielsku RDBMS - relational database management system), czyli oprogramowanie, które przechowuje dane w tabelach powiązanych ze sobą relacjami i udostępnia je przez język zapytań SQL. Mówiąc prosto - to silnik, któremu firma powierza swoje najważniejsze dane (klientów, zamówienia, transakcje) i który pilnuje, żeby te dane były spójne, bezpieczne i dostępne nawet przy tysiącach jednoczesnych użytkowników.
Bazę Oracle rozwija firma Oracle Corporation. Pierwsza komercyjna wersja pojawiła się w 1979 roku i od tego czasu system przeszedł drogę od wersji 7, przez słynne 8i, 9i, 10g i 11g, aż po dzisiejsze wydania oznaczane rokiem: 19c, 21c, a następnie 23ai i 26ai. Litera w nazwie zawsze zdradzała kierunek epoki - i jak internet, g jak grid (sieć serwerów), c jak cloud (chmura), a najnowsze ai jak sztuczna inteligencja. Więcej o różnicach między tymi wydaniami opisaliśmy w osobnym tekście o nowościach w Oracle od wersji 19c po 26ai.
Do czego służy Oracle w praktyce? Najczęściej stoi pod systemami, w których błąd lub przestój kosztuje najwięcej - pod systemami bankowymi i ubezpieczeniowymi, systemami ERP (zarządzanie firmą) i CRM (obsługa klienta), platformami telekomunikacyjnymi, systemami rezerwacji czy rozliczeń. To baza, którą zaprojektowano z myślą o dużej skali, wysokiej dostępności i twardych wymaganiach dotyczących spójności danych.
Żeby zrozumieć Oracle (i późniejsze różnice wobec innych baz), trzeba poznać jedno kluczowe rozróżnienie: instancja to nie to samo co baza danych. Baza danych to zbiór plików na dysku, w których trwale mieszkają dane. Instancja to zestaw obszarów pamięci i procesów działających w tle, które te pliki obsługują. Dopiero instancja podłączona do bazy daje działający system, do którego można się połączyć i wykonać zapytanie.
Sercem instancji jest SGA (System Global Area) - wspóldzielony obszar pamięci, z którego korzystają wszyscy użytkownicy. Składają się na niego między innymi Database Buffer Cache (bufor z blokami danych trzymanymi w pamięci, żeby nie czytać ich ciągle z dysku), Shared Pool (miejsce na gotowe plany wykonania zapytań i słownik danych) oraz Redo Log Buffer (bufor zapisujący każdą zmianę, dzięki któremu bazę da się odtworzyć po awarii). Obok SGA istnieje jeszcze PGA (Program Global Area) - prywatna pamięć przypisana do pojedynczej sesji, gdzie odbywają się na przykład sortowania.
Za kulisami pracuje zestaw wyspecjalizowanych procesów. Najważniejsze z nich to DBWn (Database Writer - zapisuje zmienione bloki z pamięci na dysk), LGWR (Log Writer - zapisuje zmiany do dzienników redo), CKPT (Checkpoint - wyznacza punkty spójności), SMON (System Monitor - odzyskuje bazę po awarii instancji), PMON (Process Monitor - sprząta po zerwanych sesjach) oraz ARCn (Archiver - archiwizuje dzienniki redo). Ten podział obowiązków sprawia, że użytkownik nie czeka na zapis na dysk - jego zmiana najpierw trafia do pamięci, a procesy tła dbają o resztę.
Na trwałe dane składają się głównie pliki danych (z tabelami i indeksami), pliki kontrolne (opisujące strukturę bazy) oraz dzienniki redo (log zmian potrzebny do odtwarzania). Logiczne odpowiedniki tych plików to przestrzenie tabel (tablespaces), segmenty i bloki - ale z punktu widzenia początku wystarczy zapamiętać, że dane realnie leżą w plikach, a Oracle zarządza nimi w tle.
Od wersji 12c Oracle wprowadził architekturę wielodostępną (multitenant). Zamiast stawiać osobny serwer bazy dla każdej aplikacji, tworzymy jeden kontener CDB (Container Database), a wewnątrz niego wiele niezależnych, wpinanych baz PDB (Pluggable Database). Każda PDB zachowuje się jak osobna baza - ma własne tabele i użytkowników - ale wspóldzieli z innymi zasoby i procesy kontenera.
Dlaczego to ważne? Bo upraszcza zarządzanie i obniża koszty. Aktualizacje i kopie zapasowe robi się na poziomie kontenera, a poszczególne bazy PDB można przenosić między serwerami niemal jak pliki. To właśnie ten model stoi za bazą Oracle w chmurze, gdzie tysiące baz klientów działa na wspólnej, zarządzanej infrastrukturze. Na potrzeby tego przewodnika wystarczy zapamiętać skrót: CDB to kontener, PDB to baza w środku.
Oracle to nie jeden produkt, lecz rodzina edycji o różnej mocy i cenie. Dla początkującego najważniejsza wiadomość jest taka, że Oracle można używać za darmo - do nauki, prototypów i małych wdrożeń służy bezpłatna edycja.
Właśnie licencjonowanie to jedna z pierwszych rzeczy, które odróżniają Oracle od baz open source. Enterprise Edition rozlicza się zwykle za rdzenie procesora, a wybrane opcje dolicza się osobno - dlatego Oracle bywa najdroższym wyborem, ale też najbogatszym w funkcje klasy korporacyjnej. Aktualne stawki i zasady znajdziesz w oficjalnym cenniku Oracle.
Z Oracle rozmawiamy przez SQL - ten sam standardowy język zapytań, który znają wszystkie bazy relacyjne. Poniższe zapytanie to dokładnie to, które widać na zrzucie otwierającym artykuł - łączy tabelę produktów i sprzedaży, a następnie grupuje przychód według kategorii i regionu.
SELECT p.category, s.region,
COUNT(*) AS tx_count,
SUM(s.quantity) AS total_units,
SUM(s.quantity * p.price) AS revenue
FROM products p
JOIN sales s ON s.product_id = p.product_id
GROUP BY p.category, s.region
ORDER BY revenue DESC;
Poza czystym SQL Oracle ma własny język programowania w bazie - PL/SQL (Procedural Language/SQL). Pozwala pisać procedury, funkcje i wyzwalacze, czyli logikę, która działa bezpośrednio przy danych, bez wysyłania ich do aplikacji. To jeden z powodów wysokiej wydajności dużych systemów na Oracle. Prosta funkcja PL/SQL wygląda tak:
CREATE OR REPLACE FUNCTION region_revenue(p_region IN VARCHAR2)
RETURN NUMBER IS
v_total NUMBER := 0;
BEGIN
SELECT SUM(s.quantity * p.price) INTO v_total
FROM products p
JOIN sales s ON s.product_id = p.product_id
WHERE s.region = p_region;
RETURN NVL(v_total, 0);
END;
/
Odpowiedniki PL/SQL w innych bazach to PL/pgSQL w PostgreSQL oraz T-SQL w SQL Server. Jeśli chcesz poznać T-SQL od podstaw, mamy o nim bezpłatny kurs T-SQL w SQL Server na blogu. Jeśli znasz jeden z tych języków, przesiadka bywa łatwiejsza, niż się wydaje.
To pytanie pada najczęściej i nie ma na nie jednej odpowiedzi typu "lepsza-gorsza". Wszystkie liczące się bazy relacyjne - Oracle, PostgreSQL, MySQL/MariaDB i SQL Server - robią to samo w rdzeniu: przechowują dane w tabelach i udostępniają je przez SQL. Różnice widać dopiero w licencji, ekosystemie, mechanizmach wysokiej dostępności i typowych zastosowaniach.
Poniżej rozwijamy ten skrót - pełniejsze zestawienie obejmuje także pierwsze wydanie, model danych, partycjonowanie, przetwarzanie w pamięci, bezpieczeństwo, wersje bezpłatne i narzędzia administracyjne:
| Oracle | PostgreSQL | MySQL / MariaDB | SQL Server | |
|---|---|---|---|---|
| Właściciel | Oracle Corporation | społeczność (PostgreSQL Global Dev. Group) | Oracle (MySQL) / MariaDB Foundation | Microsoft |
| Pierwsze wydanie | 1979 | 1996 | 1995 / 2009 | 1989 |
| Licencja | komercyjna, jest też Free/XE | wolna, open source | GPL / komercyjna (MariaDB: GPL) | komercyjna, jest też Express |
| Koszt wejścia | wysoki dla Enterprise Edition | zerowy | zerowy lub niski | średni, darmowy Express |
| Wersja bezpłatna i limity | Free/XE: 2 rdzenie, 2 GB RAM, 12 GB danych | pełna, bez limitów | pełna (Community / MariaDB) | Express: ~1 rdzeń, 1 GB RAM, 10 GB/bazę |
| Język proceduralny | PL/SQL | PL/pgSQL (i PL/Python, PL/Perl) | SQL/PSM (uboższy) | T-SQL |
| Model danych | relacyjny + JSON, XML, przestrzenny, graf, wektory | relacyjny + JSON, PostGIS, rozszerzenia | relacyjny + JSON | relacyjny + JSON, graf, przestrzenny |
| Partycjonowanie | wbudowane (opcja Enterprise) | deklaratywne, wbudowane | ograniczone | wbudowane |
| Przetwarzanie w pamięci | Database In-Memory (opcja) | brak natywnego | ograniczone | In-Memory OLTP i columnstore |
| Wysoka dostępność | RAC + Data Guard | replikacja + Patroni | replikacja + Galera / Group Replication | Always On Availability Groups |
| Bezpieczeństwo | TDE, VPD, Label Security, audyt | role, RLS, szyfrowanie | role, szyfrowanie | TDE, role, Always Encrypted |
| Baza dla AI (wektory) | AI Vector Search (23ai/26ai) | pgvector (rozszerzenie) | ograniczone | wektory od 2025 |
| Chmura zarządzana | Autonomous Database (OCI) | RDS, Cloud SQL, Azure, Aurora | MySQL HeatWave, RDS | Azure SQL |
| Narzędzie administracyjne | SQL Developer, Database Actions | pgAdmin, psql | MySQL Workbench, DBeaver | SQL Server Management Studio |
| Typowe zastosowanie | korporacje, ERP, banki | uniwersalna, nowe aplikacje | web, CMS, sklepy | ekosystem Microsoft i .NET |
Oracle kontra PostgreSQL. PostgreSQL to najsilniejszy darmowy konkurent - dojrzały, rozszerzalny i bez opłat licencyjnych. Oracle wygrywa tam, gdzie liczy się najbogatszy zestaw funkcji klasy korporacyjnej i wsparcie producenta, PostgreSQL - tam, gdzie budżet i otwartość są priorytetem. Wiele firm rozważa dziś przejście z jednej bazy na drugą, dlatego opisaliśmy krok po kroku, jak wygląda migracja z Oracle do PostgreSQL w praktyce - co przenosi się samo, a co trzeba przepisać.
Oracle kontra MySQL/MariaDB. MySQL (również własność Oracle) i jego odgałęzienie MariaDB królują w aplikacjach webowych i sklepach internetowych. Są lekkie, szybkie w starcie i darmowe, ale ich język proceduralny i mechanizmy klasy korporacyjnej są skromniejsze niż w Oracle.
Oracle kontra SQL Server. Microsoft SQL Server to najbliższy odpowiednik Oracle po stronie komercyjnej, mocno osadzony w ekosystemie Microsoftu i języku T-SQL. Jeśli chcesz poznać go od podstaw, mamy osobny wpis wprowadzenie do MS SQL Server. Warto też pamiętać, że nie każde dane pasują do modelu relacyjnego - o tym, kiedy sięgnąć po bazę nierelacyjną, piszemy w przewodniku SQL kontra NoSQL.
Tu Oracle pokazuje pełnię możliwości i to jeden z głównych powodów, dla których trzyma się w najbardziej wymagających systemach. Dwa filary to RAC i Data Guard.
Real Application Clusters (RAC) pozwala wielu instancjom na różnych serwerach obsługiwać jedną, wspóldzieloną bazę danych. Daje to jednocześnie skalowanie poziome (więcej serwerów to większa wydajność) i wysoką dostępność - awaria jednego węzła nie zatrzymuje bazy, bo pozostałe pracują dalej.
Data Guard to mechanizm odtwarzania po awarii (disaster recovery). Utrzymuje bazę zapasową (standby) w innej lokalizacji, do której na bieżąco wysyłane są zmiany z bazy podstawowej. Gdy główna padnie, zapasowa przejmuje ruch. W wariancie Active Data Guard baza zapasowa może dodatkowo obsługiwać zapytania odczytu. Na samym szczycie stoi Exadata - dedykowana platforma sprzętowa Oracle zoptymalizowana pod ekstremalną wydajność bazy.
Oracle to dziś nie tylko oprogramowanie instalowane na własnych serwerach. W chmurze Oracle Cloud Infrastructure (OCI) działa Autonomous Database - baza, która sama się stroi, łata i tworzy kopie zapasowe, a administrator nie musi zajmować się rutynową obsługą. Poniższy zrzut pochodzi z realnej, darmowej instancji Autonomous w wydaniu 26ai, którą postawiliśmy na potrzeby tego artykułu.
Autonomous Database występuje w kilku wariantach - transakcyjnym (do aplikacji), hurtownianym (do analityki), dokumentowym JSON oraz pod aplikacje low-code Oracle APEX. Do bazy w chmurze nie trzeba nawet instalować żadnego programu - wystarczy przeglądarka i wbudowane narzędzie Database Actions, które widzieliśmy na pierwszym zrzucie. Autonomiczną bazę wypróbujesz bezpłatnie w ramach Oracle Cloud Free Tier.
Zmiana litery na ai nie jest tylko marketingiem. Najnowsze wydania Oracle wniosły funkcje, których próba znalezienia w przewodniku sprzed dwóch lat spełznie na niczym. Dwie zmieniają najwięcej.
AI Vector Search. Oracle wprowadził nowy typ danych VECTOR, dedykowane indeksy wektorowe i operator VECTOR_DISTANCE. Dzięki temu w bazie można przechowywać wektory (liczbowe reprezentacje znaczenia tekstu, obrazu czy dokumentu) i wyszukiwać po podobieństwie - obok zwykłych danych, jednym zapytaniem SQL. To baza pod wyszukiwanie semantyczne i systemy typu RAG (odpowiedzi generowane na podstawie firmowych danych).
-- tabela z kolumną wektorową i indeks wektorowy
CREATE TABLE docs (
id NUMBER PRIMARY KEY,
title VARCHAR2(200),
embedding VECTOR(768, FLOAT32)
);
CREATE VECTOR INDEX docs_vec_idx ON docs (embedding)
ORGANIZATION INMEMORY NEIGHBOR GRAPH
DISTANCE COSINE WITH TARGET ACCURACY 95;
-- wyszukanie 5 najbliższych znaczeniowo dokumentów
SELECT title
FROM docs
ORDER BY VECTOR_DISTANCE(embedding, :question, COSINE)
FETCH APPROX FIRST 5 ROWS ONLY;
VECTOR_DISTANCE (metryka COSINE) zwraca dokumenty uszeregowane od najbardziej podobnego znaczeniowo do zapytania.Wyszukiwanie wektorowe to zaledwie czubek góry lodowej nowych funkcji AI - baza potrafi też integrować się z modelami językowymi i zamieniać pytania w naturalnym języku na SQL. Całą tę warstwę opisaliśmy szerzej w artykule o AI w bazie danych Oracle: Vector Search, Select AI i uczeniu maszynowym.
JSON Relational Duality. Druga przełomowa funkcja rozwiązuje stary spór: dane relacyjne czy dokumenty JSON? W Oracle 23ai/26ai nie trzeba wybierać. Te same dane, zapisane wydajnie w tabelach relacyjnych, można czytać i modyfikować jako spójne dokumenty JSON - przez tak zwany widok dualny. Deweloper dostaje wygodę dokumentów, a firma zachowuje porządek i wydajność modelu relacyjnego.
-- ten sam rekord widoczny jako dokument JSON i jako wiersze tabel
CREATE JSON RELATIONAL DUALITY VIEW orders_dv AS
SELECT JSON {
'_id' : o.order_id,
'status' : o.status,
'customer' : (SELECT JSON {'id': c.customer_id, 'name': c.name}
FROM customers c WITH NOCHECK
WHERE c.customer_id = o.customer_id),
'items' : (SELECT JSON_ARRAYAGG(JSON {'product': i.product_id, 'qty': i.quantity})
FROM order_items i WITH INSERT UPDATE
WHERE i.order_id = o.order_id)
}
FROM orders o WITH INSERT UPDATE DELETE;
Efekt widać od razu. Zamówienie zapisane w trzech tabelach (klient, zamówienie, pozycje) odczytujemy jako jeden, spójny dokument JSON - bez pisania kodu sklejającego dane po stronie aplikacji.
orders_dv zwraca dane z trzech tabel relacyjnych jako jeden dokument JSON.{
"_id" : 1001,
"_metadata" : { "etag" : "F13FB37E10D60DEEA414005070C50FF2", "asof" : "00002DDBB6E3436D" },
"status" : "W realizacji",
"customer" : { "id" : 1, "name" : "Firma Nordvik" },
"items" : [
{ "itemId" : 1, "product" : "Router Aurora X1", "qty" : 2 },
{ "itemId" : 2, "product" : "Switch Nimbus 24", "qty" : 1 }
]
}
Nie ma jednej najlepszej bazy - jest baza najlepiej dopasowana do wymagań, skali i budżetu. Poniższa ściąga pomaga podjąć decyzję.
Oracle ma najwięcej sensu, gdy budujesz lub utrzymujesz duży, krytyczny system (bankowość, ERP, telekomunikacja), potrzebujesz maksymalnej dostępności i skali, przetwarzasz ogromne wolumeny danych albo chcesz korzystać z AI Vector Search i JSON bezpośrednio przy danych transakcyjnych - i masz zespół oraz budżet na bazę klasy korporacyjnej.
Warto rozważyć PostgreSQL lub MySQL/MariaDB, gdy budżet jest ograniczony, a licencja ma być wolna, budujesz nową aplikację webową lub usługową, wystarczają standardowe funkcje relacyjne, a zespół zna ekosystem open source. Aby świadomie porównać obie strony, warto znać też podstawy alternatywy - zebraliśmy je w tekście o najważniejszych pojęciach PostgreSQL.
Wybierz Microsoft SQL Server, gdy Twoja firma działa w ekosystemie Microsoftu i .NET, korzysta z chmury Azure, a zespół zna język T-SQL oraz narzędzia takie jak SQL Server Management Studio. To najbliższy komercyjny odpowiednik Oracle, wybierany najczęściej tam, gdzie liczy się spójność z resztą stosu Microsoft.
Wbrew opinii, że Oracle jest trudny w starcie, pierwsze kroki są dziś banalnie proste i darmowe.
Oracle Database to dojrzały, relacyjny system bazodanowy zaprojektowany pod dużą skalę, wysoką dostępność i twarde wymagania korporacyjne. Od innych baz odróżniają go przede wszystkim komercyjny model licencji, najbogatszy zestaw mechanizmów wysokiej dostępności (RAC, Data Guard), silny język PL/SQL oraz - w najnowszych wydaniach 23ai i 26ai - wbudowane funkcje AI, takie jak wyszukiwanie wektorowe i widoki dualne JSON. PostgreSQL, MySQL/MariaDB i SQL Server pozostają świetnymi alternatywami tam, gdzie priorytetem są koszt, otwartość lub konkretny ekosystem. Najlepsza baza to zawsze ta dopasowana do Twojego projektu - a dobra wiadomość jest taka, że Oracle można dziś poznawać w całości za darmo.
To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR. Ma terminy gwarantowane.
To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR. Ma terminy gwarantowane.
Komentarze (0)
Brak komentarzy...