interesujący pomysł: typ danych z jednostkami

martijn van oosterhout zaimplementował interesujące rozszerzenie postgresa.

są to mianowicie typy danych z przechowywanymi w danych (i obsługiwanymi) jednostkami.

przykładem użycia może być typ danych do przechowywania kwot, wraz z walutą.

innym – wartości fizyczne wraz z jednostkami – np. ‘9.81 mps2′.

fajne w tym jest to, że te dane działają logicznie. to znaczy. mając typ finansowy, i wykonując dodawanie:

select '15 USD'::currency + ‘25.1 USD'::currency;

da oczekiwany, poprawny wynik. jednocześnie system jest na tyle sprytny, że przy próbie dodawania wartości z różnymi jednostkach zgłasza błąd.

oczywiście użyteczność tego sięga poza dodawanie 🙂

ogólnie – dzięki taggedtypes można sobie zdefiniować dowolne typy danych z dowolnymi tagami.

niestety – na chwilę obecną w systemie jest kilka ograniczeń. ale – dzięki temu, że całośc jest dostępna ze żródłami można sobie prosto dopisać dowolne dodatkowe funkcje. np. do typu walutowego przydatne byłoby automatyczne przeliczanie po aktualnym kursie by móc uzyskać np. coś takiego:

SELECT ‘1 PLN'::currency + ‘1 USD'::currency;

zwracające zsumowane kwoty “po kursie dnia".

albo po prostu tworzące wartość ‘1 PLN 1 USD' która nadal będzie prawidłowo działać 🙂

możliwości jest sporo. podwaliny już są. czy coś dalej z tego wyjdzie – to już zależy od użytkowników i zastosowań jakie sobie wymyślą 🙂

http://svana.org/kleptog/pgsql/taggedtypes.html