问题标签 [boltdb]

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.

0 投票
2 回答
10038 浏览

json - 在 BoltDB 中存储数据的最佳方式

我是 BoltDB 和 Golang 的新手,并试图获得您的帮助。

所以,我知道我只能为 BoltDB 的键和值保存字节数组 ([]byte)。如果我有一个如下的用户结构,并且键将是用户名,那么将数据存储到需要字节数组的 BoltDB 中的最佳选择是什么?

序列化它还是 JSON?还是更好的方法?

非常感谢,晚上好

0 投票
0 回答
131 浏览

go - BoltDB 离线构建

所以我需要在公司防火墙后面做一些工作,而且我是构建 Go 应用程序的新手。我使用过的唯一 Go 应用程序已经构建并可以使用。我想玩 BoltDB,但问题是我无法安装它,因为它需要:

因为我的服务器不能访问 github.com,所以它不能拉这个。我不太了解 go build 策略,以及是否可以在我的本地机器上执行 go get 并执行该命令并将 $GOPATH 内容复制到服务器。那一直给我一个错误。

我也尝试在内部 git 上加载 repo,但它需要看起来像对其他依赖项的调用?有谁知道我如何在没有 go get 命令的情况下在我的服务器上部署 BoltDB?

编辑: 到目前为止,我在本地笔记本电脑上尝试过的是设置我的路径:

(显示文件),压缩 go 目录。去我的服务器并设置我的 GOPATH,

现在,我在本地笔记本电脑上的文件结构与服务器上的文件结构相同。当我运行 cayley(我正在玩的应用程序)时:

我得到了各种奇怪的错误,我在使用 bolt 时在网上找不到其他人。

0 投票
1 回答
231 浏览

ruby - 是否存在任何 BoltDB Ruby gem 绑定?

Bolt 是一个令人惊叹的 Go 嵌入式键/值数据库:

Ruby 语言有任何绑定(宝石)吗?

0 投票
3 回答
1583 浏览

go - 我可以在 boltdb 的嵌套存储桶下嵌套存储桶吗?

这就是我必须创建嵌套桶的内容。它不会返回任何错误,但无法在另一个嵌套存储桶下创建嵌套存储桶。

0 投票
1 回答
240 浏览

failover - 如何使用与 boltdb 相同的共享磁盘/文件系统?

我需要在 2 个进程之间共享一个 boltdb 数据库(在 2 个不同的 linux 主机上)。一个将是活着的,另一个将是一个冷待机,当第一个被检测到死亡时被起搏器唤醒。

但我看到的问题是,当冷待机启动时,由于“没有可用的锁”错误,它无法访问螺栓数据库。

原master恢复后,就可以成功打开数据库了。

有谁知道发生了什么或者我做错了什么或者我可以做些什么来实现我的 2 个进程的目标(为故障转移而唤醒冷待机)访问共享磁盘上的同一个 boltdb 文件?

非常感激。

0 投票
1 回答
467 浏览

go - 在 Bolt 中找到一个

我有一个 Golang 项目,我使用 Bolt 作为我的数据库。我找到并开始使用这个项目来处理数据库的连接和操作。我目前的问题是我无法通过一个字段进行搜索并得到一个结果。

我在 Golang 中的结构定义是:

起初,我知道有一个字段 ID 和一个带有标签id的字段 Name 很奇怪,问题是我希望名称作为 id 并且可能作为键。我做了一些插入,一切都很好,我什至检索了所有的值,它工作得很好。现在,我想用他的名字得到一个元素,我有这个:

但它会返回not found,但我知道一个组件是以该名称存储的。另一方面,如果我进行搜索,Find我会得到元素,但该命令会返回许多结果,而我只想要一个,我有这个:

0 投票
0 回答
809 浏览

database - BoltDB:定期刷新到磁盘

我正在编写一个应用程序,该应用程序需要我存储一个带有键值对的非常大的地图。所以仅仅依靠内存中的 Golang 映射不会削减它。BoltDB 看起来可能适合这种情况。

我的应用程序将在单个键值存储上不断写入和删除(+检索已删除的值)值。出于性能原因,我希望在每次写入值时避免使用新的 BoltDB db.Update,因为这也会写入磁盘。但是,我想定期将内存状态刷新回 BoltDB 所依赖的文件,以避免内存不足。

BoltDB 如何实现这一点?为我的应用程序创建单个 BoltDB 事务(db.Update)并定期调用 tx.Commit 以刷新到磁盘是否可行?

0 投票
1 回答
653 浏览

key-value-store - etcd 是否使用 boltdb 作为其后端?

我在 ectd #2646上遇到了这个问题,这是很老的帖子,但我在文档上找不到任何东西。

etcd 有自己的存储引擎,还是使用 boltdb 或其他后端?

谢谢

0 投票
0 回答
278 浏览

go - Bolt DB 项目的排序

我计划实现一个队列并将对象持久化到一个 Bolt 数据库实例中。我想知道在重新加载我的应用程序和确定头/尾时如何确定项目的排序。

要引用 Bolt DB 项目将项目插入存储桶:

Bolt 将其密钥按字节排序顺序存储在存储桶中

所以基本上数据库的键是字节[数组]并排序。我在网上看到一个实现,它使用以下行将 int 转换为 little endian 的字节数组。

还有哪些其他方法可以将键转换为字节数组以进行排序?

谢谢

0 投票
0 回答
106 浏览

go - 用于(空间)高效存储的 boltdb 数据格式

我需要将mysql中的业务数据存储到bolt中。数据是map[string]string这样的:

由于数据量会很大并且会不断增加,除了将数据拆分成独立的文件(比如201810.db),我想让最终的文件尽可能的小。所以我打算自己对数据进行编码,通过使用“查找表”,即因为所有数据项的所有键都是相同的,我映射 id=1,shop_id=2,... 这样键只会消耗 1~ 2 个字节。对于值,我也进行相同的编码,这样高度冗余的列(即选择不同的只返回几个结果)将在螺栓文件中消耗更少的空间。

现在我的问题是:bolt 如何存储键和值?如果我使用上述方法,是否会“每页”存储更多对象,从而最终提高空间效率?

或者,因为它使用“页面”,所以即使存储一个字节的数据也会消耗一整页?如果是这种情况,我是否必须手动对一堆对象进行分组,直到它们的组合大小大于螺栓页面才能使其“完全填充”?当然,这会损害随机访问,但对于我的应用程序,这可以通过增加编码复杂性来克服。