问题标签 [datalog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - 对分页集执行过滤的高效 Datomic 查询
鉴于 Datomic不支持分页,我想知道如何有效地支持查询,例如:
取前 30 个实体
:history/body
,找到:history/body
与某个正则表达式匹配的实体。
这是我单独进行正则表达式匹配的方法:
观察:
- 然后我可以
(take ...)
从中获取,但这与匹配前 30 个实体不同。 - 我可以获取所有实体,
take 30
然后使用 手动过滤re-find
,但如果我有 30M 实体,那么让所有实体take 30
看起来非常低效。另外:如果我想从我的 30M 实体中取出 20M 并通过 过滤它们re-find
怎么办?
Datomic 文档讨论了查询是如何在本地执行的,但我尝试对一组 52913 个实体进行内存转换(当然,它们已完全touch
编辑),这需要大约 5 秒。想象一下,数百万或数以百万计的情况会有多糟糕。
prolog - 将 DTD 映射到 Datalog 程序
谁能帮我写一个相当于给定DTD的Datalog程序。
DTD:
在将 dtd 转换为相应的数据记录程序时,我们还需要遵循任何特定规则吗?
clojure - 为什么这个数据日志查询会聚合?
来自 https://github.com/tonsky/datascript
所以,这不是关于它在做什么的问题,而是关于它如何(或至少为什么)这样做的问题。max 和 min 是分别返回其后续整数的最大值或最小值的函数。如何?amount
考虑限制聚合计数?为什么这些东西总是聚集在一起?代码如何运行以使其聚合。我真的不明白这段代码是如何产生结果的。
count - 答案集编程 - 如何计算似乎是我的查询结果的事实数量?
所以我有一组事实和一个用 ASP 编写的要在 DLV 上运行的查询,
然后我想计算我的答案集中有多少triple1
三元组不包括事实。然后我做了这种聚合#count查询:
但我得到的只是变量的数量TermA
作为我的结果出现。当我将查询更改为这样时:
它给了我错误。我该怎么做这个查询?
xml - 用于科学仪器时间序列记录的 XML 模式
问:
我知道所有这些废话都没有一个完美的答案。我希望有一些经验丰富的见解来缩小可能的口味,一些避免转换噩梦的一般策略,以及减少我在 CPU/磁盘上的数据存储占用的任何想法(大字符串操作既昂贵又乏味)。我在受限制的硬件上,对 XML标准有些陌生。我可以很好地读写它(通常用于网站),从来没有真正作为数据集封装。
我已经考虑了这几周,我有 92.3% 的把握 XML 文件是我理想的存储目标。我正在记录各种仪器读数/分析,并一次保存几个月。尽管我确实担心我的数据收集节点的硬件资源有限(过多的字符串操作会变慢,512kB RAM,3.2GB 闪存)。
我正在尝试找到一个格式良好的 ML,其占用空间最小,可以处理RAW数字数据类型。我不需要完全兼容的文件,但我正在寻找最合适的解决方案,所以不要偏离正确的形式太远
主要数据模型因素
(以及为什么我认为 XML 比打包二进制文件、平面文本甚至 CSV 更合适)
- 多达 8 个不同的数据点(不同的测量值、品牌和传感器类型)
- 各种原始数据类型(REAL32、DINT、DWORD、BYTE、STRING(任意长)
- 数据集需要能够在每个文件中保留绝对时间戳(我有一个充满 100 个最终将合并的 XML 的目录)
- 数据点配置/数量可能会发生变化,因此我需要能够以最少的冗长/混乱记录对架构的更改。
性能限制/注意事项
- 我通常应该只从嵌入式平台写出 XML,因此可读性不是最重要的,尽管如果我确实需要处理任何类型的查询,即使在最干净的情况下,折腾和解析 3.0GB 的文本也不会很有趣。
- 我相信间歇性的 DATE-TIME 节点将帮助我索引这样的查询
- 过度压缩数据实际上会在导出时成为一个问题,因为这些成为更多的计算来解压缩我的懒惰。
- 过于冗长的 XML 只能给我 111 天的存储时间。我希望能达到 180 天或更长时间。所以我确实需要更好地压缩文本。
- 卸载数据后有 3 个潜在目标。我不想因过于复杂而陷入转换瓶颈/错误。
- Microsoft Excel(他不必完全理解它,但我们不想花费数小时手动将不兼容的模式类型/映射导入 2D 网格。
- RRD 后端服务器(我将能够运行所需的任何转换,但希望我已经接近 RRD 想要的
- 一些可爱的 Javascript/Android 工具。尽管我希望这些能够执行自定义数据类型处理,但格式良好的 XML 将使开发过程中的检索和解析变得更简单。
datomic - 原子逻辑析取
如果这非常明显,我很抱歉,但是我如何在 Datomic 中表示逻辑析取?例如,如果我正在寻找一个名称为“1”或年龄小于 5 岁的实体,我将如何处理?
谢谢!
prolog - datalog 和 prolog 的语义是什么?
数据记录是在集合还是多集合上运行?这同样适用于 prolog 吗?我无法找到任何相关文件。
datomic - 聚合值最大值的原子查询
假设我有author
许多相关实体的book
实体。获取书籍数量最多的作者的查询是什么?
architecture - 模型数据日志查询客户端
我有 datomic DB 并将构建 Web 界面来查询数据库。
我一直使用关系数据库实现的直接解决方案是编写服务器 API 来检索实体。每个 API 端点都有它接受的参数列表,生成查询,将查询提供给数据库,并在可选的后处理后将结果返回给浏览器。
现在有了datomic,我想尝试不同的方法。我想要的是让单个 API 端点接受查询本身作为参数并在客户端构建查询。
就像是:
我的问题是:
- 这种方法可以吗,还是会有我现在看不到的困难?
- 我会使用任何 JavaScript/ClojureScript 库吗?(我在 datascript 上看到过,但该库似乎是用于在客户端上构建类似 datomic 的 DB,并且需要与真正的 datomic DB 进行通信。
- 在所描述架构的上下文中还有其他建议吗?
谢谢你。
datomic - Datomic 将谓词应用于基数多的属性
假设我有一个具有多值属性(例如数字)的 Datomic 实体。我将如何返回其值不包含特定数字的实体列表?
举个例子,
我想找到列表中不包含数字 1 的所有实体。
但是我有
然后返回所有实体,因为查询被解释为“查找具有不包含“b”的strs成员的实体”,但我需要
"找到每个成员不包含 "b" 的实体 e"。
谢谢!