Mapowanie danych dla obiektów binarnych – część 2

Obiekty binarne – BLOB-y – mogą być trudne w zarządzaniu w bazach danych. W poprzednim artykule opisaliśmy sposób mapowania danych w MapForce, który umożliwia wstawianie obiektów binarnych do bazy danych wraz z generowanymi metadanymi, które pozwalają na późniejszą identyfikację BLOB-ów. Kolejnym wyzwaniem w mapowaniu danych binarnych jest wyodrębnienie danych binarnych i zapisanie ich w formie, która jest zrozumiała i wierna oryginalnym danym.

Spójrzmy, jak to się robi.

Wbudowana funkcja MapForce o nazwie "write-binary-file" służy do wyodrębniania danych typu BLOB z bazy danych i zapisywania ich do plików. Rozbudujemy przykład w dokumentacji online MapForce, aby stworzyć uzupełnienie wcześniejszego artykułu. Nasza zaktualizowana konfiguracja wykorzystuje parametry przekazywane w czasie działania, aby wyodrębnić jeden lub więcej obiektów binarnych z bazy danych.

Przykładowe zastosowanie oryginalnego wpisu dotyczyło bazy danych SQLite, która służyła do śledzenia różnych plików binarnych zawierających zasoby związane z produktami, wykorzystywanych przez dział marketingu. Dane binarne mogą obejmować pliki graficzne z logo, pliki PDF zawierające specyfikacje produktów, zrzuty ekranu prezentujące produkt w działaniu, zdjęcia, pliki wideo itp. Nasza tabela bazy danych zawiera metadane dotyczące produktu, typu zasobu oraz oryginalnej nazwy każdego pliku.

Rozpoczynamy mapowanie danych obiektów binarnych w celu ich wyodrębnienia, importując bazę danych do nowej konfiguracji mapowania. Tym razem, zamiast wybierać tabelę do mapowania, utworzymy zapytanie SQL SELECT z parametrami, które pozwolą na filtrowanie wyników na podstawie pól metadanych dotyczących typu produktu i zasobu. Instrukcja SELECT zwróci jeden lub więcej obiektów BLOB oraz ich oryginalne nazwy plików.

Następnie klikamy polecenie SELECT w panelu mapowania, aby wyświetlić parametry, które można zmapować

Teraz każdy pojedynczy parametr i wynik jest dostępny

Korzystając z opcji "Wstaw pole wejściowe" dostępnej w głównym menu "Wstaw" lub za pomocą odpowiedniego przycisku na pasku narzędzi, możemy wstawić specjalne pole do testowania podczas projektowania. Później, podczas automatycznego wykonywania, możemy wprowadzić nowe wartości parametrów, aby zastąpić wartości domyślne.

Można zdefiniować wartość domyślną w oknie dialogowym definicji pola, ale ja preferuję określać ją jako stałą tekstową, jak pokazano powyżej. Wartość domyślna jest widoczna bez konieczności otwierania okna dialogowego, a zmiana jej wartości w celach testowych jest szybsza.

Będziemy postępować zgodnie z instrukcją obsługi MapForce Przykład mapowania danych dla obiektów binarnych aby utworzyć mapowanie dla wyniku zapytania SELECT. Poniżej znajduje się kompletne mapowanie:

Funkcja "write-binary-file" (zapis do pliku binarnego), wyróżniona w dokumentacji, zapisuje zawartość obiektu binarnego z bazy danych do pliku, którego ścieżka jest podana jako argument.

Udoskonaliliśmy przykładowe odwzorowanie, wprowadzając dwa ulepszenia. W pierwotnym przykładzie użyto stałej wartości tekstowej jako nazwy pliku obiektu binarnego, natomiast my odwzorowaliśmy oryginalną nazwę pliku z bazy danych. Dodatkowo, dodaliśmy kolejny obiekt wejściowy o nazwie "userPath", który służy do połączenia ścieżki do folderu i nazwy pliku.

W tym momencie możemy przetestować konfigurację, klikając przycisk "Wyjście" znajdujący się na dole panelu projektowania mapowania. Program MapForce wykonuje zapytanie z wykorzystaniem parametrów zdefiniowanych w konfiguracji, a okno "Wyjście" się otwiera:

Pierwszy wynik to po prostu wiadomość, którą dołączyliśmy do funkcji zapisującej plik binarny. Kliknięcie ikony strzałki w prawo otwiera drugi wynik. Poniższy obrazek przedstawia wyświetlany obraz po kliknięciu przycisku "Otwórz za pomocą..." i wybraniu programu Windows Photo Viewer jako domyślnej aplikacji do otwierania plików .png.

Ścieżka dostępu do pliku, "C:\projects\objects", została podana jako dane wejściowe, a nazwa pliku, "diffdog_2021.png", została zapisana w bazie danych. Nazwa pliku wyświetlana w oknie podglądu, czyli "~mf95AE.png", to jedynie losowa nazwa używana do podglądu. W menu "Wyjście" znajduje się opcja trwałego zapisania pliku:

Możemy zmodyfikować parametry i przeprowadzić kolejne testy. Tym razem użyjemy znaku wieloznacznego SQLite dla parametru "zasób", aby dopasować go do dowolnej wartości w bazie danych:

Po kliknięciu przycisku "Wyjście" tym razem, pobierane są liczne obiekty binarne:

Przeglądając wszystkie wyniki wyszukiwania plików binarnych, widzimy jeden arkusz danych w formacie PDF, jeden zrzut ekranu jako obraz .png oraz jeden logo również jako plik .png

Automatyzacja mapowania danych dla obiektów binarnych

Aby rozszerzyć nasze wymagania dotyczące zastosowań, załóżmy, że musimy umożliwić każdemu członkowi zespołu dostęp do zasobów produktów z bazy danych na żądanie. Serwer MapForce wykonuje automatyczne transformacje danych w oparciu o zoptymalizowane mapowania danych, które zostały zaprojektowane w MapForce.

Można zainstalować jedną kopię serwera MapForce na serwerze sieciowym i udostępnić ją wielu użytkownikom. Następnie wystarczy zapisać mapowanie danych jako plik wykonywalny serwera MapForce (.mfx) z menu "Wyjście" w programie MapForce. Użyjemy nazwy pliku "extract-product-assets-from-DB.mfx".

Mapowanie danych można następnie uruchomić z linii poleceń przez dowolnego uwierzytelnionego użytkownika. Parametry dla komponentów wejściowych o nazwach "product", "asset" i "userPath", używane w mapowaniu, są przypisywane w czasie działania programu przez polecenie. Możemy nawet utworzyć przykładowe polecenie w pliku wsadowym, które użytkownicy mogą edytować i uruchamiać w razie potrzeby:

Byłoby to proste zadanie – dodać komentarze zawierające instrukcje dotyczące edycji, aby wypisać możliwe wartości dla każdego parametru.

Aby jeszcze bardziej zautomatyzować proces produkcji, mapowania MapForce można wdrożyć na serwerze FlowForce i uruchamiać w oparciu o różnorodne wyzwalacze. Aby rozpocząć własny projekt mapowania, konwersji i transformacji danych, pobierz bezpłatną wersję próbną, która zawiera samouczki, pomoc oraz wiele dodatkowych przykładów!