Połączenie programu DatabaseSpy z bazą danych SQL Azure w chmurze

W czerwcu, podczas konferencji Tech-Ed w Nowym Orleanie, omówiono wskazówki i techniki ułatwiające wdrożenie bazy danych SQL Azure, opartej na chmurze, do środowisk produkcyjnych. SQL Azure, zbudowany w oparciu o technologie Microsoft SQL Server, został zaprojektowany jako wysoce dostępna i skalowalna usługa baz danych, hostowana przez Microsoft w chmurze. Programiści wdrażający bazy danych w SQL Azure nie muszą instalować, konfigurować, aktualizować ani zarządzać żadnym oprogramowaniem baz danych relacyjnych – muszą jedynie zdefiniować strukturę i zawartość własnej bazy danych. Automatyczna redundancja i odporność na awarie są wbudowane, a nie jest wymagana żadna administracja sprzętowa.

Można skonfigurować ręczne połączenie, wykorzystując składnię SQL Server i typy danych, aby połączyć programy DatabaseSpy oraz inne narzędzia firmy Altova z bazami danych SQL Azure, umożliwiając wykonywanie standardowych zadań związanych z tworzeniem i utrzymaniem baz danych. W tym wpisie na blogu pokazano, jak połączyć się z bazą danych SQL Azure za pomocą narzędzia DatabaseSpy, oraz przedstawiono kilka typowych operacji, które można wykonać podczas migracji istniejącej bazy danych do chmury. Aby samodzielnie powtórzyć te kroki, potrzebne będzie konto SQL Azure lub login i hasło utworzone przez użytkownika posiadającego konto SQL Azure. Aby uzyskać więcej informacji na temat zakładania konta SQL Azure, odwiedź stronę Microsoft Strona główna SQL Azure. Będzie również konieczna instalacja komponentu SQL Server Native Client 10.0 (lub nowszej wersji). Baza danych SQL Azure nie działa dokładnie tak samo jak lokalna baza danych SQL Server, dlatego nie możemy użyć kreatora połączenia z SQL Server firmy Altova. Zamiast tego, wykorzystamy połączenie ODBC.

Nie przedstawimy tutaj wszystkich szczegółów procesu tworzenia nowego ciągu połączenia. Można wkleić istniejący ciąg połączenia do okna dialogowego, które zostało pokazane powyżej.

Po pierwszym połączeniu z SQL Azure, plik projektu DatabaseSpy umożliwia zapisanie wszystkich ustawień połączenia, a także często używanych skryptów SQL, plików projektów baz danych oraz wyników porównań baz danych w jednym, wygodnym miejscu, co pozwala na ich późniejsze odzyskanie. Zrzut ekranu poniżej przedstawia nowy projekt DatabaseSpy, w którym jednocześnie połączono dwie bazy danych: Sakila w MySQL oraz Sakila w chmurze, w SQL Azure.

Microsoft udostępnia szereg narzędzi konwersji, które pomagają użytkownikom przenieść istniejące bazy danych na platformę SQL Azure. Użyliśmy narzędzia Microsoft SQL Server Migration Assistant for MySQL do przekonwertowania naszej lokalnej bazy danych MySQL Sakila (przykładowa baza) na nasze konto SQL Azure. Narzędzie DatabaseSpy umożliwia użytkownikom jednoczesne łączenie się z wieloma bazami danych, nawet z bazami danych różnych typów. Funkcja porównywania baz danych w narzędziu DatabaseSpy sprawia, że jest to idealne narzędzie do weryfikacji wyników konwersji bazy Sakila. Najpierw otworzymy narzędzie do porównywania schematów baz danych i wybierzemy kilka tabel z bazy danych MySQL, które zostaną wyświetlone po lewej stronie porównania.

Po wybraniu odpowiednich tabel z wersji SQL Azure, tabele te otwierają się w oknie porównywania schematów baz danych.

Po kliknięciu zielonego przycisku "Porównaj" znajdującego się w lewym górnym rogu okna, program DatabaseSpy porównuje struktury baz danych, podkreśla różnice i generuje podsumowanie w oknie komunikatów.

Niektóre różnice wynikają z różnic w definicjach typów danych między bazami danych. Na przykład, typ "unsigned small int" w MySQL nie ma dokładnego odpowiednika w SQL Server, dlatego narzędzie konwersji zastąpiło typ "int" dla kolumny "film_id" w tabeli "film". Ponadto, typ danych "rok" przypisany do kolumny "release_year" w MySQL został przekonwertowany na "smallint" w SQL Azure. Uważam, że to sprawi, że wersja bazy danych w SQL Azure będzie bardziej kompatybilna z przyszłymi wersjami, ponieważ będzie mogła przechowywać informacje o filmach wydanych do roku 32 767, w przeciwieństwie do 2155, co jest maksymalną wartością typu danych "rok" w MySQL! Możemy porównać dane zawarte w obu bazach danych, wybierając odpowiednią opcję w menu kontekstowym, które pojawia się po kliknięciu prawym przyciskiem myszy, co spowoduje otwarcie wybranych tabel w nowym oknie porównywania danych.

Analiza porównawcza danych pokazuje, że zawartość tabel nie jest identyczna.

Po otwarciu okna z wynikami, widzimy, że kolumna z opisami nie została poprawnie przeniesiona.

Spoglądając na okno porównania schematów baz danych, widzimy, że długość kolumny "description" została ustawiona na zero. To wyjaśnia czerwone strzałki, które wskazują od kolumny "description" w MySQL do kolumny "description" w SQL Azure w oknie wyników. Nie można skopiować żadnego tekstu do kolumny, której zdefiniowana długość wynosi zero. Zamiast tego, otwórzmy wersję tabeli "film" w SQL Azure w nowym oknie projektowania.

Możemy zwiększyć rozmiar pola opisu w oknie właściwości i uruchomić skrypt, który wprowadzi tę zmianę.

Następnie, po ponownym porównaniu danych, okazało się, że dane zostały przekonwertowane, ale wcześniej zdefiniowana długość pola, wynosząca zero, spowodowała, że dane stały się niewidoczne.

Problemy z opóźnieniami Można użyć narzędzia DatabaseSpy do analizy problemów związanych z opóźnieniami między bazą danych w chmurze a lokalną kopią. Z porównania danych przedstawionych powyżej wynika, że tabele filmów w obu bazach danych zawierają 1000 identycznych wierszy. Możemy wielokrotnie wykonywać zapytania SELECT, aby pobrać dane z SQL Azure i z lokalnej bazy danych MySQL, mierząc czas wykonania. Okno komunikatu edytora SQL w DatabaseSpy wyświetla czas wykonania.

Wykonanie powyższego zapytania SELECT pięć razy z rzędu w wersji SQL Azure bazy danych sakila dało wyniki w zakresie od 60,632 do 63,851 sekundy. Wykonanie tego samego zapytania SELECT dla tej samej tabeli filmów w lokalnej bazie danych MySQL dało następujący wynik:

Powtórzenie testu dla lokalnej wersji dało podobne wyniki. Dla programistów oznacza to, że aplikacje oparte na bazach danych prawdopodobnie będą wymagały uwzględnienia opóźnień w miarę przenoszenia danych do chmury. Wypróbuj własne połączenie z SQL Azure, korzystając z bezpłatnej wersji próbnej programu Altova DatabaseSpy.