在BoltDB中使用两个单独的键

时间:2016-03-20 08:35:50

标签: go boltdb

我有一个带有UserID字段的LoginName结构,我希望这些结构可以通过单个调用DB来访问这些字段。我知道BoltDB不应该处理任意字段索引等(与SQL不同),但这种情况稍有不同,因为我事先知道将b作为索引使用的附加字段。

那么是否存在某种二级密钥或多密钥索引?或者是我看不到的一些策略?如果没有,那么我将只用两个电话实现它,我只是更喜欢“更清洁”的解决方案......

谢谢!

2 个答案:

答案 0 :(得分:1)

BoltDB中没有辅助键索引,但您可以实现它。

您可以将ID存储到另一个存储桶中的LoginName映射,从技术上讲,它将是您的struct的“辅助键”。也就是说,首先从辅助密钥获取主键值,然后从用户结构中获取。

如果您的大多数调用都在LoginName项上,请使用LoginName到ID映射并在LoginName项下存储User结构,反之亦然。

小心:你必须保持自己的一致性,记住它。

答案 1 :(得分:1)

不,它不在那里。 BoltDB很像Go。干净简单。在顶部构建一层很容易。 BoltDB甚至允许简单地实现更新事务,因此可以原子地更新或不更新两个桶。因此,创建一个保持两个或更多桶同步的更新事务很容易。但听起来你知道这一点,只是想检查你是不是错过了什么。