Tabele temporalne

Już w latach 90 zeszłego stulecia firma Postgres próbowała zrealizować ideę tabel temporalnych, jednak ze względu na bardzo wysokie koszty składowania ogromnych ilości danych pomysł zarzucono.

W roku 2013 tabele temporalne trafiły do kolejnej wersji specyfikacji języka SQL.

Od niedawna wszyscy więksi dostawcy baz danych przejęli się tematem i zaczęli implementować tę opcję w swoich produktach. Jak na razie udało się to kilku firmom: Oracle, Postgres, Teradata, IBM DB2, Microsoft, Cockroach DB oraz MarkLogic (ten ostatni nie jest bazą stricte SQL-ową, ale mimo wszystko zaimplementowali „temporalność” w swoim produkcie).

Pchełki SQL: małe – duże

Praca programisty jest – przynajmniej w teorii – fajna, prosta i przyjemna. Dostajemy projekt, dostajemy dokumentację, z której jednoznacznie wynika co mamy na wejściu i co chcemy dostać na wyjściu, siadamy, piszemy kod, testujemy kod, prosimy kilku użytkowników, żeby przetestowali wyniki i jak wszyscy są zadowoleni, wrzucamy kod do ogólnego użytku, wystawiamy fakturę i voila, gotowe.

A zaraz potem przybiega pierdzący tęczą jednorożec w towarzystwie reniferów, Świętego Mikołaja i uczciwego polityka…

Pchełki SQL: LEFT JOIN

Dzisiaj coś absolutnie podstawowego, o czym jednak zdarza się zapomnieć nawet starym wyjadaczom (zwłaszcza po trzech zarwanych nockach tuż przed wypuszczeniem gotowego produktu na rynek, albo w środowisko produkcyjne).

Operator LEFT JOIN działa w ten sposób, że zwraca wszystkie rekordy z tabeli głównej…

Pchełki SQL: LAG

Operatory analityczne są często traktowane po macoszemu przez padawanów sztuki SQL-owej. Czasem jednak potrafią one zaoszczędzić mnóstwo czasu. Dziś pokażę, jak działa operator LAG.

Jednym z klasycznych problemów, przed którymi staje większość programistów SQL, jest wykonanie zestawienia, w którym chcemy pokazać wartości z rekordu bieżącego wraz z wartościami z rekordu poprzedniego, w jednym rekordzie.

Typowym podejściem jest tu utworzenie CTE z ROW_NUMBER(), a następnie wykonanie JOIN-a tego CTE z samym sobą po kolumnie ROW_NUMBER() z nią samą zmniejszoną o jeden. Czyli po naszemu tzw. self-join.

Pchełki SQL: duże hasze

Od czasu do czasu każdego z nas nachodzi nagła potrzeba wyliczenia skrótu z jakiejś dużej wartości tekstowej. To znaczy, nie dużej, tylko długiej. Ale nachodzi, prawda?

Jeżeli, Czytelniku, nie nachodzi Cię od czasu do czasu nagła potrzeba wyliczenia du… dług.. skrótu z jakiejś długiej wartości tekstowej, ten wpis prawdopodobnie nie jest dla Ciebie – polecam zamiast tego odwiedzić Joe Monstera, Nowego Pompona czy choćby Siupy z Dupy.

Tych z Czytelników, którzy od czasu do czasu walczą z przemożoną chęcią haszowania długich stringów, zapraszam do dalszej lektury.

Pchełki SQL: MERGE, optymalizacja haszem

Dziś pchełka dotycząca optymalizacji operatora MERGE.

Uwaga: jeżeli nie wiesz, jak działa MERGE, lub po prostu nie interesujesz się bazami danych, ten wpis raczej nie jest dla Ciebie. Istnieje szansa, że uśniesz w okolicach czwartego akapitu…

Mamy następujący scenariusz: ładujemy dane do hurtowni. W pierwszej kolejności ładowana jest warstwa STAGE a następnie warstwa EDW.