气钉 : Delete all bins

标签 aerospike nosql

我正在尝试从我的集合中删除垃圾箱。
问题是当我删除它们时,它们仍然显示在

aql> show bins
+-------+------------------+-------+-----------+
| quota | bin              | count | namespace |
+-------+------------------+-------+-----------+
| 32768 | "family"         | 14    | "test"    |
| 32768 | "querybinstring" | 14    | "test"    |
| 32768 | "querybinint"    | 14    | "test"    |
| 32768 | "binstringfoo"   | 14    | "test"    |
+-------+------------------+-------+-----------+

尽管数据已从集合中删除。

aql> select * from test.testset
0 rows in set (0.000 secs)

当我的 binNames 达到唯一 binNames 约束的 32k 限制时,就会出现问题。
必须重新启动 aerospike,删除的 bin 名称才会真正消失。

那么除了删除垃圾箱后重新启动还有其他方法吗?
aerospike 重新启动后到底会发生什么? (这将删除已删除的[标记为已删除]垃圾箱)

注意:我已经通过使用

删除垃圾箱对此进行了测试
  1. client.delete()
  2. 设置过期时间

还有一个问题 - 有什么方法可以通过 aql 从集合中删除所有垃圾箱

最佳答案

  • 删除 Aerospike 中元数据的方法

查看此论坛,了解删除 Aerospike 中 bin 元数据的方法列表。

https://discuss.aerospike.com/t/bin-names-deletion/731

  • 从 AQL 中删除 Bin

您可以使用 AQL 将垃圾箱设置为 NULL 来删除垃圾箱

例如:插入namespace.set(PK, bin)值('1', NULL) 将从主键为“1”的记录中删除 bin

  • 一般性了解删除

Aerospike 将数据分为两部分:索引和值。索引始终存储在 DRAM 中,值可以存储在 SSD 或 DRAM 中(有或没有磁盘用于持久化)。当一条记录被删除时,对该记录的引用也会从索引中删除。实际数据并未从磁盘中删除。另一个进程会发现磁盘上的数据没有被使用并回收空间。

请注意,已删除的对象有可能重新出现。为此,必须满足以下条件:

节点必须配置为从磁盘加载数据。如果数据已被删除,但尚未从磁盘中删除。 (即索引条目已被删除)。在这种情况下,当节点启动时,它将从磁盘读取数据并重建索引。由于数据尚未从磁盘中删除,因此节点会认为它仍然处于事件状态并为其构建新的索引条目。所以被删除的对象将会返回。如果您知道要关闭某个节点,则可以使用快速重启功能来防止已删除的数据返回。即使数据库进程停止运行,这也会将索引保留在内存中。

新版本中的另一个选项是使用“冷启动空”配置,该配置可防止从磁盘加载数据,但只能从集群中的其他节点迁移。

更多信息请点击这里: http://www.aerospike.com/docs/reference/configuration/#cold-start-empty

关于气钉 : Delete all bins,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27546948/

相关文章:

namespaces - 如何在 aerospike 中拥有超过 32 个命名空间?

mysql - 是否有任何工具可以将数据从 MySQL(或 mongodb)迁移到 Aerospike?

docker - 如何在Docker内部为Aerospike服务器配置现有数据目录?

java - Java 对象和记录之间的绑定(bind)

java - Java 项目中的 CouchDB、Project Voldemort、Cassandra

mongodb - MongoDB 中的 "Pointers"?

database - Berkeley DB java 版本,Java 中的任何 LGPL 或 BSD 替代品?

java - 如何获取 Aerospike 中垃圾箱的大小?

database - 在多台服务器上部署redis

linux - 检查 Aerospike 集群是否空闲的条件