Wydanie SGBD Firebird 5.0

Po dwóch i pół roku prac nad rozwojem przedstawiono wersję relacyjnej bazy danych Firebird 5.0. Firebird kontynuuje rozwój kodu bazy danych InterBase 6.0, udostępnionego w 2000 roku przez firmę Borland. Firebird jest rozpowszechniany na podstawie wolnej licencji MPL i wspiera standardy ANSI SQL, w tym takie funkcje jak wyzwalacze, procedury składowane i replikacja. Przygotowano binarne kompilacje dla Linuxa, Windowsa, macOS i Androida.

Kluczowe nowości:

  • Zrealizowano możliwość wykonywania operacji w trybie wielowątkowym. Równoległe przetwarzanie w kilku wątkach można zastosować przy tworzeniu indeksów, zbieraniu śmieci (automatyczne i ręczne operacje sweep), tworzeniu kopii zapasowych i przywracaniu z nich. gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
  • Dodano wsparcie dla częściowych indeksów, które obejmują tylko wybrane rekordy, odpowiadające warunkom podanym przy tworzeniu indeksu. CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;
  • W wyrażeniach SELECT WITH LOCK, UPDATE i DELETE zaimplementowano składnię „SKIP LOCKED”, umożliwiającą wykluczenie rekordów, dla których w momencie wysyłania zapytania ustanowiono blokadę (np. aby nie czekać na zwolnienie blokady przy kolizji z inną transakcją).
  • Dodano możliwość aktualizacji bazy danych do aktualnej wersji pośredniej struktury na dysku (ODS – On-Disk-Structure) na żywo (inline update) bez tworzenia i przywracania z kopii zapasowej. Na przykład, teraz można na żywo przekształcić bazę danych w formacie Firebird 4.0 (ODS 13.0) do formatu Firebird 5.0 (ODS 13.1).
  • Zrealizowano pamięć podręczną skompilowanych wyrażeń SQL, zarządzaną automatycznie (zdezaktualizowane wpisy są usuwane w miarę potrzeby). Rozmiar pamięci podręcznej określa się przez parametr MaxStatementCacheSize w pliku firebird.conf.
  • Dodano interfejs do profilowania SQL i PSQL, umożliwiający ocenę czasu wykonania każdego zapytania, gromadzenie statystyk dotyczących liczby zapytań i wykrywanie problemów z wydajnością.
  • W wyrażeniu MERGE dodano wsparcie dla warunkowego bloku „WHEN NOT MATCHED BY SOURCE”, który aktywuje się, gdy rekord źródłowy nie pasuje do żadnego rekordu w docelowym zbiorze. MERGE INTO customers c USING new_customers nc ON (c.id = nc.id) WHEN MATCHED THEN UPDATE SET name = nc.name WHEN NOT MATCHED BY SOURCE THEN DELETE
  • Zapewniono możliwość zwracania wielu wierszy przez wyrażenie RETURNING, jeśli podane wyrażenie DML obejmuje wiele wierszy (wcześniej w takich sytuacjach występował błąd „multiple rows in singleton select”).
  • Dodano nowe wbudowane funkcje: UNICODE_CHAR do zwracania znaku unicode odpowiadającego podanemu kodowi oraz UNICODE_VAL do zwracania kodu dla danego znaku. Funkcje EXTRACT, FIRST_DAY i LAST_DAY zyskały parametr QUARTER do określenia numeru kwartału.
  • Dodano nowy pakiet systemowy RDB$BLOB_UTIL, zawierający zbiór operacji na BLOB-ach dla modułów PSQL.
  • Udoskonalono algorytm kompresji rekordów, który teraz stosuje licznik zmiennej długości dla bardziej efektywnego pakowania powtarzających się sekwencji danych. Optymalizacja pozwoliła znacząco zwiększyć stopień kompresji nie do końca wypełnionych długich pól VARCHAR z danymi w kodowaniu UTF-8.
  • Dodano możliwość pracy z dwukierunkowymi kursorami (scrollable) podczas zdalnego dostępu do bazy danych.
  • Przeprowadzono optymalizację wydajności kopiowania blobów.
  • Dodano pełne wsparcie dla składni definicji ciągów opisanej w standardzie SQL. Na przykład, ciągi mogą teraz być przerywane komentarzami lub spacjami: select ‘ab’ /* comment */ ‘cd’ from RDB$DATABASE; select ‘ab’ ‘cd’ from RDB$DATABASE;

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster