MapForce obsługuje operację łączenia baz danych SQL, gdy jest to odpowiednie narzędzie do danego zadania
Duże tabele baz danych mogą zawierać nawet miliony, a czasami setki milionów wierszy danych. Administratorzy baz danych i inne osoby odpowiedzialne za utrzymanie tak dużych zbiorów danych zawsze zwracają uwagę na czas wykonywania operacji ETL (ekstrakcja, transformacja i ładowanie), aktualizacji oraz innych zapytań SQL. Aby te operacje były bardziej wydajne, niektórzy – ale nie wszyscy – dostawcy oprogramowania bazodanowego zaimplementowali instrukcję SQL do łączenia danych, która pozwala na wstawianie lub aktualizację wierszy istniejącej tabeli jako pojedyncza, zbiorcza operacja, zamiast wymagać oddzielnych instrukcji dla każdego wiersza.
Altova MapForce automatycznie obsługuje mechanizm łączenia danych SQL, gdy jest on dostępny dla docelowej bazy danych. Przyjrzyjmy się przykładowi.

Wstawianie vs. Aktualizacja – jeśli
Poniższy obrazek ilustruje sposób mapowania danych z elementów pliku XML do tabeli bazy danych.

Domyślnie, MapForce generuje instrukcję SQL do wstawiania danych dla każdego elementu "Osoba" w pliku źródłowym, co jest odpowiednie do wypełniania wierszami nowej, pustej tabeli bazy danych. W innych sytuacjach, takich jak synchronizacja kopii zapasowej z aktualnym zestawem danych, instrukcje wstawiania nie są odpowiednie. MapForce umożliwia wygodne określenie poprawnej operacji SQL, która jest potrzebna dla każdego odwzorowania bazy danych.
Aby otworzyć okno dialogowe "Akcje dla tabeli bazy danych" w MapForce, po prostu kliknij ikonę "Akcja" obok docelowej tabeli bazy danych, czyli w tym przykładzie tabeli "Person". Zrzut ekranu poniżej ilustruje funkcję rozwijanego menu, która umożliwia zmianę instrukcji SQL "Insert" na "Update-If".

Aktualizacja – wymaga określenia warunku. W tym procesie mapowania chcemy aktualizować rekordy w bazie danych, jeśli dane źródłowe zawierają istniejący klucz główny. Dodatkowo, chcemy dodawać nowe wiersze, jeśli klucz główny w danych źródłowych nie istnieje jeszcze w bazie danych.
To powszechnie znane jako operacja aktualizacji warunkowej ("Update If...Insert Rest").
Okno dialogowe "Akcje dla tabeli bazy danych" umożliwia zdefiniowanie warunku, który ma być sprawdzany podczas aktualizacji, oraz określenie alternatywnej akcji, która zostanie wykonana, jeśli warunek ten nie zostanie spełniony. Poniżej przedstawiono kompletny zestaw akcji definiujących "Aktualizuj, jeśli... w przeciwnym razie wstaw":

Aktualizacja vs. Masowe scalanie
Dotychczas nie wspomnieliśmy nawet o dostawcy bazy danych, do której mapujemy dane w naszym projekcie. Dzieje się tak dlatego, że mapowanie jest definiowane w ten sam sposób dla wszystkich popularnych baz danych obsługiwanych przez MapForce. Nie musimy robić niczego innego, niezależnie od tego, czy docelowa baza danych obsługuje mechanizm łączenia (merge) czy nie.
Po kliknięciu zakładki "Wyjście MapForce" znajdującej się poniżej projektu mapowania bazy danych, MapForce generuje skrypt SQL dostosowany do konkretnego typu bazy danych. Następnie ten skrypt jest wyświetlany w oknie wyjściowym MapForce, aby można go było przejrzeć. Nie jest on automatycznie wykonywany.
Jeśli docelowa baza danych obsługuje instrukcję SQL MERGE, w skrypcie, w pobliżu początku, znajdziesz instrukcję MERGE.

Jeśli docelowa baza danych nie obsługuje polecenia SQL MERGE, zobaczysz oddzielne instrukcje UPDATE...WHERE dla każdego wiersza danych źródłowych.

Można uruchomić skrypt bezpośrednio w MapForce, wybierając opcję "Uruchom skrypt SQL" z menu "Wyjście" w MapForce. Alternatywnie, można zapisać mapowanie jako plik wykonywalny i zautomatyzować jego działanie w MapForce Server, podając nazwy plików wejściowych podczas uruchamiania.
Jeśli docelowa baza danych obsługuje funkcję SQL Merge, instrukcje merge zostaną wygenerowane niezależnie od tego, czy mapowanie jest wykonywane bezpośrednio przez MapForce, czy też automatycznie za pośrednictwem MapForce Server. MapForce 2017 obsługuje instrukcje SQL Merge dla baz danych SQL Server 2008 i nowszych, Oracle, IBM DB2 oraz Firebird.
Testy przeprowadzone w firmie Altova wskazują, że masowe wykonywanie polecenia SQL Merge za pomocą serwera MapForce może być nawet 15 razy bardziej wydajne niż dotychczas stosowane metody.*
*Uwaga: Informacja ta opiera się na wynikach testów przeprowadzonych przez firmę Altova i może się różnić w zależności od konkretnych konfiguracji i zastosowań
Kliknij tutaj, aby uzyskać więcej informacji na temat mapowania baz danych za pomocą MapForce, w tym kompletną listę baz danych obsługiwanych jako źródła lub cele mapowania danych. Możesz również kliknąć tutaj, aby pobrać bezpłatną, w pełni funkcjonalną wersję próbną na 30 dni. Pliki użyte do mapowania w tym wpisie na blogu są dostępne jako przykłady MapForce, a szczegółowe instrukcje dotyczące odtworzenia mapowania znajdują się w zintegrowanej pomocy MapForce.
- Wyniki wydajności oparte na wewnętrznych testach przeprowadzonych przez firmę Altova. Państwa wyniki mogą się różnić.