从世界的中心到宇宙的中心 Weekly 2022 09 12
首先恭祝关注本博的各位中秋快乐!花好月盈,团团圆圆!
技术
Redis 与结构化数据存储
本周的主要工作仍然是在 OpenDAL 上。经过了和 @xuanwo 的反复研究讨论,OpenDAL RFC0623 总算是被 merge 了。
RFC0623 主要研究了如何在 OpenDAL 中提供基于 Redis 的存储支持。在这段时间内,设计也反反复复发生变化。
读者都知道,一个文件系统要存储一个文件,除了它本身的内容以外,还需要存储它的各类属性如创建时间、修改时间、所有者等【元数据】。为了在 Redis 中提供一个类似文件系统的视图,除去数据块的本身内容外,还需要亲自去维护数据块的元数据——这在常用的对象存储中可不需要亲力亲为。毫无疑义地,数据块和它的对应元数据被分成了两个独立的键值对进行存储。
在元数据存储上,问题就变得有意思了起来。Redis 提供了一个半结构化的数据结构——HASH
。HASH
本质上是一个哈希表,通过用户提供的键可以查询到其对应的具体值。类似如下:
|
|
于是尽可以通过元数据对应的 Key 以及各个需要的域,查询到具体的值。Redis 为此还提供了 HMGET
命令方便用户一次性查询多个域的内容。优点是直接使用了 Redis 的原生数据结构,速度较快且直观;缺点是这些返回的值基本上都是字符串类型,需要手动进行类型转换。
除了使用 HASH
外,@xuanwo 提到可以存储用 bincode
序列化的内容。只需要让表示元数据的结构体支持序列化和反序列化,通过 serde
和 bincode
,即可实现更方便的从原始 rust 结构体与外部数据间的编解码。届时先编码然后存储为 Redis 的字符串类型即可。类似于:
|
|
|
|
最后经过测试,发现两者的具体速度其实相差非常小。但是由于直接使用编解码的方案可以直接依靠 serde
进行序列化和反序列化工作而不用自己搞错误处理,非常地舒适,于是决定采用后者。
除此之外,初步进行了一些实现上的工作。
生活
返校报到
收拾一天行李,然后返校在学校里面折腾到晚上8点收拾完自己的东西。到了快9点帮同学搬了8大件的行李——为啥女生的行李可以这么多啊!💢
在返校后的几天跟学长去见了导师。导师神采奕奕,嗓音圆润厚重地跟我们一行人尬聊了45秒。我导嘿嘿一笑,指定了同届的另一个同学做助教,还是没给我们指派具体科研任务,可以继续专心实习。
与 Rinchannowww 胜利会师,交流了一些关于 rw labs、databend 的一些坑、未来去处和家里拥有63套房子的烦恼方面的事情。
在图书馆借来了《MariaDB 原理与实现》、《共同的底线》,打算这个月看看。
防疫
形式主义,满满当当。可以感受到学生和学校之间的紧张气氛。
游戏
Apex 上白银 II 了,我的准度每天都在进步!周末的晚上有时间就试试练习滚轮跳吧。
俄乌局势
乌克兰方面获得了从未料想到的大捷。这场战役是要载入史册的。
攻守之势易也。