Firebird – cyfrowe rozdwojenie jaźni

Głupia sprawa.

Firebird wydaje się być całkiem sprawnie rozwijanym projektem, na dodatek o całkiem niezłej opinii, ale jak do tej pory nie miałem konieczności, czy to woli, korzystania z niego. Konieczność nadeszła wraz z dniem, gdy zapukali do mnie uśmiechnięci ludzie z ofertą nie do odrzucenia – ‘Pan nam zrobi serwer, co?’.

Serwer oprócz kilku standardowych funkcji ma posłużyć jako centralna przechowalnia baz danych dla pewnego programu. Dotychczas każdy z użytkowników uruchamiał na swoim komputerze serwer Firebirda i program się z nim łączył, tworzył bazę, itp. ‘Ich’ Windowsy posiadały serwer baz danych w wersji 2.0.4, nowo postawiony Debian Lenny w repozytoriach również posiada wersję 2.0.4, zatem niemal wymarzona sytuacja dla wyemigrowania baz z Windowsa (ze wszystkich komputerów) do Linuksa.

O naiwny amatorze. Zawiodły niemal wszystkiego metody. Skopiowanie plików *.fdb z Windowsa i wrzucenie ich na Linuksa, próba rozpoznania ich przez linuksowy serwer Firebirda? Nic z tego. Zrzucenie zawartości bazy do pliku, ‘wciągnięcie’ ich do bazy na centralce? Brak oprogramowania (niewiedza?). Światełko w tunelu pojawiło się po zainstalowaniu programu FlameRobin. Odczyt baz lokalnie, skopiowanie jej na serwer zdalny? Nie ma takiej możliwości. Przeciąganie, upuszczanie – to bez sensu.

Krok po kroku udało się rzeczonemu amatorowi dojść do tego, że należy na Windowsie wykonać backup wybranej bazy danych, następnie przy wykorzystaniu tej kopii na Linuksie stworzyć nową bazę i wczytać zawartość. Nie będę może rozpisywał się nad technikalami (te można odczytać na tej stronie). Jednak okazało się, że nieźle wyglądający program FlameRobin nie potrafi, bądź też nie może obejść wymagań bazy i nie da się takiej migracji kopii bezpieczeństwa na serwer wykonać z pliku zapisanego na lokalnym komputerze. Backup musi zostać przeniesiony na Linuksa i dopiero stamtąd przywracany do użytku.

Celem stało się stworzenie prostego narzędzia/procedury przenoszenia lokalnych baz na serwer. Prostego w sensie stopnia skomplikowania przystępnego dla zwykłej pani Uli, dla której wpisywanie ścieżek dostępu dla baz danych (specyfika Firebirda) to przeszkoda nie do pokonania. Gdyby nie ergonomia Windowsa XP, sprawa mogłaby być banalnie prosta – zgodnie z przyzwyczajeniami z Thunara, tworzę nową akcję ‘wyślij na serwer’ pod prawym przyciskiem myszy. Po wybraniu pliku z rozszerzeniem .fdb, akcja odpala skrypt który robi z lokalnej bazy kopię bezpieczeństwa, wysyła ją na linuksowy serwer, a ten zajmuje się resztą.

Z tego tego sprytnie uknutego planu mogłem wykorzystać tylko ostatnią jego część – ‘linuksowy serwer, a ten zajmuje się resztą’. Nie posiadam w słowniku kulturalnych obelg potrafiących opisać frustrację i niemoc przy próbie wykorzystania Windowsa XP do stworzenia akcji konwersji/wysłania. Zabrakło mi do tego sił, czasu i najpewniej wiedzy. Ale w końcu to stary system.

Koniec końców panie musiały się nauczyć odczytywać ściągę, w której opisałem sposób otworzenia bazy w FlameRobinie, zrobienia kopii bezpieczeństwa, wrzucenia jej przez otoczenie sieciowe do katalogu w Linuksie, który cyklicznie sprawdza ten katalog i pojawiające się tam bazy wdraża do Firebirda w wersji linuksowej.

Właśnie to tytułowe rozdwojenie jaźni najbardziej mnie zadziwiło. Serwer Firebirda w wersji windowsowej i linuksowej generuje dwa różne pliki bazy. Dlaczego, jaki w tym cel, zamysł, przesłanie? Chyba nigdy się nie dowiem.
 

6 komentarzy

  1. Witam,

    Zaciekawiony tematem Twojego postu przeczytałem go od deski do deski i… jestem wielce zdziwiony Twoimi problemami, a piszę to z pozycji użytkownika firebirda, programisty aplikacji działających na windowsach i korzystających z baz danych na firebirdzie – co ważne – działających czasem na windowsie a czasem na linuksie, przy czym przenoszenie plików .fdb odbywa się bez jakichkolwiek modyfikacji – ot zwykłe copy windows -> linuks lub odwrotnie i od dobrych kilku lat działa to bez najmniejszego zająknięcie (zaczynałem od wersji firebirda 1.5), a bazy danych są w tej chwili niemałe bo liczą po około stokilkadziesiąt megabajtów danych (kilkaset tysięcy różnego rodzaju rekordów w każdej z baz). Dlatego jeszcze raz podkreślam że bardzo mnie zdziwiły opisane przez Ciebie problemy. Na osłodę i gdybyś miał ochotę czy wręcz potrzebę mogę polecić kilka narzędzi pomocnych mi w codziennej pracy z firebirdem.

    Pozdrawiam 🙂

  2. Sam jestem nie mniej zdziwiony. Próbowałem pliki bazy kopiować i przez USB i przez sieć – nic, próba otworzenia jej przez isql-fb cały czas kończyła się komunikatem, że plik ma błędną strukturę. Przypuszczam, że to może być wina wiekowego programu który wysyłał dane do bazy, ale przecież to serwer Firebirda zajmuje się strukturą plików/zapisem danych – skoro zatem w obu przypadkach jest w tej samej wersji to czemu by miał być błąd… Dziwne, jeżeli kiedyś ten problem rozwiążę, ułatwię ludziom życie, póki co – trochę podchodów muszą najpierw poczynić.

    Na pocieszenie pozostaje fakt, że nie jestem osamotniony z tym specyficznym błędem – inni się też na niego natknęli (vide link do strony którą zacytowałem w tekście).

  3. Czy masz Linuksa 64 bitowego ? Może format bazy jest trochę inny między 32 i 64 bitowymi maszynami, sami miałem tak z RRDTools

  4. @Xani

    Tak, Linux jest w wersji 64bitowej. Może i ma to znaczenie, jednak wobec faktów (okazało się, że niektóre bazy odczytują się normalnie) skłaniam się coraz bardziej do tłumaczenia, że problemem są najstarsze bazy, które były upgrade’owane z kolejnych wersji Firebirda.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Post comment

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.