2013-08-19 4 views
6

Я рассматриваю возможность использования datalog в качестве базы данных для приложения, которое я пишу, потому что я вижу потенциал, позволяющий легко переключаться между представлениями без необходимости жертвовать моими собранными данными или писать громоздкую миграцию.Паттерны данных для изменения данных

Однако я не могу предвидеть, как я буду иметь дело с изменением данных - например, что-то простое, как сменный пароль. У меня была идея помечать строки с датой:

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

, а затем использовать последнюю версию, но не кажется, что должен быть способ, чтобы получить последнюю, без возврата всех строк и их фильтрации на стороне приложения.

Как приложения для регистрации данных, предназначенные для обработки изменяющихся данных?

ответ

3

Если вы посмотрите на http://c2.com/cgi/wiki?QueryLanguageComparison, вы увидите, что Datalog не имеет возможности выполнять агрегацию, min, max, top N и т. Д. Из-за переходных отношений и рекурсивных запросов.

По существу, вам нужно будет делать какие-либо агрегации и т. Д. На прикладном уровне, что далеко не идеально.

Однако есть хотя бы один продукт (который должен признать, что я не использовал или не изучал детали), который расширяет синтаксис Datalog для этих случаев: Datomic, посмотрите раздел «Агрегаты, возвращающие одно значение».

Смежные вопросы