Arangodb 旧文件的有效清除
使用Arangodb3.6.x,我有一个场景,连续的文档进入数据库,需要不断地删除旧文档。确定文档以消除这些记录的有效/简单算法是什么。我可以使用文档“\u键”进行选择和删除吗 我想从数据库中检索文档来查看每一个文档都是一种不好的方法,所以我试图找到一种简单、高效的算法。理想情况下,数据库本身将提供这样的机制,如分区。f、 前。关于数据时间戳,它不必非常精确,但它必须有效,因为我必须确保文档总数保持在最大值以下 我特别关注ArangoDB 多谢各位Arangodb 旧文件的有效清除,arangodb,Arangodb,使用Arangodb3.6.x,我有一个场景,连续的文档进入数据库,需要不断地删除旧文档。确定文档以消除这些记录的有效/简单算法是什么。我可以使用文档“\u键”进行选择和删除吗 我想从数据库中检索文档来查看每一个文档都是一种不好的方法,所以我试图找到一种简单、高效的算法。理想情况下,数据库本身将提供这样的机制,如分区。f、 前。关于数据时间戳,它不必非常精确,但它必须有效,因为我必须确保文档总数保持在最大值以下 我特别关注ArangoDB 多谢各位 若昂这取决于您如何限定“旧”文档。如果这些是按
若昂这取决于您如何限定“旧”文档。如果这些是按日期的,那么您可以简单地确保每个文档都有一个数字时间戳属性。我在JavaScript中使用AQL
DATE\u NOW()
函数或(new DATE()).valueOf()
。然后,只需在timestamp属性上添加一个索引,允许按大于/小于x
的数字进行近乎即时的排序和/或过滤
LET millisecondsAgo = (8 * 60 * 60 * 1000) // 8 hours
FOR a IN collection_a
FILTER a.timestamp < (DATE_NOW() - millisecondsAgo)
REMOVE a IN collection_a
在
uniqueKey
上的collection\u a
和collection\u b
上都应该有一个(在UI中称为“持久索引”,unique是好的,但不是必需的)。然后,collection_b…中b的查询将使用索引超快速匹配,如果找到某个内容,则返回true
。如果没有匹配的记录,则不会返回任何内容,因此返回的数组长度为零。哈希键查找+非常小数组的计算长度应该非常快。这取决于您如何限定“旧”文档。如果这些是按日期的,那么您可以简单地确保每个文档都有一个数字时间戳属性。我在JavaScript中使用AQLDATE\u NOW()
函数或(new DATE()).valueOf()
。然后,只需在timestamp属性上添加一个索引,允许按大于/小于x
的数字进行近乎即时的排序和/或过滤
LET millisecondsAgo = (8 * 60 * 60 * 1000) // 8 hours
FOR a IN collection_a
FILTER a.timestamp < (DATE_NOW() - millisecondsAgo)
REMOVE a IN collection_a
在uniqueKey
上的collection\u a
和collection\u b
上都应该有一个(在UI中称为“持久索引”,unique是好的,但不是必需的)。然后,collection_b…
中b的查询将使用索引超快速匹配,如果找到某个内容,则返回true
。如果没有匹配的记录,则不会返回任何内容,因此返回的数组长度为零。哈希键查找+非常小数组的计算长度应该非常快。我最后使用了“TTL索引”,结果非常好。我最终使用了“TTL索引”,结果非常好。