[英]convert C++ key/value structure to database (sqlite3)
我有一个C ++键/值表,如下所示:
class kvBucket {
...
map<string, kvBucket*> buckets;
map<string, string> keyPairs;
...
}
class kvTree {
...
kvBucket base;
...
}
我想将其从内存结构转换为在数据库(sqlite3)中实现的结构。 由于存储桶嵌套,我不确定如何表示架构。 这是示例数据:
bucket | key | value
------ --- -----
a v 1
a/b w 2
a/b x 3
a/b/c y 4
d z 5
在C ++结构中,我具有成员函数,这些成员函数可以执行以下操作:检索另一个存储桶下的存储桶列表,或检索存储桶路径下的键/值对列表,等等。我需要对数据库进行相同的操作。 有没有有效的方法来设计架构来做到这一点?
没有有效的方法来表示关系存储中的层次结构关系。 键值存储(您可能已经听说过,近来它们风靡一时)在此方面表现更好,但通常不提供SQL层。 如果您希望能够移动各个存储桶,则将所有存储桶都放在某个路径下将需要多个查询(如果您不想移动存储桶,则可以使用已有的方案并在存储区名称上进行子字符串搜索,例如"a/*"
)。
就是说,即使每个存储桶都没有存储自己的完整路径,您也可以做到这一点:您需要从bucket
到bucket
的自对多关系映射。 您需要两个表,一个用于存储桶,一个仅用于映射。 在映射表中,您有两列parent_bucket
和child_bucket
。 在bucket
表中,您有三个bucket_id
, key
和value
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.