Kiedyś miałem stolik, który był błyszczący i piękny. Przechowywał wszystkie transakcje finansowe dla organizacji. A potem zaczęliśmy ładować do niego dane.
W bieżącym miesiącu mogą one określać i przekształcać wartości tak często, jak chcą. W ostatnich 10 dniach miesiąca przekształcają liczby -> uruchamiają przetwarzanie ETL -> przeglądają raporty kilka razy dziennie. Po zakończeniu miesiąca książki są zapieczętowane i nie można modyfikować wartości.
To niesamowite, ile danych finansowych generuje firma świadcząca usługi finansowe ... Z naszym zestawem danych testowych nie zdawaliśmy sobie sprawy, że ilość danych sprawi, że ich procedury na koniec miesiąca staną się niemożliwe do utrzymania. Usunięcie „danych z bieżącego miesiąca” zajęło coraz więcej czasu, zanim zastąpiono je nowym przebiegiem próbnym.
Musieliśmy zrobić coś, aby przyspieszyć przetwarzanie bez łamania nieskatalogowanej listy „kto wie, co”, wszystko zależy od tabeli MonthlyAllocation. Postanowiłem zagrać w magika i wyciągnąć spod nich obrus. Poszedłem do starej szkoły i korzystałem z widoku podzielonego na partycje . Dane miały już flagę IsComplete, więc utworzyłem dwie tabele - każda z przeciwnymi ograniczeniami sprawdzania: MonthlyAllocationComplete, MonthlyAllocationInComplete
Następnie utworzyłem widok podzielony na partycje o tej samej nazwie co oryginalna tabela: MonthlyAllocation. Żaden proces nie był mądrzejszy w kwestii fizycznej zmiany, której dokonaliśmy w bazie danych. Nie zgłoszono żadnych raportów, żaden z analityków z bezpośrednim dostępem nie zgłosił żadnych problemów z tą „tabelą” przed ani po niej.
Fajna historia, stary, ale gdzie idziesz?
Co jeśli mieliby tam konwencję nazewnictwa, tbl_MonthlyAllocation? Co teraz? Czy spędzamy wiele roboczogodzin, przeglądając każdy ETL, każdy raport, każdy arkusz kalkulacyjny ad-hoc w organizacji i aktualizując je, aby używały vw_MonthlyAllocation? A potem oczywiście wszystkie te zmiany przechodzą przez Tablicę Zmian i zawsze jest to szybki i bezbolesny proces.
Twój szef może zapytać: jaka jest nagroda dla firmy za całą tę pracę?
Inną opcją jest pozostawienie tego widoku jako tbl_ i nie poświęcanie całego czasu na testowanie, aktualizowanie i wdrażanie kodu. Staje się to zabawną anegdotą, którą objaśniasz wszystkim nowym pracownikom, a także osobom o krótkiej uwadze, które muszą pracować z bazą danych, wyjaśniając, dlaczego nie zgadzasz się z nazewnictwem obiektów
Lub nie podwójnie kodujesz obiektów z redundantnymi metadanymi. Baza danych szczęśliwie powie ci, co to jest tabela, co to jest widok, co to jest funkcja o wartości tabeli itp.
Konwencje nazewnictwa są dobre, po prostu nie maluj się nimi w kącie.
Class
?