Jestem pewien, że wielu z was ma / miała do czynienia z brzydką bazą danych. Wiesz, ta baza danych, która w ogóle nie jest znormalizowana, ta baza danych, w której musisz wykonać duże bolesne zapytanie, aby uzyskać najbardziej trywialne dane, ta baza danych, która jest w produkcji i nie możesz jej trochę zmienić ... wiesz , "ten".
Moje pytanie brzmi: jak sobie z tym poradzisz?
- Czy próbujesz utworzyć nową bazę danych?
- Poddajesz się i zostawiasz w spokoju?
- Jakiej rady możesz udzielić?
źródło
Słownik danych jest twoim przyjacielem. Wypróbuj również inżynierię wsteczną bazy danych za pomocą narzędzia do inżynierii wstecznej w Visio i buduj swój własny zestaw diagramów. Ponieważ inżynieria odwrotna jest interaktywna - budujesz diagramy - jest o wiele bardziej angażująca niż czytanie słownika danych. Aktywność tego procesu jest jego zaletą i uważam to za dość relaksujące.
Większość pracy, którą wykonuję, polega na hurtowni danych, gdzie przeszukiwanie schematów baz danych w systemie źródłowym jest czymś podstawowym. Robiłem takie rzeczy przy wielu okazjach i stwierdziłem, że działa naprawdę dobrze.
Visio pro nie jest tak drogi, a silnik modelowania Visio pozwala udostępniać model na wielu diagramach. Jako bonus możesz dodać brakujące klucze obce na diagramach, a na końcu otrzymasz przydatny zestaw dokumentacji dla systemu.
źródło
Oprócz pomysłów Billa Karwina proponuję rozmawiać z użytkownikami - czasami użytkownicy wiedzą całkiem sporo o tym, do czego służy ich baza danych, szczególnie jeśli robią z niej jakiekolwiek raporty.
źródło
Mam do czynienia z bardzo brzydkim oprogramowaniem dla dostawcy, które poza sugestiami nie mogę wiele zrobić, aby to zmienić. Zawsze staram się, aby wszystko się zmieniło, ale ponieważ jest to poza moją kontrolą, utknąłem w śmieciach.
Jedną z rzeczy, z których szybko zacząłem korzystać, ponieważ baza danych nie ma absolutnie żadnych relacji, jest ogólne zapytanie o nazwę schematu:
lub
Ponieważ niektóre tabele mają zbyt wiele źle nazwanych kolumn i zbyt wiele kolumn, aby je przejrzeć, aby znaleźć to, czego mógłbym użyć do utworzenia relacji między tabelami.
Wiem, że to niewiele pomaga w przeprojektowaniu części pytania, ale jest bardzo pomocne w zrozumieniu i rozszyfrowaniu złego schematu.
źródło
SchemaCrawler to moje narzędzie do wyszukiwania baz danych, które ma kilka funkcji, które ułatwiają eksplorację brzydkiej bazy danych. SchemaCrawler ma funkcję podobną do „grep”, która umożliwia wyszukiwanie tabel i kolumn za pomocą wyrażeń regularnych. Na przykład możesz wyszukać tabele i kolumny zawierające „KONTO” jako część ich nazwy i prawdopodobnie będą one w jakiś sposób powiązane.
SchemaCrawler ustala również relacje kluczy obcych, nawet jeśli nie ma kluczy obcych. Odbywa się to poprzez znajdowanie „słabych skojarzeń” przy użyciu popularnych konwencji nazewnictwa, takich jak tabele, w których nazwy są zwykle liczbą mnogą, ale nazwy kolumn nie są, a nazwy kolumn mogą mieć prefiks _ID. Możesz znaleźć pokrewne tabele, korzystając z tych wywnioskowanych relacji.
źródło
Zależy od tego, jak brzydki jest i od tego, ile masz kontroli nad projektem i co z nim współdziała. Przez lata musiałem wchodzić w interakcje z wieloma brzydkimi bazami danych w mojej obecnej pracy i oto jak sobie z nimi poradziłem:
Dane pracowników
Istnieje baza danych przechowująca dane pracowników. Jest to baza danych dostawców, więc nie mam nad nią kontroli. (Un?) Na szczęście nie mam bezpośredniego dostępu do tego. Dostaję zrzut DTS każdego ranka.
Najlepsze, co udało mi się poradzić, to napisanie skryptu, który będzie szorował dane wejściowe z porannego zrzutu (tak, że wybór słów był celowy) i zmigrowałem go do bardziej użytecznego formatu, i pracowałem z oczyszczonych danych.
Nawet gdybym mógł to zmienić, prawdopodobnie nie zrobiłbym tego - tylko dlatego, że istnieje wiele innych programów, które polegają na tym, że jest skonfigurowane tak, jak jest, i nie mogę wymusić zmiany w nich.
Dane szkoleniowe online
To był bałagan mojego własnego projektu. Zbudowałem go świeżo po studiach bez mentora, który by mi pomógł ... Od tego czasu trochę go naprawiam. Ponieważ kontroluję jedyny program, który uzyskuje dostęp do danych, uaktualniając części witryny, „aktualizuję” konfigurację bazy danych. Napiszę skrypt transformacji i przetestuję go energicznie na kopii, aby zapewnić, że wszystkie zmiany, które należy wprowadzić, zostaną wprowadzone.
To był długi proces, ale ładnie się rozwija.
Dane szkoleniowe w klasie
Mój projekt pilotażowy integrował dane z 3 różnych baz danych, wszystkie zaprojektowane nieco inaczej przez mojego poprzednika ... który był wychowawcą pielęgniarki, który wziął lekcje programowania lub dwie.
To był kolejny powolny proces. Ponieważ mam pełną kontrolę nad programami, które uzyskują dostęp do danych, zmieniłem je krok po kroku, podobnie jak dane szkoleniowe online.
Patrząc wstecz, byłby to najlepszy kandydat do rozpoczęcia czystego ... widok z tyłu zawsze wynosi 20/20.
Na końcu...
Nie wiem, jak to pomogło, i mogę rozwinąć więcej (do pewnego stopnia, legalna firma yada yada i wszystko inne). Ostateczna odpowiedź to „To zależy”.
źródło
Więc po przeczytaniu wszystkich twoich odpowiedzi, daję ci moje:
Najpierw szukam „Tabeli wzorcowej”, a następnie, za pomocą pióra i papieru, zaczynam mapować relacje z innymi tabelami, a następnie, jeśli jest jakiś kod aplikacji, na który mogę patrzeć, zaczynam robić surowe szkice dotyczące przepływu danych.
Po uzyskaniu ładnego obrazu na temat działania bazy danych zaczynam sprawdzać miejsca, w których można coś zmienić. to jest to!
Nie wiem dlaczego, ale wolę papier niż jakiekolwiek oprogramowanie do modelowania baz danych.
źródło
Ze względu na używanie go przez aplikację zewnętrzną nie można zmienić „interfejsu” bazy danych. Nie wiem, jakiego typu bazy danych używasz (oracle, mysql, mssql), ale widzę to jako jeden ze sposobów:
Widoki, procedury przechowywane ukryją modyfikacje (zmiany) wewnętrznych baz danych.
źródło
Poza odkryciem struktury bazy danych odkryłem, że ważne jest również przyjrzenie się jakości danych . Po zrozumieniu znaczenia każdej kolumny możesz poszukać miejsc, w których brakuje wielu wartości. Po zapoznaniu się z danymi możesz również sprawdzić, gdzie występują niespójności między wartościami w różnych kolumnach.
źródło
To zależy od sposobu interakcji. W przypadku scenariuszy użytkowania, w których wsadowe jest akceptowalne, dość często uważałem, że najbardziej opłacalne (pod względem czasu programowania, a tym samym kosztów dla klienta) jest wysyłanie danych do bardziej przyjaznej struktury i działanie przeciw temu.
źródło
Jeśli możesz podzielić problem na problemy, które możesz otoczyć mózgiem, możesz atakować je pojedynczo. Czasami sama wiedza o tym, że jest jeden stół, który nie jest tak naprawiony, może dać ci przyczółek do pracy. W ten sposób rozszerzasz swój „czysty punkt”, aby objąć większą część bazy danych w porcjach.
źródło
Jeśli masz Visio (część pakietu Microsoft Office), możesz wypróbować funkcję inżynierii wstecznej . To nie jest ładne, ale przynajmniej da ci początek (za ułamek ceny „prawdziwych” narzędzi, takich jak Rational Rose).
źródło
Schema Spy to naprawdę miłe narzędzie do generowania ERD.
źródło
Bill udzielił doskonałej odpowiedzi. Dodałbym, że zaloguję się do interfejsu użytkownika jako użytkownik testowy i spróbuję zrozumieć dokładnie, co użytkownicy robią z danymi. Pomoże ci zrozumieć, dlaczego niektóre z przechowywanych procesów lub projektu. Zrozumienie, co dane oznaczają i są wykorzystywane, ma kluczowe znaczenie dla zrozumienia bazy danych.
Jeśli baza danych dotyczy funkcji biznesowej lub przedmiotu, którego na ogół nie znasz (powiedzmy, że zajmuje się planowaniem lotów, a wcześniej pracowałeś tylko nad aplikacjami finansowymi), poproś użytkowników o lekturę materiałów na ten temat lub przejdź do biblioteki sam lub przeszukaj Internet na dany temat. Zapytaj użytkowników, czy istnieją problemy prawne lub regulacyjne, o których musisz wiedzieć. Ponownie niektóre z tych tematów mogą wyjaśnić, co wydaje się dziwnymi wyborami projektowymi.
źródło
Jeśli jest to baza danych dostawcy (a widziałem kilka naprawdę złych), wszystko, co możesz zrobić, to złożyć skargę do dostawcy.
W przypadku aplikacji, które są wbudowane w domu, zwykle wymaga to trochę edukacji dla programistów i można zacząć zmieniać schemat, aby poprawić wydajność. To zajmuje dużo czasu i zwykle jest to powolny proces.
Z mojego doświadczenia wynika, że tworzenie nowej bazy danych nie jest tak naprawdę opcją, ponieważ przenoszenie setek GB lub TB danych nie jest wcale tak wykonalne.
Pozostawienie go w spokoju również zwykle nie jest opcją. Gdy ilość danych w bazie danych rośnie, wydajność będzie się pogarszać (przyznane przez czas, kiedy widzę problemy, zwykle są cholernie złe). W końcu użytkownicy nie będą mogli korzystać z aplikacji, ponieważ wydajność jest tak niska.
źródło
Ach ... brzydka baza danych, im większe przedsiębiorstwo, tym więcej starszych baz danych znajdziemy.
Nie zawsze działa, ale jeśli nie włożymy wysiłku, będzie tylko gorzej. Próbuję przeprojektować bazy danych wraz z aplikacjami, może to dla mnie zwiększyć pracę z migracją danych, ale wydajność to magiczna sztuczka, którą zawsze wyciągam z głowy.
Powodzenia z brzydką koleżanką;)
źródło
Sprawdź, czy dostępna jest opcja sesji Transferu wiedzy, a jeśli tak, to w pełni ją wykorzystaj.
Ponadto wiele DBMS-ów jest wyposażonych w narzędzia umożliwiające rysowanie / drukowanie schematu bazy danych z przydatnymi informacjami (np. Kluczami obcymi).
Dodatkowo (skradzione z NXC) możesz dokonać inżynierii wstecznej bazy danych za pomocą narzędzi takich jak Visio.
źródło
Lubię odpalać profiler zapytań i obserwować, co dzieje się w systemie produkcyjnym. Daje mi pojęcie o tym, które tabele są „gorące” i jakie są zapytania skierowane przeciwko nim.
źródło
Umieść kopię zapasową na serwerze piaskownicy, a następnie zacznij pisać i uruchamiać zapytania testowe. Zawsze uważam, że skomplikowany system jest łatwiejszy do zrozumienia, jeśli mogę go zdobyć i nie martwić się o jego uszkodzenie.
Lubię też mieć Daily WTF otwarty w oknie przeglądarki. Przejęcie czyjegoś projektu zwykle wiąże się z wieloma momentami „Nie mogę uwierzyć, że zrobili to {WTF}”, i pomaga znaleźć miejsce, w którym ludzie rozumieją twój ból.
źródło