gpt4 book ai didi

aerospike - 从 Aerospike 查询语言中的一组中选择随机 bin?

转载 作者:行者123 更新时间:2023-12-04 14:07:18 26 4
gpt4 key购买 nike

我想从命名空间的集合中选择随机“n”个容器的样本。有没有办法在 Aerospike 查询语言中实现这一点?

在 Oracle 中,我们通过以下查询实现了类似的功能:

SELECT * FROM <table-name> sample block(10) where rownum < 101 

上述查询从 100 个样本中提取大小为 10 行的 block 。

我们也可以在 Aerospike 中做类似的事情吗?

最佳答案

行就像 Aerospike 中的记录,而列就像箱子。您没有办法从表中随机抽取列,对吗?

您可以使用 ScanPolicy.maxRecords 添加到该集合的扫描中,从该集合中抽取随机 记录。注意新的(可选)set indexes在 Aerospike 5.6 版中可能会加速该操作。

每个命名空间都有自己的 data partitioned分为 4096 个逻辑分区,命名空间中的记录均匀分布到每个使用 20 字节 RIPEMD-160 摘要特征的分区中。因此,Aerospike 没有 rownum,但您可以利用数据分布来采样数据。

每个分区大约是命名空间的 0.0244%。这是您可以使用的示例空间,类似于上面的 SQL 查询。接下来,如果您使用 ScanParition客户端的方法,你可以给它 ScanPolicy.maxRecords从该分区中选择特定数量的记录。此外,如果您愿意,您可以在任意摘要(参见 PartitionFilter.after)之后开始。

好的,现在让我们谈谈数据浏览。您可以使用 Aerospike JDBC driver 而不是使用 aql 工具,它适用于任何 JDBC 兼容的数据浏览器,如 DBeaver、SQuirreL 和 Tableau。当您在 SELECT 上使用 LIMIT 时声明它基本上会执行我上面描述的操作 - 使用分区扫描和该扫描的最大记录样本。我建议您试试这个作为替代方案。

关于aerospike - 从 Aerospike 查询语言中的一组中选择随机 bin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67479788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com