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

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

  •  
  •   aschoolboy · 2019-03-10 23:44:12 +08:00 · 2409 次点击
    这是一个创建于 2085 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司想把文件内容按目录结构存在 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
    reus
        1
    reus  
       2019-03-11 00:00:31 +08:00
    你 high 逼你自己写一个啊
    mason961125
        2
    mason961125  
       2019-03-11 00:55:05 +08:00 via iPhone
    不都给你用 prefix 解决了嘛,还要什么自行车。
    catror
        3
    catror  
       2019-03-11 01:46:05 +08:00 via Android
    树状结构的键是个啥?描述一下?我想你可能没太理解你键值对存储
    hopingtop
        4
    hopingtop  
       2019-03-11 09:26:17 +08:00
    一上来就 pen lowB 不是不符合你意就是 lowB!
    多了解后再来 pen

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

    我的确没太理解键值对存储。
    希望不吝赐教,或者给个关键字,我去查一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1596 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 454ms · UTC 17:06 · PVG 01:06 · LAX 09:06 · JFK 12:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.