如何清理FoundationDB?

时间:2014-01-28 21:57:22

标签: foundationdb

有没有快速的方法从本地数据库中删除所有数据?像SQL'drop database'?

我正在浏览文档,但还没有发现任何有趣的事情。

4 个答案:

答案 0 :(得分:6)

您可以通过清除整个按键范围来完成此操作。

在Python中,它看起来像这样:

Database.clear_range('', '\xFF')

其中''是默认切片的开头,'\ xFF'是默认的切片末端,根据clear_range文档。

您可以在documentation中找到有关您正在使用的API的clear_range的更多信息。

答案 1 :(得分:1)

我认为CLI方法不正确:“似乎不是绝对的第一把钥匙。 可能需要这样做:

fdb> writemode on
fdb> clearrange \x00 \xFF

答案 2 :(得分:0)

“ CLI”方式

使用提供的fdbcli界面,您可以使用单个clearrange命令清除数据库中的所有键,如下所示:

fdb> writemode on
fdb> clearrange "" \xFF
Committed (68666816293119)

请警告它会立即执行,并且无法撤消!

此外,任何仍连接到数据库的应用程序都可以使用缓存的目录子空间前缀继续读取/写入数据,这可能会导致数据损坏!您应该确保仅在没有任何活动正在使用群集时才使用此方法。

此方法要求您的集群处于工作状态,并且不会立即回收磁盘上使用的空间,也不会重置集群的读取版本。

“硬性”方式

如果具有单节点群集,则可以停止fdb服务,删除其data_dir文件夹中的所有文件,重新启动该服务,然后使用fdbcli执行{{1} }命令。

这将回收以前使用的磁盘空间,并将所有内容重置为安装后状态。

答案 3 :(得分:0)

要以Java编程方式执行此操作:

db.run(tx -> {
            final byte[] st = new Subspace(new byte[]{(byte) 0x00}).getKey();
            final byte[] en = new Subspace(new byte[]{(byte) 0xFF}).getKey();
            tx.clear(st, en);
            return null;
        });