Database 23c

Oracle Database 23c zapewnia najbardziej kompletną i prostą konwergentną bazę danych dla programistów, którzy chcą tworzyć nowe mikrousługi, grafy, dokumenty i aplikacje relacyjne.

Co tydzień będziemy przedstawiać nową funkcję Oracle Database 23c wraz z przykładami, co pozwoli Ci szybko rozpocząć pracę. Sprawdzaj tę stronę co tydzień, aby poznać nowe wyróżnione funkcje.

Najważniejsze cechy

Wesołych Świąt!

Na koniec roku 2023 przedstawiamy podsumowanie nowych funkcji w Oracle Database 23c, które omawialiśmy na przestrzeni całego roku. Zachęcamy, zwłaszcza programistów, do zapoznania się z najnowszą wersją Oracle Database tutaj lub pod adresem oracle.com/database/free.

Tabele blockchain

Tabele blockchain i tabele niemutowalne, które są dostępne od czasu wydania Oracle Database 19c, wykorzystują bezpieczne metody kryptograficzne, aby pomóc chronić dane przed manipulacją lub usunięciem przez zewnętrznych hakerów i nieuczciwych pracowników. Obejmuje to ograniczenia tylko do wstawiania, które zapobiegają aktualizacjom lub usuwaniu (nawet przez administratorów baz danych), kryptograficzne łańcuchy haszujące umożliwiające weryfikację, podpisane skróty tabel pozwalające na wykrywanie wszelkich wycofań na dużą skalę oraz podpisywanie wstawionych wierszy przez użytkowników końcowych przy użyciu ich kluczy prywatnych. Oracle Database 23c wprowadza wiele ulepszeń, w tym obsługę replikacji logicznej za pośrednictwem Oracle GoldenGate i stopniowych uaktualnień przy użyciu Active Data Guard, obsługę transakcji rozproszonych obejmujących tabele blockchain, wydajne masowe usuwanie wygasłych wierszy oparte na partycjach oraz optymalizacje wydajności wstawień/zatwierdzeń.

W tej wersji wprowadzono również możliwość dodawania/usuwania kolumn bez wpływu na kryptograficzne łańcuchy haszujące, łańcuchy specyficzne dla użytkownika i skróty tabeli dla filtrowanych wierszy, funkcję podpisywania przez delegata oraz kontrasygnowanie bazy danych. Rozszerzono także zarządzanie danymi zabezpieczonymi kryptograficznie o zwykłe tabele, umożliwiając audyt historycznych zmian w tabelach innych niż blockchain za pośrednictwem archiwum Flashback zdefiniowanego pod kątem korzystania z tabeli historii blockchain.

Funkcje te doskonale sprawdzają się w przypadku wbudowanej ścieżki audytu lub prowadzenia archiwum. Mogą być wykorzystywane w księgach finansowych, historii płatności, śledzeniu zgodności z przepisami, dziennikach prawnych i wszelkich danych dotyczących zasobów, w przypadku których manipulacja lub usunięcie może prowadzić do poważnych konsekwencji prawnych lub finansowych bądź utraty reputacji.



Logiczny typ danych

Oracle Database obsługuje teraz logiczny typ danych zgodny ze standardem ISO SQL. Umożliwia to przechowywanie wartości True i False w tabelach i używanie wyrażeń logicznych w instrukcjach SQL. Logiczny typ danych standaryzuje przechowywanie wartości Yes i No oraz ułatwia migrację do Oracle Database.



Asynchroniczne programowanie i potokowanie sterownika bazy danych

Dzięki Oracle Database 23c funkcja Pipelining umożliwia aplikacjom .NET, Java i C/C++ wysyłanie wielu żądań do bazy danych bez oczekiwania na odpowiedź serwera. Oracle Database kolejkuje i przetwarza te żądania jeden po drugim, umożliwiając aplikacjom klienckim kontynuowanie pracy do momentu powiadomienia o zakończeniu żądań. Ulepszenia te zapewniają lepsze środowisko użytkownika końcowego, lepszą responsywność aplikacji opartych na danych, pełną skalowalność, unikanie wąskich gardeł w wydajności i efektywne wykorzystanie zasobów po stronie serwera i klienta.

Aby wniosek klienta został od razu zwrócony, Oracle Database Pipelining wymaga asynchronicznego lub reaktywnego interfejsu API w sterownikach .NET, Java i C/C++. Mechanizmy te mogą być używane z bazą Oracle Database przy użyciu lub bez użycia funkcji Database Pipelining.

W przypadku języka Java, Oracle Database 23c wyposaża bibliotekę Reactive Extensions w rozwiązania Java Database Connectivity (JDBC), Universal Connection Pool (UCP) i sterownik Oracle R2DBC. Obsługuje również wirtualne wątki Java w sterowniku (Project Loom), a także biblioteki Reactive Streams, takie jak Reactor, RxJava, Akka Streams, Vert.x itp.



DB_DEVELOPER_ROLE

W Oracle Database 23c dostępna jest nowa rola DB_DEVELOPER_ROLE, która zapewnia programistom aplikacji wszystkie niezbędne uprawnienia do projektowania, wdrażania i debugowania aplikacji w bazach danych Oracle Database. Korzystając z tej roli, administratorzy nie muszą już zgadywać, które uprawnienia mogą być niezbędne do tworzenia aplikacji.





Złączenia bezpośrednie dla instrukcji UPDATE i DELETE

Oracle Database umożliwia teraz złączenie tabeli docelowej w instrukcjach UPDATE i DELETE z innymi tabelami przy użyciu klauzuli FROM. Te inne tabele mogą ograniczać zmieniane wiersze lub być źródłem nowych wartości. Złączenia bezpośrednie ułatwiają pisanie kodu SQL w celu zmiany i usunięcia danych.



Rozszerzenia funkcji Fast Ingest

Dodaliśmy rozszerzenia do funkcji Memoptimized Rowstore Fast Ingest z obsługą partycjonowania, skompresowanych tabel, szybkiego opróżniania przy użyciu bezpośredniego zapisywania danych i bezpośredniej obsługi populacji magazynu kolumn w pamięci. Dzięki tym rozszerzeniom funkcja Fast Ingest jest łatwiejsza do zastosowania w większej liczbie sytuacji wymagających szybkiego wchłanianie danych. Obecnie Oracle Database zapewnia lepsze wsparcie dla aplikacji wymagających szybkiego wchłaniania danych. Dane mogą być wchłaniane, a następnie przetwarzane w tej samej bazie danych. Ogranicza to potrzebę korzystania ze specjalnych środowisk ładowania danych, a tym samym upraszcza operacje i ogranicza nadmiarowość danych.



Monitorowanie za pomocą platformy Grafana

Oracle nadal rozszerza swoje natywne usługi chmurowe i obsługę platformy Kubernetes za pomocą swojego nowego narzędzia Observability Exporter for Oracle Database. Umożliwia ono łatwe eksportowanie metryk baz danych i aplikacji w standardowym formacie Prometheus oraz łatwe tworzenie pulpitów informacyjnych Grafana w celu monitorowania wydajności baz danych i aplikacji Oracle.



Alias kolumny GROUP BY

Można teraz używać aliasu kolumny lub pozycji elementu SELECT w klauzulach GROUP BY, GROUP BY CUBE, GROUP BY ROLLUP i GROUP BY GROUPING SETS. Ponadto klauzula HAVING obsługuje aliasy kolumn. Te nowe rozszerzenia bazy danych 23c ułatwiają tworzenie klauzul GROUP BY i HAVING, dzięki czemu zapytania SQL są znacznie bardziej czytelne i łatwe w aktualizacji, zapewniając jednocześnie lepszą przenośność kodu SQL.



IF [NOT] EXISTS

Procesy tworzenia, modyfikacji i usuwania obiektów DDL w Oracle Database obsługują teraz modyfikatory składni IF EXISTS i IF NOT EXISTS. Umożliwia to kontrolowanie, czy błąd powinien zostać zgłoszony, jeśli dany obiekt istnieje lub nie istnieje, upraszczając obsługę błędów w skryptach i aplikacjach.



Agregacje typu danych INTERVAL

Oracle Database 23c ułatwia programistom obliczanie sum i średnich dla wartości INTERVAL. Dzięki temu rozszerzeniu można teraz przekazywać typy danych INTERVAL do funkcji agregujących i analitycznych SUM i AVG.



Procedury składowane JavaScript

Wywołania modułów Multilingual Engine (MLE) umożliwiają programistom wywoływanie funkcji JavaScript przechowywanych w modułach z poziomu SQL i PL/SQL. Specyfikacje wywołań napisane w języku PL/SQL łączą JavaScript z jednostkami kodowania PL/SQL. Ta funkcja umożliwia programistom korzystanie z funkcji JavaScript wszędzie tam, gdzie wywoływane są funkcje PL/SQL.



Typ danych binarnych JSON

Typ danych JSON to zoptymalizowany przez Oracle binarny format JSON o nazwie OSON. Zaprojektowano go z myślą o szybszej wydajności zapytań i operacji języka DML w bazie danych i klientach baz danych od wersji 21c.



Perspektywy JSON Relational Duality

JSON Relational Duality, innowacja wprowadzona w Oracle Database 23c, łączy relacyjne i dokumentowe modele danych, aby zapewnić to, co najlepsze w obu rozwiązaniach. Programiści mogą tworzyć aplikacje w paradygmacie relacyjnym lub JSON z jednym źródłem prawdy i korzystać z mocnych stron obu modeli. Dane są przechowywane raz, ale można do nich uzyskiwać dostęp, zapisywać je i modyfikować przy użyciu dowolnego podejścia. Programiści korzystają z transakcji zgodnych z ACID i kontroli współbieżności, co oznacza, że nie muszą już iść na kompromis między złożonymi mapowaniami obiektowo-relacyjnymi a kwestiami niespójności danych.



Schemat JSON

Oracle Database obsługuje format JSON na potrzeby przechowywania i przetwarzania danych o elastycznym schemacie. Dzięki Oracle Database 23c baza Oracle Database obsługuje teraz schemat JSON na potrzeby weryfikacji struktury i wartości danych JSON. Operator SQL IS JSON został rozszerzony o akceptację schematu JSON, a różne funkcje PL/SQL zostały dodane w celu walidacji kodu JSON oraz opisania obiektów bazy danych, takich jak tabele, widoki i typy, jako dokumenty schematu JSON.

Domyślnie dane JSON są nie są schematami, zapewniając elastyczność. Aby upewnić się, że dane JSON mają określoną strukturę i typ, należy dokonać standardowej walidacji schematu JSON.

Współtworzenie schematu JSON
Oracle aktywnie uczestniczy w tworzeniu schematu JSON (open source) mającego na celu standaryzację deklaratywnego języka opartego na notacji JSON, umożliwiającego adnotowanie i weryfikowanie dokumentów JSON. Jest on obecnie w fazie proszenia o komentarze (Request for Comments, RFC).



Interfejsy API Kafka

Oracle Database 23c zapewnia jeszcze lepszą kompatybilność aplikacji Apache Kafka z Oracle Database. Ta nowa funkcja umożliwia łatwą migrację aplikacji Kafka w języku Java do kolejek zdarzeń transakcyjnych (TxEventQ). Interfejsy API Kafka Java mogą teraz łączyć się z serwerem Oracle Database i używać TxEventQ jako platformy komunikacyjnej.

Programiści mogą z łatwością dokonać migracji istniejącej aplikacji Java korzystającej z Kafka do Oracle Database za pomocą sterownika JDBC Thin. Z kolei dzięki funkcji biblioteki Oracle Database 23c po stronie klienta aplikacje Kafka mogą teraz łączyć się z Oracle Database zamiast z klastrem Kafka i w przejrzysty sposób korzystać z platformy komunikacyjnej TxEventQ.



Rezerwacje wartości kolumn bez blokady

Rezerwacje bez blokady umożliwiają kontynuowanie współbieżnych transakcji bez blokowania aktualizacji mocno modyfikowanych wierszy. Zamiast blokować wiersze, rezerwacje bez blokady są w nich przechowywane. Sprawdzają, czy aktualizacje mogą się powieść, i odraczają je do czasu zatwierdzenia transakcji. Funkcja rezerwacji bez blokady usprawnia obsługę i współbieżność transakcji.



Zgodność z interfejsem API MongoDB

Za pomocą interfejsu Oracle Database API for MongoDB programiści mogą nadal używać narzędzi i sterowników z bazy danych MongoDB w ramach Oracle Database, uzyskując jednocześnie dostęp do wielomodelowych funkcji i samoczynnej bazy danych Oracle. Klienci mogą uruchamiać obciążenia robocze bazy MongoDB w Oracle Cloud Infrastructure (OCI). Często w istniejących aplikacjach MongoDB wymagane są jedynie niewielkie lub żadne zmiany i wystarczy zmienić tylko opis połączenia.

Oracle Database API dla MongoDB wchodzi w skład standardowych usług Oracle REST Data Services. Interfejs ten jest wstępnie skonfigurowany i w pełni zarządzany jako element bazy danych Oracle Autonomous Database.



Grafy właściwości operacyjnych

Oracle Database oferuje natywną obsługę struktur danych grafów właściwości i zapytań dotyczących grafów. Jeśli zależy Ci na elastyczności w zakresie tworzenia grafów w połączeniu z danymi transakcyjnymi, JSON, przestrzennymi i innymi typami danych, mamy dla Ciebie odpowiednie rozwiązanie. Programiści mogą teraz z łatwością tworzyć aplikacje grafowe za pomocą SQL przy użyciu istniejących narzędzi programistycznych i frameworków SQL.



Obsługa konstruktora JSON PL/SQL dla typów agregacji

Konstruktor PL/SQL JSON został rozszerzony, aby akceptować instancję odpowiedniego typu agregacji PL/SQL, zwracając obiekt JSON lub typ macierzy wypełniony danymi typu agregacji.

Operator PL/SQL JSON_VALUE został rozszerzony tak, aby jego klauzula zwrotna mogła akceptować nazwę typu, która definiuje typ instancji, którą operator ma zwrócić. Obsługa konstruktorów JSON dla typów danych zagregowanych usprawnia wymianę danych między aplikacjami PL/SQL a językami obsługującymi format JSON.



Klauzula RETURNING INTO

Klauzula RETURNING INTO dla instrukcji INSERT, UPDATE i DELETE została rozszerzona o raporty dotyczące starych i nowych wartości, na które ma wpływ dana instrukcja. Pozwala to programistom na użycie tej samej logiki dla każdego z tych typów bibliotek DML w celu uzyskania wartości przed i po wykonaniu instrukcji. Stare i nowe wartości są poprawne tylko dla instrukcji UPDATE. Instrukcje INSERT nie zgłaszają starych wartości, a instrukcje DELETE nie zgłaszają nowych wartości.

Dzięki możliwości uzyskiwania starych i nowych wartości, na które mają wpływ instrukcje INSERT, UPDATE i DELETE w ramach wykonywania polecenia SQL, programiści mają jednolite podejście do odczytywania tych wartości i ograniczają ilość pracy, jaką musi wykonać baza danych.



Uprawnienia do schematu

Oracle Database obsługuje teraz uprawnienia do schematu w uzupełnieniu do istniejących uprawnień obiektowych, systemowych i administracyjnych. Funkcja ta poprawia bezpieczeństwo, upraszczając autoryzację obiektów bazy danych, co pozwala lepiej wdrożyć zasadę najniższych potrzebnych uprawnień i uniknąć zgadywania, kto powinien mieć dostęp do czego.



SELECT bez klauzuli FROM

Możesz teraz uruchamiać zapytania zawierające tylko wyrażenie SELECT bez klauzuli FROM. Ta nowa funkcja poprawia przenośność kodu SQL i ułatwia pracę programistom.



Makra SQL

Twórz makra SQL pozwalające przekształcać typowe wyrażenia i instrukcje SQL w sparametryzowane konstrukcje wielokrotnego użytku, których można używać w innych instrukcjach SQL. Makra SQL mogą być wyrażeniami skalarnymi, które są zwykle używane w listach SELECT, a także w klauzulach WHERE, GROUP BY i HAVING. Makra SQL mogą być również używane do enkapsulacji obliczeń i logiki biznesowej lub mogą być wyrażeniami tabelarycznymi, zwykle używanymi w klauzuli FROM. W porównaniu do konstrukcji PL/SQL makra SQL mogą poprawić wydajność. Makra SQL zwiększają produktywność programistów, upraszczają wspólne tworzenie oprogramowania i poprawiają jakość kodu.



SQL Analysis Report

W tym tygodniu skupimy się na SQL Analysis Report — łatwej w użyciu funkcji pomagającej programistom tworzyć lepsze instrukcje SQL. Funkcja ta raportuje typowe problemy z instrukcjami SQL, a zwłaszcza te, które mogą prowadzić do niskiej wydajności SQL. Funkcja ta jest dostępna w narzędziach DBMS_XPLAN i SQL Monitor.



SQL Firewall

Funkcja SQL Firewall pozwala wykrywać anomalie i zapobiegać atakom typu SQL injection. SQL Firewall bada wszystkie instrukcje SQL, w tym informacje kontekstowe sesji, takie jak adres IP i użytkownik systemu operacyjnego. Osadzona w jądrze bazy danych funkcja SQL Firewall rejestruje i (jeśli jest włączona) blokuje nieautoryzowany kod SQL, zapewniając, że nie można go ominąć. Wymuszając listę dozwolonych zapytań SQL i kontekstów sesji, funkcja SQL Firewall może zapobiec wielu atakom typu zero-day i ograniczyć ryzyko kradzieży lub niewłaściwego wykorzystania danych uwierzytelniających.



Table Value Constructor (TVC)

Silnik SQL Oracle Database obsługuje teraz klauzulę VALUES dla wielu typów zapytań. Pozwala to na bieżąco materializować wiersze danych, określając je przy użyciu nowej składni bez polegania na istniejących tabelach. Oracle Database 23c obsługuje klauzulę VALUES dla instrukcji SELECT, INSERT i MERGE. Wprowadzenie nowej klauzuli VALUES pozwala programistom tworzyć mniej kodu dla poleceń SQL ad-hoc, co zwiększa czytelność i oszczędza czas pracy.



Adnotacje dotyczące użytkowania

Adnotacje umożliwiają przechowywanie i pobieranie metadanych dotyczących obiektów bazy danych. Są to pola tekstowe w dowolnym formacie, których aplikacje mogą używać do dostosowywania logiki biznesowej lub interfejsów użytkownika. Adnotacje to pary nazwa-wartość lub po prostu nazwa. Pomagają one korzystać z obiektów bazy danych w ten sam sposób we wszystkich aplikacjach, upraszczając proces programowania i poprawiając jakość danych.



Domeny użytkowe

Domeny użytkowe (czasami nazywane domenami SQL lub domenami użytkowymi aplikacji) to obiekty słownika wysokiego poziomu, które pełnią rolę lekkich modyfikatorów typów i centralnie dokumentują zamierzone wykorzystanie danych przez aplikacje. Domeny użytkowe mogą służyć do definiowania wykorzystania danych i standaryzacji operacji w celu enkapsulacji zestawu ograniczeń kontrolnych, właściwości wyświetlania, reguł porządkowania i innych właściwości użytkowych bez konieczności stosowania metadanych na poziomie aplikacji.

Domeny użytkowe dla co najmniej jednej kolumny w tabeli nie modyfikują bazowego typu danych, a zatem mogą być również dodawane do istniejących danych bez przerywania działania aplikacji lub bez powodowania problemów z przenośnością.