首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

etcd 的键是单纯的字符串吗?没有目录结构?

  •  
  •   aschoolboy · 276 天前 · 1257 次点击
    这是一个创建于 276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司想把文件内容按目录结构存在 etcd 里
    例如:
    文件目录是
    /root
    --/linux
    ----/a
    ----/b
    --/windows
    ----/c
    ----/d
    那么存的键就是:
    /root/linux/a
    /root/linux/b
    /root/windows/c
    /root/windows/d
    想要查看 a 的文件内容,就取"/root/linux/a"这个键对应的值
    还有个需求就是获取文件与文件夹列表的功能
    即:输入 /root,获得[]string{"linux","windows"}
    输入 /root/linux,获得[]string{"a","b"}
    但是我发现,etcd 的键就是单纯的字符串,并不是树状结果
    上述需求可以通过加参数 --prefix
    来获得前缀为 /root 的键值对列表,并对列表中的键做字符串处理,来完成
    但是这简直太 lowB 了
    我看了 github.com/coreos/etcd 包的源码,的确是单纯的字符串,但是 etcd 这么牛逼的东西,居然是这样的,不由得开始怀疑自己,特此发帖求助

    5 回复  |  直到 2019-03-11 13:38:34 +08:00
        1
    reus   276 天前
    你 high 逼你自己写一个啊
        2
    mason961125   275 天前 via iPhone
    不都给你用 prefix 解决了嘛,还要什么自行车。
        3
    catror   275 天前 via Android
    树状结构的键是个啥?描述一下?我想你可能没太理解你键值对存储
        4
    hopingtop   275 天前
    一上来就 pen lowB 不是不符合你意就是 lowB!
    多了解后再来 pen

    etcd 底层存储采用 bblot db ( blot fork )存储采用 B+ tree
        5
    aschoolboy   275 天前
    @reus #1
    @hopingtop #4
    我的意思是我自己的做法 lowB
    @catror #3
    如果把"value"这个字符串存到"/root/linux/a"里
    我目前知道的 etcd 是这么存储的{"/root/linux/a":"value"}
    但是我希望得到这样存储的结构{"/root":{"/linux":{"/a":"value"}}}

    我的确没太理解键值对存储。
    希望不吝赐教,或者给个关键字,我去查一下
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1694 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 16:48 · PVG 00:48 · LAX 08:48 · JFK 11:48
    ♥ Do have faith in what you're doing.