6

我正在考虑使用 datalog 作为我正在编写的应用程序的数据库后端,因为我看到了允许我在表示之间轻松切换而不必牺牲我收集的数据或编写繁琐的迁移的潜力。

然而,我无法预见我将如何处理更改数据——例如像用户可更改密码这样简单的事情。我有一个想法用日期标记行:

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

然后使用最新的,但似乎没有办法获得最新的,而不返回所有行并在应用程序端过滤它们。

如何设计数据记录应用程序来处理不断变化的数据?

4

1 回答 1

3

如果您查看http://c2.com/cgi/wiki?QueryLanguageComparison,您会发现 Datalog 无法执行聚合、最小值、最大值、前 N 等,因为传递关系和递归查询.

本质上,您必须在应用程序层中进行任何聚合等,这远非理想。

但是,至少有一种产品(我必须承认我没有使用或仔细研究过)扩展了这些情况下的 Datalog 语法:Datomic,查看“聚合返回单个值”部分。

于 2013-08-22T07:45:55.493 回答