2011-02-24

Konwersja MySQL do Firebird

Milan Babuskov w swoim blogu napisał, że zdecydował się zautomatyzować proces konwersji baz danych MySQL do Firebird. W tym celu napisał program, który częściowo automatyzuje proces konwersji. Program jest napisany w PHP i jest dostępny na zasadach Open Source.

Program dokonuje tylko konwersji struktury bazy danych. Nie są też obsługiwane wszystkie typy danych. Autor proponuje, żeby w razie potrzeby we własnym zakresie rozbudowywać ten program. Można też zwrócić się w tej sprawie do autora programu.

2011-02-23

Wiele serwerów Firebird w Ubuntu

Czy instalowanie wielu serwerów Firebird w jednym komputerze ma sens? W typowych przypadkach nie. Jeden serwer Firebird może przecież obsługiwać wiele różnych baz danych. Są jednak przypadki szczególne. Na przykład może się zdarzyć, że ten sam komputer jest wykorzystywany do obsługi bazy produkcyjnej i bazy testowej. W zasadzie nie powinno się używać tego samego komputera w celach produkcyjnych, ale… życie stwarza różne potrzeby, a jeżeli na przykład serwer produkcyjny nie jest mocno obciążony, to w zasadzie dlaczego by go nie wykorzystać.

Może się zdarzyć, że w procesie testowania jakieś błędnie zbudowane zapytanie SQL będzie trwać tak długo, że konieczne stanie się zabicie procesu serwera. W tego typu sytuacjach sensowne będzie zainstalowanie na tym samym komputerze oddzielnej instancji Firebird do obsługi baz produkcyjnych, i oddzielnych instancji do testowania.

Na »tej stronie« internetowej zamieszczone są praktyczne wskazówki, jak zainstalować kilka instancji Firebird 2.1 w systemie operacyjnym Ubuntu.

2011-02-22

Firebird 2.5 Classic/Superclassic w Linux

UWAGA! Odkryto, że Firebird 2.5 Classic może nie działać poprawnie w systemie Linux, jeżeli używany jest z biblioteką glibc 2.5. Jeżeli w systemie jest biblioteka glibc 2.7, Firebird działa poprawnie. Obecnie jeszcze nie wiadomo, czy biblioteka glibc 2.6 również sprawia problemy.

Jeżeli wersja biblioteki glibc jest niższa niż 2.7, to należy ją zaktualizować, zanim zostanie użyty Firebird 2.5 Classic lub Superclassic.

Starsze wersje tej biblioteki zawierają błąd w obsłudze mechanizmu AST.

2011-02-19

Database .NET 4.2

W tej wersji programu Database .NET, w stosunku do poprzedniej wersji, zaimplementowane zostało wiele nowych funkcji, usprawnień, a także poprawione zostały błędy. Wśród nowości w programie są między innymi:
  • Profiler SQL
  • Tryb przenośmy (portable mode)
  • Opcje edytora
  • Automatyczne sprawdzanie, czy jest nowsza wersja programu
Pełna lista zmian i usprawnień jest »tutaj«.

Program nie wymaga instalowania. Wystarczy go pobrać i używać. Działa we wszystkich wersjach Windows (x86/x64). Do celów niekomercyjnych program może być używany bezpłatnie.

2011-02-17

Firebird działa nienormalnie wolno? Być może to wina Windows.

Firebird dostępny jest dla różnych systemów operacyjnych. Standardowo są to Windows, Linux i MacOSX — w wersjach 32 i 64 bitowych. Teoretycznie zmiana systemu 32-bitowego na 64-bitowy powinna zwiększyć wydajność Firebird, a nie pogarszać ją. Jeżeli po przejściu na 64-bitową wersję Windows zauważysz, że Firebird nagle zacznie zajmować całą dostępną pamięć RAM, a wydajność systemu jest absurdalnie niska, najpierw oczywiście upewnij się, że przyczyną nie jest nadmierna liczba połączeń z bazami lub niepoprawna wartość któregoś z parametrów konfiguracyjnych serwera, na przykład szalenie wielka liczba buforów.

Jeżeli nie możesz znaleźć żadnego rozsądnego powodu tak wolnego działania systemu, a Menadżer zadań wskazuje, że Firebird zajmuje 99% pamięci RAM, to sprawdź to ponownie w programie Process Explorer. Sprawdź, jak dużo RAM system operacyjny przeznacza na pamięć podręczną (OS Cache). Jeżeli stwierdzisz, że ta wielkość jest nienormalnie wielka (zajmuje całą pamięć RAM), to zainteresuj się »tym artykułem«.

FireAlarm

FireAlarm to program do monitorowania wydajności oraz dostępności serwera Firebird. Program napisany jest w języku Java i jest dostępny na zasadach Open Source.

»Tutaj« dostępny jest przewodnik po FireAlarm API. Pokazuje on, jak łatwo można zarejestrować bazę danych w programie oraz jak można dodać i konfigurować alerty.

Database Workbench 4.1.1

Database Workbench to program do zarządzania różnymi bazami danych. Potrafi współpracować z Firebird, InterBase, MS SQL Server, Oracle, MySQL, Sybase SQL Anywhere i Nexus DB.

W wersji 4.1.1 poprawiono błędy zauważone w wersji 4.1. Szczegółowe informacje na ten temat są »tutaj«.

Program dostępny jest w dwóch edycjach:
  1. Database Workbench Pro — pełna wersja programu;
  2. Database Workbench Lite — edycja darmowa, obsługująca tylko jedną bazę danych (obecnie Firebird, InterBase lub MySQL), oferująca użytkownikowi tylko podstawowe funkcje.

2011-02-10

Atrybut bazy danych "Forced Writes"

Jak wiadomo, aby używać Firebird, nie trzeba go jakoś specjalnie konfigurować po zainstalowaniu. Zaawansowani użytkownicy mogą wpływać na działanie serwera modyfikując jego plik konfiguracyjny. Zmiany w pliku konfiguracyjnym mają wpływ na wszystkich użytkowników korzystających z tego serwera. Istnieją również parametry zależne od bazy danych. Jedną z takich cech bazy danych jest atrybut baz danych Forced Writes. Jeżeli jest ustawiony, wszelkie zmiany w bazie danych są natychmiast zapisywane na dysk. W takim trybie każda zmiana zawartości bazy danych powoduje, że Firebird wymusza natychmiastowe zapisanie zmienionej zawartości na dysk. Takie pomijanie standardowych mechanizmów buforowania operacji zapisu na dysk przez system operacyjny powoduje wprawdzie wolniejsze działanie Firebird, ale za to prawdopodobieństwo uszkodzenia bazy danych jest zredukowane do minimum.

Okazuje się jednak, że nie jest to takie proste i oczywiste. Począwszy od Firebird 1.0, ten atrybut jest domyślnie ustawiony w Windows. Dlaczego tylko w Windows? Dlatego, że system Linux zapisuje dane na dysk najszybciej, jak tylko można. Natomiast Windows zapisuje dane na dysk wtedy, gdy musi. Jeżeli Firebird pracuje bez przerwy, to może się okazać, że w Windows niektóre dane nie były zapisywane na dysk przez wiele godzin lub nawet przez wiele dni. Aby zapobiec takim sytuacjom, w Firebird 1.5 wprowadzono dwa dodatkowe parametry konfiguracyjne serwera:
  1. MaxUnflushedWrites oraz 
  2. MaxUnflushedWriteTime
Mają one znaczenie tylko w przypadku baz z wyłączonym atrybutem Forced Writes. W systemie operacyjnym Windows pierwszy parametr domyślnie ma wartość 100. Informuje on, co ile zmian danych Firebird ma wymusić zapisanie ich na dysku. Drugi parametr w Windows domyślnie ma wartość 5. Informuje on, ile sekund zmienione lub nowe dane mogą pozostać nie zapisane na dysk. Po upłynięciu tego czasu Firebird wymusza zapisanie ich na dysku. W innych systemach operacyjnych oba parametry domyślnie są nieaktywne, ponieważ analogiczne działanie zapewniają te systemy operacyjne.

Podczas prac nad nowymi wersjami Firebird odkryto, że w systemie Linux atrybut Forced Writes był ignorowany. Nawet jeżeli był ustawiony, nowe i zmienione dane i tak były buforowane przez system operacyjny. Błąd ten został naprawiony w Firebird 2.1 (oraz w Firebird 2.0.4).

Jak już napisałem, w systemie Windows nowe lub zmienione dane mogą pozostać w pamięci stosunkowo długo, zanim zostaną zapisane na dysk. Dlatego większość autorów rekomenduje, aby w tym systemie atrybut Forced Writes zawsze był ustawiony. Dzięki temu Firebird wymusi zapisanie zmian na dysku. Ewentualne zagrożenia, wynikające z nieustawienia tego atrybutu, dobrze zostały opisane w blogu Sinatica. Jako zagrożenia autor wymienia:
  • utratę zasilania przez komputer, na którym działa Firebird
  • problemy ze sprzętem
  • problemy z systemem operacyjnym
  • problemy z Firebird
Każde z tych zagrożeń może doprowadzić do uszkodzenia bazy danych. Zastanówmy się chwilę nad tymi zagrożeniami.

Jeżeli niespodziewanie komputer utraci zasilanie, to oczywistym jest, że pliki zapisywane przez działające w tym czasie programy mogą być uszkodzone (niekompletne). Nie inaczej jest w przypadku serwera Firebird. Można temu zaradzić zasilając komputer przez sprawny zasilacz awaryjny (UPS).

Moim zdaniem pozostałe zagrożenia w wielu przypadkach nie są wystarczającym powodem do ustawiania atrybutu Forced Writes (wolniejsze działanie Firebird). Problemy ze sprzętem mogą się oczywiście zdarzyć. W takim przypadku istnieje ryzyko uszkodzenia bazy danych. Jako serwer zazwyczaj stosuje się markowe komputery. Nie eliminuje to możliwości awarii sprzętu, ale prawdopodobieństwo takiego zdarzenia jest, moim zdaniem, znikome.

Problemy z systemem operacyjnym zdarzają się. Jednak na serwerze na ogół nie uruchamiamy co chwilę jakichś programów — nie pracujemy w taki sposób, jak na stacjach roboczych. Uważam, że prawdopodobieństwo awarii systemu operacyjnego, prowadzącej do uszkodzenia bazy danych, jest znikome.

Problemy z Firebird oczywiście mogą się zdarzyć. Jak wiadomo, programy bezbłędne nie istnieją. Używam Firebird począwszy od wersji 1.5. Nie przypominam sobie żadnej awarii Firebird. Wiem, że takie się zdarzają, ale — moim zdaniem — prawdopodobieństwo ich wystąpienia jest znikome.

Uważam, że jeżeli Firebird działa na stacji roboczej, to lepiej jest ustawić atrybut Forced Writes w bazach danych. Jeżeli jednak Firebird działa na dedykowanym serwerze, zasilanym przez zasilacz awaryjny, to — moim zdaniem — można w miarę bezpiecznie wyłączyć ten atrybut. Zadziałają wtedy opisane wyżej parametry MaxUnflushedWrites i MaxUnflushedWriteTime. Kosztem minimalnie większego ryzyka uszkodzenia bazy danych zyskujemy większą wydajność serwera.

Warto jeszcze zwrócić uwagę na trzy ważne elementy. Po pierwsze, bez względu na wartość atrybutu Forced Writes należy pamiętać o regularnym wykonywaniu kopii bazy danych. Jakakolwiek będzie wartość tego atrybutu, i tak może się zdarzyć, że baza danych ulegnie uszkodzeniu. Wtedy jedynym ratunkiem może być odtworzenie jej na podstawie wykonanej wcześniej kopii.

Po drugie, decyzję o ewentualnym wyłączeniu atrybutu Forced Writes należy przeanalizować uwzględniając specyfikę danego zastosowania. Jeżeli Firebird działa wystarczająco wydajnie, to lepiej zostawić ten atrybut ustawiony. Zmniejszamy w ten sposób ryzyko uszkodzenia bazy danych. W niektórych zastosowaniach konieczność odtwarzania bazy danych na podstawie jej kopii, a następnie ponowne wprowadzenie wszystkich danych lub modyfikacji, które były zrealizowane po wykonaniu tej kopii bazy danych, sprawiałoby duży kłopot. W takim przypadku również lepiej zostawić atrybut Forced Writes ustawiony.

Po trzecie, jeżeli jesteś programistą, najpierw zabierz się za optymalizację zapytań oraz pozostałych działań na bazie danych. Doświadczenie pokazuje, że tym sposobem można uzyskać przyspieszenie działań wielokrotnie większe, niż wyłączenie atrybutu Forced Writes.

Jeżeli plik bazy danych ulegnie uszkodzeniu, pozostaje odbudować bazę danych na podstawie ostatnio wykonanej kopii. Następnie trzeba od nowa wprowadzić brakujące dane lub modyfikacje. Możemy również próbować odzyskać dane z uszkodzonej bazy danych. Nie ma gwarancji, że z uszkodzonej bazy da się odzyskać dane. Dlatego pamiętajmy o regularnym wykonywaniu kopii bazy danych!

2011-02-07

Firebird i Debian 6.0

Dostępna jest nowa wersja systemu operacyjnego Debian. W wersji 6.0 Squeeze standardowo jest dostępny Firebird 2.1.3. Na tej stronie dostępny jest artykuł zawierający szczegółowe instrukcje instalowania Firebird 2.5 w tym systemie.

2011-02-06

The Firebird Book

Jedną z zalet serwera Firebird jest to, że można pobrać z Internetu program instalujący, łatwo go zainstalować, a żeby zacząć z niego korzystać, nie trzeba być ekspertem. Jednak, aby w pełni wykorzystać wszystkie jego zalety, warto go lepiej poznać. Jednym z najlepszych źródeł informacji o serwerze Firebird jest książka napisana przez Helen Borrie.

The Firebird Book: a Reference for Database Developers została opublikowana w 2004 roku. Opisywała możliwości Firebird 1.0 oraz Firebird 1.5. Gdy powstały Firebird 2.0 i nieco później Firebird 2.1, Helen Borrie dodatek do książki, dostępny w formacie PDF.

Przez ostatnie 12 miesięcy Helen Borrie intensywnie pracowała nad opracowaniem The Firebird Book (Second Edition). To nowe wydanie początkowo będzie dystrybuowane w formacie elektronicznym (PDF, ePub, itp.). Książka jeszcze nie jest gotowa. Gotowa część rozdziałów jest dostępna we właśnie wydanym IBPhoenix Developer DVD.

2011-02-04

Firebird 2.1.4 RC1

Zespół twórców Firebird ogłosił, że Firebird 2.1.4 Release Candidate 1 przeszedł wszystkie wewnętrzne testy i jest dostępny do zewnętrznych testów. Dostępne są wersje dla systemów operacyjnych Windows, Linux i MacOS-X — zarówno 32. jak i 64-bitowe.

Lista poprawionych błędów jest »tutaj«.