2013-08-19 8 views
6

Rozważam użycie datalogu jako bazy danych dla aplikacji, którą piszę, ponieważ widzę potencjał, który pozwala mi łatwo przełączać się między reprezentacjami bez konieczności poświęcania zebranych danych lub pisania uciążliwej migracji.Datalogowe wzorce do zmiany danych

Nie mogę jednak przewidzieć, jak poradzić sobie ze zmianą danych - np. coś tak prostego, jak hasło, które może zmienić użytkownik. Miałem pomysł, aby oznaczyć wiersze z datą:

changepassword(<user>, <passhash>, <date>) 

a następnie użyć najnowszy, ale nie wydaje się być sposób, aby uzyskać najnowszy, bez powrotu wszystkich wierszy i filtrując je na stronie aplikacji.

W jaki sposób aplikacje do rejestrowania danych są zaprojektowane do obsługi zmieniających się danych?

Odpowiedz

3

Jeśli spojrzysz na http://c2.com/cgi/wiki?QueryLanguageComparison zobaczysz, że Datalog nie ma możliwości wykonywania agregacji, min, max, top N i innych, ze względu na przechodnie relacje i zapytania cykliczne.

Zasadniczo konieczne jest wykonanie dowolnej agregacji itp. W warstwie aplikacji, co jest dalekie od ideału.

Istnieje jednak co najmniej jeden produkt (muszę przyznać, że nie używałem ani nie sprawdzałem szczegółów), który rozszerza składnię Datalogu dla tych przypadków: Datomic, spójrz na sekcję "Agregaty zwracające pojedynczą wartość".

Powiązane problemy