0xDBE Nie taki straszny jak go malują

0xDBE jest nowym narzędziem do zarządzania bazami danych stworzonym przez JetBrains. Znając R# oraz słysząc opinie o inych ich produktach można mieć nadzieję że będzie dobre. Jednak zamiast mieć nadzieję lepiej po prostu sprawdzić, a można to zrobić dzięki "Early Access Program". Skorzystał z niego Maciek Aniserowicz i wyraził się dość niepochlebnie. A więc postanowiłem sprawdzić to narzędzie sam. 

MySql pod Ubuntu

Pobrałem pakę, rozpakowałem uruchomiłem plik <folder>/bin/xbde.sh.
Na początek dostałem ekran z pytaniem o import ustawień – nic nie importowałem.
Import konfiguracji

Następnie zostało mi wyświetlone okno wyboru skórki. Okno które nie mieści się na ekranie (pomimo rozdzielczości 1600×900), przyciski kreatora widać dopiero po maksymalizacji okna, wybrałem motyw "Dracula". 
Wybór skórki
Na drugim ekranie wybór koloru liter i tła tutaj także "Dracula". Trzeci krok wybór preferowanego silnika DB i hasło do magazynu haseł. Przycisk "Start using 0xDBE" jest nie źle.
wybór Czcionek

Okienko DataSource and drivers, dodaję więc nowe źródło danych (MySql). W prawym panelu zostaje wyświetlony formularz do uzupełnienia danych serwera łudząco podobny do tego w Eclipse Database Development.
Źródła danych i sterowniki
Jeżeli na serwerze MySQL nie ma jeszcze żadnej bazy, a co za tym idzie użytkowników innych niż root to można nie podać nazwy bazy danych.

Na ekranie jest także troszeczkę mało widoczny komunikat o braku sterownika. Po kliknięciu w link download zostaje on pobrany.
Formularz zawiera też przycisk "Test connection".
Po kliknięciu OK przeniosło mnie do ekranu podzielonego na dwie części drzewko po lewej pozwalające przeglądać obiety we wszystkich bazach na serwerze do których użytkownik ma dostęp. Jest to okno które w każdym następnym uruchomieniu środowiska będzie uruchamiane domyślnie.

Na start założyłem tabelę z użytkownikami. Już tutaj działa podpowiadanie składni.
Podopowiadanie składni
Co ciekawe zaraz po uruchomieniu zapytania zakładającego tabelę Tabela ta znalazła się w mechanizmie podpowiadania, bez żadnego odświeżania.
Podpowiadanie składni 2

Koleną zaletą jest podpowiadanie nazw kolumn przed wpisaniem tabeli w bloku from jest feature którego bardzo mi brakuje w czystym Management Studio. Jestem ciekawy czy ta funkcjonalność nie spowoduje spadku wydajności przy większej bazie.
Podpowiadanie składni 3
Ostatnim testem MySql jest sprawdzenie czy z poziomu tego środowiska można uruchomić zapytanie zawierające średnik w literale – da się.

Sql Server Windows 

Pobrałem paczkę ze strony, zainstalowałem kreatorem.
Podobnie jak w przypadku Ubuntu zostałem poproszony o wybranie między importem a nową konfiguracją. Podobnie Jak poprzednio mam możliwość wyboru skórki tym razem okno się zmieściło na ekranie.

Przyszła więc pora aby podłączyć się do Sql Servera, do wyboru mam 2 sterowniki wybrałem ten od M$. Tak samo jak w przypadku MySQL dociągnąłem sterownik z poziomu komunikatu na dole okna. No i chciałem się podłączyć do jakiejś bazy i tu pierwsza ściana: sterownik jdbc od M$ nie wspiera połączeń do localDB. Dobra mogę bez tego żyć zainstalowałem lokalnie SQL Server Express i postanowiłem działać dalej.

Maciek Aniserowicz mówił o problemach z domenowym zalogowaniem się do serwera, potraktowałem to trochę jak wyzwanie i udało się, ale nie było łatwo.

Po pierwsze odpowiedni connectionstring/JDBC URL jak zwał tak zwał.

jdbc:sqlserver://localhost\sqlexpres:1433;databaseName=pusta;integratedSecurity=true

Należy dodać że w tym miejscu olewam wszystkie pola typu host/port/database, prawdopodobnie da się te pola fajnie skonfigurować ale nie dzisiaj.

Niestety to jeszcze za mało żeby móc pisać zapytania. Pierwszym problemem jest fakt iż javowy sterownik stworzony przez M$ nie wspiera Shared Memory, natomiast instancja SQL Servera domyślnie ma wyłączone inne protokoły. Postanowiłem uruchomić protokół TCP/IP aby to osiągnąć należy:

– Uruchomić SQL Server Configuration Manager 
– Wybrać z drzewa SQL Server Network configuration – TCP IP – klikąć prawym przyciskiem myszy i wybrać Enable
– Ponownie prawy przycisk – Properties – zakładka IPAddresses – znależć element z ip 127.0.0.1 i ustawić Enable na true
– Przewinąć na sam dół Wyczyścić TCP Dynamic ports ustawić TCP Port – ja ustawiłem na 1433 

Na koniec trzeba zrestartować usługę SQL Server. W tym momencie prawdopodobnie do serwera da się dostać przez autoryzację SQL-ową zmieniając tylko URL'a na coś takiego:

jdbc:sqlserver://localhost\sqlexpres:1433;user=MyUserName;password=*****;

Jednak dla autoryzacji domenowej należy się jeszcze trochę pomęczyć.

Po pierwsze należy pobrać sterownik ręcznie ze strony http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774 i rozpakować go gdzieś w rozsądnym miejscu.
W zarządzaniu sterownikami wyrzucić sterownik pobrany przez 0xDBE i wskazać ścieżkę do sterownika ze strony – znajduje on się w katalogu enu, istnieje szansa że ten krok można pominąć.
Zarządzanie sterownikami

Dodać do zmiennej środowiskowej "Path" ścieżkę do katalogu <Katalog sterowników>\enu\auth\x86. 
W ww katalogu znajduje się natywna dll'ka z którą sterownik javowy próbuje się komunikować. Co ciekawe istnieje też jego wersja 64bitowa jednak u mnie nie działa.

Po tej gimnastyce zrestartowałem 0xDBE i zaczęło działać. Cała grzebanina w googlu i zabawa zajęły mi jakieś 3,5 godziny (Maćku najwyrażniej za szybko się poddałeś), więc stwierdziłem że nie chce mi się już męczyć z alternatywnym sterownikiem jTds.

Coś prostrzego – Sqlite

Kliknąłem w zielony "Plus" w lewym górnym rogu "Data Source" – "Sqlite" – "Xerial", próbowałem wybrać ścieżkę do pliku ale kontrolka wyboru pliku nie pozwala wybrać pliku nieistniejącego więc trudno wpisałem ją z palca. Pobrałem brakujący sterownik, "Test connection" – działa. 

Podsumowanie

Wygląda na to że 0xDBE będzie bardzo fajnym uniwersalnym narzędziem do zarządzania bazami danych przez developerów. Może się okazać że jest najlepsze z pośród narzędzi jakich do tej pory używałem do zarządzania MySql-em i Sqlitem. Co do SqlServera chłopaki z JetBrains mają jeszcze sporo pracy przed sobą (przede wszystkim w kwestii ułatwienia konfiguracji).