Najbardziej popularną biblioteką abstrakcji baz danych w Haskell jest HDBC. Oznacza to, że kwerendy są po prostu reprezentowane jako obiekty zastępcze. Mniej osób używa HaskellDB, co zapewnia bezpieczny sposób budowania zapytań. Nic nie zabrania posiadania typów danych użytkownika do reprezentowania typowych zapytań i niestandardowych funkcji do ich budowania.
Wartości w Haskell są niezmienne, co oznacza, że nie jest użyteczne posiadanie zmiennego obiektu odpowiadającego rekordowi w bazie danych. Zamiast tego, wydaje mi się, że bardziej powszechne jest definiowanie typów danych użytkownika i funkcji, które przekazują i wypychają/wyciągają wartości tych typów do/z bazy danych.
Ilekroć aktualizacje bazy danych są konieczne, najprawdopodobniej będą one uruchamiane w niektórych stanach monadowych pod numerem IO
. Pozwoli to zachować połączenie otwarte, na przykład, lub zrobić coś pomiędzy żądaniami.
Wreszcie, funkcje są pierwszej klasy, więc możliwe jest skonstruowanie wszystkich funkcji w locie. Zatem sama funkcja może zawierać dowolne informacje.
Tak, myślę, zwykle podejście Haskell składa
- algebraicznych typów danych do reprezentowania rzeczywistych danych (jak niezmienne wartości)
- reszty aplikacji do przekształcenia tych wartości
- funkcje, które generują zapytania (zawierają szczegóły schematu, dane marszałkowskie do/z typów danych Haskella)
- (opcjonalnie) monometr stateful do uruchamiania zapytań (ukrywanie szczegółów dostępu do bazy danych)
- funkcje, które uruchomić zapytań (bez szczegółów dostępu do baz danych)
Może warto odwiedzić http://blog.ezyang.com/2010/06/databases-are-categories/. –
@Alexandre dzięki, dobra lektura, ale nie sądzę, że to było to, czego szukałem :) – Masse
Twój diagram już nie istnieje. Czy możesz go ponownie przesłać? To pytanie zależy od tego. –