在 BoltDB 中使用两个单独的键
using two separate keys in BoltDB
我有一个带有 ID
和 LoginName
字段的 User
结构,我希望这些字段中的任何一个都可以通过单次调用数据库访问该结构。我知道 BoltDB 不应该处理任意字段索引等(不像 SQL),但这种情况有点不同,因为我碰巧事先知道 b 的附加字段用作索引。
那么是否存在某种辅助键或多键索引?或者也许是一些我看不到的策略?如果没有,那么我将通过两次调用来实现它,我更喜欢 "cleaner" 解决方案...
谢谢!
BoltDB中没有二级键索引,但你可以实现它。
您可以将 ID 存储到另一个存储桶中的 LoginName 映射,从技术上讲,它将是您的结构的 "secondary key"。即先从副键获取主键值,再获取User结构体。
如果您的大部分调用都在 LoginName 键上,请使用 LoginName 到 ID 映射并将 User 结构存储在 LoginName 键下,反之亦然。
注意:必须自己保持一致性,记住。
不,它不在那里。 BoltDB 很像 Go。干净简单。在上面构建一个层很容易。 BoltDB 甚至允许简单地实现更新事务,因此可以自动更新或不更新另外两个桶。因此,创建一个使两个或多个存储桶保持同步的更新事务很容易。但听起来你知道这一点,只是想检查一下你是否遗漏了什么。
我有一个带有 ID
和 LoginName
字段的 User
结构,我希望这些字段中的任何一个都可以通过单次调用数据库访问该结构。我知道 BoltDB 不应该处理任意字段索引等(不像 SQL),但这种情况有点不同,因为我碰巧事先知道 b 的附加字段用作索引。
那么是否存在某种辅助键或多键索引?或者也许是一些我看不到的策略?如果没有,那么我将通过两次调用来实现它,我更喜欢 "cleaner" 解决方案...
谢谢!
BoltDB中没有二级键索引,但你可以实现它。
您可以将 ID 存储到另一个存储桶中的 LoginName 映射,从技术上讲,它将是您的结构的 "secondary key"。即先从副键获取主键值,再获取User结构体。
如果您的大部分调用都在 LoginName 键上,请使用 LoginName 到 ID 映射并将 User 结构存储在 LoginName 键下,反之亦然。
注意:必须自己保持一致性,记住。
不,它不在那里。 BoltDB 很像 Go。干净简单。在上面构建一个层很容易。 BoltDB 甚至允许简单地实现更新事务,因此可以自动更新或不更新另外两个桶。因此,创建一个使两个或多个存储桶保持同步的更新事务很容易。但听起来你知道这一点,只是想检查一下你是否遗漏了什么。