<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>生活随想 on roseduan</title><link>https://blog.roseduan.cn/categories/%E7%94%9F%E6%B4%BB%E9%9A%8F%E6%83%B3/</link><description>Recent content in 生活随想 on roseduan</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 23 Nov 2023 14:23:11 +0000</lastBuildDate><atom:link href="https://blog.roseduan.cn/categories/%E7%94%9F%E6%B4%BB%E9%9A%8F%E6%83%B3/index.xml" rel="self" type="application/rss+xml"/><item><title>我的 2023 年，关于工作、开源、副业</title><link>https://blog.roseduan.cn/p/%E6%88%91%E7%9A%84-2023-%E5%B9%B4%E5%85%B3%E4%BA%8E%E5%B7%A5%E4%BD%9C%E5%BC%80%E6%BA%90%E5%89%AF%E4%B8%9A/</link><pubDate>Thu, 23 Nov 2023 14:23:11 +0000</pubDate><guid>https://blog.roseduan.cn/p/%E6%88%91%E7%9A%84-2023-%E5%B9%B4%E5%85%B3%E4%BA%8E%E5%B7%A5%E4%BD%9C%E5%BC%80%E6%BA%90%E5%89%AF%E4%B8%9A/</guid><description>&lt;h2 id="工作"&gt;&lt;strong&gt;工作&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;去年六月份加入到现在的公司，目前已经一年多了，今年全年的时间，逐步深入的参与到数据库内核的一些 feature 开发中来，做了非常多的事情，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持数据库中的并发创建索引（Create Index Concurrently 和 Reindex Concurrently），主要是参考了 Postgres 的做法，达到的基本效果是在索引创建和重建期间，不阻塞数据表的 DML 操作&lt;/li&gt;
&lt;li&gt;为数据库引入了 pgvector 和 kafka fdw 插件，支持向量搜索和 Kafka 外部数据源&lt;/li&gt;
&lt;li&gt;还有一个重要的工作，在数据库中新增了 Create/Alter/Drop Task 的功能，主要是支持定时任务的执行&lt;/li&gt;
&lt;li&gt;当然还有最重要的，今年下半年开始参与，也是目前还在进行中的，那就是参与到公司数据库产品的存算分离中来，我们对传统的基于 Postgres 的 MPP 数据库的架构进行了大幅的调整，原来的 Postgres 进程充当了计算节点，不存储数据，支持计算集群 warehouse 的创建、水平扩展、高可用；将元数据进行了拆分，数据存储部分进行了全新设计，接入了对象存储，支持多种文件存储格式。&lt;/li&gt;
&lt;li&gt;目前也在设计和开发云原生架构下的一个重要功能，那就是 Time Travel， 支持访问一个数据表的任意时刻的历史数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;总体来说，相较于去年，在内核方面有了更多的积累，当然数据库内核本身非常庞大、复杂、对技术能力要求较高，想要继续深入，需要花费不少的时间，希望在明年能够投入更多的时间去研究。&lt;/p&gt;
&lt;p&gt;也非常感激我现在的 Team Leader，虽然他平时各种繁杂事务缠身，但总是耐心地给了我很多的帮助，不遗余力的引导我去解决工作中遇到的一些难题。&lt;/p&gt;
&lt;h2 id="开源"&gt;&lt;strong&gt;开源&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;今年在开源项目的运营方面，时间主要集中在年中的几个月，虽然投入精力比较有限，但是做出的改动却非常大。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic4.zhimg.com/80/v2-11d2a4239344002edf53be1c9a3b120f_1440w.webp"
loading="lazy"
alt="img"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://link.zhihu.com/?target=https%3A//github.com/rosedblabs/rosedb" target="_blank" rel="noopener"
&gt;rosedb&lt;/a&gt; 开始进入全新的 V2 版本，这主要是由于自己在数据库方面积累的知识越多，不得不重新开始审视自己之前做过的事情。 发现了很多 rosedb 之前的一些问题，并进行了一次大的重构。&lt;/p&gt;
&lt;p&gt;主要是将原来 rosedb 之上的 Redis 数据结构的支持去掉了，并且重写了数据文件部分，目前 rosedb 专注于成为一个轻量级的 KV 存储引擎。&lt;/p&gt;
&lt;p&gt;今年也收获了一些用户，开始有人将 rosedb 部署到生产环境中使用，看到自己写出的项目能够去解决实际的问题，是一种很不错的感觉。 star 数从去年的 3.5k 涨到了现在的 4.2k：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic2.zhimg.com/80/v2-238c63987a2dcde83e6ae34e259e1465_1440w.webp"
loading="lazy"
alt="img"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://link.zhihu.com/?target=https%3A//github.com/lotusdblabs/lotusdb" target="_blank" rel="noopener"
&gt;LotusDB&lt;/a&gt; 也一样，将原来的架构进行了大刀阔斧的改造，基本是完全重写了一遍，也发布了 V2 版本。&lt;/p&gt;
&lt;p&gt;由于个人的精力有限，LotusDB 的重构工作，是在和两位社区小伙伴的共同努力下完成的。&lt;/p&gt;
&lt;p&gt;LotusDB 的 star 也从去年的 1k 到现在的 1.9k，基本上翻了一倍。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic2.zhimg.com/80/v2-1207c7ab2e440f08d160f9005b8b6151_1440w.webp"
loading="lazy"
alt="img"
&gt;&lt;/p&gt;
&lt;p&gt;明年针对 LotusDB 项目，我会打算组织团队运营，制定一些规范化的开发流程、文档、Release 日志、CI、Code Review 等等，就算做慢一点也没关系，主要是能够持续的运营下去。&lt;/p&gt;
&lt;p&gt;今年也开源了两个新的项目，都是在重构 rosedb 和 LotusDB 的时候，抽取了一些通用的组件开发然后开源的。&lt;/p&gt;
&lt;p&gt;一个是 WAL，Write Ahead Log，也就是预写日志，写这个组件的时候，是在重构 rosedb 期间，考虑到写日志是一个通用的需求，不仅 rosedb 会用到，LotusDB 也会用到，其他的基于 LSM 或者 Bitcask 的存储引擎，可能都会有这个需求。&lt;/p&gt;
&lt;p&gt;于是我在五一假期期间，花了几个小时，写出了一个最初的版本开源了出去，后面也是按照实际需求在更新这个项目。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic3.zhimg.com/80/v2-fa69871e9b060cb4dbae08284e9da43e_1440w.webp"
loading="lazy"
alt="img"
&gt;&lt;/p&gt;
&lt;p&gt;第二个是 diskhash，基于磁盘的哈希表，主要考虑到像 Bitcask 这种存储引擎，重启的时候需要去全量加载索引，数据量很大的话重启很耗时，于是我开发了基于磁盘的哈希索引结构，花了某个周末的一天时间开发然后开源。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic3.zhimg.com/80/v2-c2c268a8edc36dce7d795c2df2e3e78a_1440w.webp"
loading="lazy"
alt="img"
&gt;&lt;/p&gt;
&lt;p&gt;但是后面并没有接入到 rosedb 中，因为改造起来比较繁琐，比我预想的麻烦得多，而且想到 rosedb 的定位，还是让它专注成为一个轻量、适合少量数据的引擎。&lt;/p&gt;
&lt;p&gt;对于大数据量就可以使用 LotusDB，于是将 diskhash 接入到了 LotusDB 里面，使其成为了目前唯一一个支持 BTree 和 Hash 双索引的 KV 数据库。&lt;/p&gt;
&lt;p&gt;在开源方面，其实今年有非常多的想法，但是无奈时间和精力有限，很多想法都搁置了。&lt;/p&gt;
&lt;p&gt;比如我重构 rosedb 的时候，将原来的 Redis 数据结构拆了出来，原本是打算出一个新的开源项目，在 KV 之上去构建 Redis 的数据结构，并且支持 Redis 协议，底层就可以接入不同的 KV，比如 RoseDB、LotusDB、Pebble、Badger 等等，但是一直没时间去继续推进。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic1.zhimg.com/80/v2-74761627dfa2afe6f0f15c5b9095d6d0_1440w.webp"
loading="lazy"
alt="img"
&gt;&lt;/p&gt;
&lt;p&gt;还有一个想法是基于 LotusDB 做一个搜索引擎项目，主要是对一个现有的项目进行改造，并且更换存储引擎，但是也搁置了。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic3.zhimg.com/80/v2-7fcbac58f1d165835a1ebbb078f8c62a_1440w.webp"
loading="lazy"
alt="img"
&gt;&lt;/p&gt;
&lt;p&gt;还有其他的一些事情，比如写一个 Rust 的版本 WAL，运营 LotusDB 公众号，都因为没有太多的时间投入而全都搁置。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic3.zhimg.com/80/v2-68c117c1d37da34cacc49fdfc6b2c57e_1440w.webp"
loading="lazy"
alt="img"
&gt;&lt;/p&gt;
&lt;p&gt;这些事情看明年的具体情况去抽取一些继续做了，如果有同学有兴趣做这些项目的话，可以联系我，我会给与你帮助与支持。&lt;/p&gt;
&lt;h2 id="教程"&gt;&lt;strong&gt;教程&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;今年还写了两个教程（付费），一个是《从零实现 KV 存储》。&lt;/p&gt;
&lt;p&gt;主要是将我过去这几年，在存储引擎方面的知识进行了总结和回顾，并且从零开始，实现了一个兼容 Redis 数据结构和 Redis 协议的数据库，当然这个项目主要是出于教学的目的。&lt;/p&gt;
&lt;p&gt;教程也帮助到了非常多的人，有的人拿去面试，获得了不错的 offer，有的人将学到的项目进行增强完善，开源出去也获得了成百上千 star，给自己的履历增加了一个很大的亮点。&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://w02agegxg3.feishu.cn/docx/Ktp3dBGl9oHdbOxbjUWcGdSnn3gw02agegxg3.feishu.cn" target="_blank" rel="noopener"
&gt;https://w02agegxg3.feishu.cn/docx/Ktp3dBGl9oHdbOxbjUWcGdSnn3gw02agegxg3.feishu.cn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第二个教程是《从零实现分布式 KV》，和知名博主「青藤木鸟」进行合作，将自己之前的分布式相关的经验进行了系统的总结，并且基于 MIT 6824 课程，专注于代码实现层面。&lt;/p&gt;
&lt;p&gt;对我自己来说也是一次总结输出，也希望这个教程能够帮助到更多的人，特别是这几年互联网就业环境非常不理想的情况之下。&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://av6huf2e1k.feishu.cn/docx/JCssdlgF4oRADcxxLqncPpRCn5bav6huf2e1k.feishu.cn" target="_blank" rel="noopener"
&gt;https://av6huf2e1k.feishu.cn/docx/JCssdlgF4oRADcxxLqncPpRCn5bav6huf2e1k.feishu.cn&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;好了，这就是我在 2023 年做的一些事情，目前毕业已经四年多了，虽然做了不少自己感兴趣的事儿，但是对一些事情仍然感觉到迷茫、疑惑，甚至焦虑，或许这是人生之路上无法避免的吧。&lt;/p&gt;</description></item><item><title>2022 年小结</title><link>https://blog.roseduan.cn/p/2022-%E5%B9%B4%E5%B0%8F%E7%BB%93/</link><pubDate>Sat, 14 Jan 2023 14:23:11 +0000</pubDate><guid>https://blog.roseduan.cn/p/2022-%E5%B9%B4%E5%B0%8F%E7%BB%93/</guid><description>&lt;h2 id="澳网"&gt;澳网
&lt;/h2&gt;&lt;p&gt;2022 的年初是美好的，因为纳达尔在澳网夺冠了，为这一刻，我等待了十年。从 2012 年开始关注纳达尔，见证了他的一个又一个巅峰，其实从 2010 年之后，纳达尔的大满贯全都是法网和美网了，澳网和温网总是望尘莫及，于是我特别的期待他能够再拿一次澳网（温网概率太小了）。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic4.zhimg.com/80/v2-17b74d68f3f923a161b609e54a083f33_1440w.webp"
loading="lazy"
alt="image"
&gt;&lt;/p&gt;
&lt;p&gt;其实扪心自问，为什么如此喜欢纳达尔？我也没有明确的原因，可能他满足了自己内心幻想的那个少年吧。&lt;/p&gt;
&lt;p&gt;每个人的内心或许都藏着另一个自己，这个自己可能跟现实中的完全不一样，现实中的我们，可能羞怯、懦弱、自卑，但是幻想中的自己，我们会变得勇敢、无畏、骄傲。&lt;/p&gt;
&lt;p&gt;我特别喜欢纳达尔年轻的时候，留着一头长发，穿着一身海盗衫，风度翩翩，青春无敌，那是最好的时代。&lt;/p&gt;
&lt;p&gt;只可惜，网球在国内太小众，身边几乎没什么人关注，2022 年澳网夺冠的这一份喜悦，只能自己一个人享受。&lt;/p&gt;
&lt;h2 id="封闭"&gt;封闭
&lt;/h2&gt;&lt;p&gt;上海的 3 月~ 6 月是魔幻的，最开始身边住得远一些的同事都申请居家了，后来公司通知全部居家，当时想应该只是日常的疫情反复，没几天就过去了。&lt;/p&gt;
&lt;p&gt;居家期间小区通知会封闭两天，让我们自己出去采购物资，谁知这是三个月内的最后一次出小区。&lt;/p&gt;
&lt;p&gt;从那时起，第一次感觉到基本生存都受到了威胁，每顿饭都得省着点吃，希望能多撑几天，一些物资比如纸巾、饮用水也是省着用。每天早上六点多，在睡眼朦胧中打开手机 APP 抢菜，而且大概率还是抢不到的。&lt;/p&gt;
&lt;p&gt;其实对于孤身在外的年轻人还好，可以用 APP 抢，和邻居交换等等，但想想那些上有老下有小的，或者生病的人，还有线下实体行业的从业人员，他们有些人所背负的压力是巨大的，社区的物资救济只是杯水车薪，很多人可能因此而崩溃。&lt;/p&gt;
&lt;p&gt;最后总算是熬过来了，当然这个城市和每个人都付出了巨大的代价。&lt;/p&gt;
&lt;p&gt;这是一段不应该被遗忘的历史。&lt;/p&gt;
&lt;h2 id="工作"&gt;工作
&lt;/h2&gt;&lt;p&gt;上海 6 月解封后，入职了一家新的公司，辗转到了数据库行业，看似是巧合，却又像是水到渠成，从最开始写业务，到业余时间折腾存储引擎，到转入公司的基础架构做分布式存储，然后到数据库。&lt;/p&gt;
&lt;p&gt;工作内容和我所想象的还是不太一样，更加的有难度，产品是基于开源的 greenplum 数据库，会更多的研究 PostgreSQL 的源码，这期间还因为工作所需学习并使用了 Rust 语言。&lt;/p&gt;
&lt;p&gt;我很看好也比较喜欢 Rust，今年应该会投入更多的时间学习并实践。还是希望能够在数据库领域有更多的沉淀吧，毕业的这三年多，做的事情很杂乱，接触的编程语言也很多，但是没有深入到某个领域去研究，对于职业生涯的长期发展感觉还是不太好的。&lt;/p&gt;
&lt;p&gt;数据库行业这两年挺火热，但后面会如何发展却不得而知，在这个垂直领域，想要在几百家公司中生存下来，还是有挑战的。都说选择比努力更重要，但是我们又如何在最开始的时候验证自己的选择呢，或许身在局中的我们，只能尽力而为，去相信自己的选择。&lt;/p&gt;
&lt;h2 id="运营"&gt;运营
&lt;/h2&gt;&lt;p&gt;在开源项目这方面，今年投入的精力有限，一是因为上半年封控期间，居家办公效率比较低，精力消耗严重；二是下半年换了工作，更多的时间花在了工作方面，毕竟对数据库的一些基础还是不太熟悉的。&lt;/p&gt;
&lt;p&gt;Github 从 6 月份开始基本上就没更新了：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic1.zhimg.com/80/v2-516d769c5e437d8575938c38c82d7c74_1440w.webp"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;两个项目的状态：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://pic2.zhimg.com/80/v2-7ad379b3126a35ae2e08409be7eaaaed_1440w.webp"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;今年不知道有没有时间去驱动这两个开源项目了，感觉项目功能方面已经不会有太大的改变了，定位还是很简单的 KV 存储引擎，或许应该可以在易用性、文档建设等方面着手，降低使用者的门槛。&lt;/p&gt;
&lt;p&gt;知乎在下半年也几乎没有更新了。&lt;/p&gt;
&lt;p&gt;公众号这段时间主要更新了 CMU-15445 的学习笔记，这是入门数据库的必学课程了，后续应该会坚持更新完毕，其他还有一些职场、生活感悟相关的文章。&lt;/p&gt;
&lt;h2 id="感情"&gt;感情
&lt;/h2&gt;&lt;p&gt;因为一些机缘巧合，遇到了一个对的人，经历了这魔幻的 2022 年，这是最幸运的事情，我特别喜欢一句诗：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;草在结它的种子&lt;/p&gt;
&lt;p&gt;风在摇它的叶子&lt;/p&gt;
&lt;p&gt;我们站着 不说话&lt;/p&gt;
&lt;p&gt;就十分美好&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这是我期待的爱情最好的模样，谢谢你让我感受到这种美好。&lt;/p&gt;
&lt;h2 id="新冠"&gt;新冠
&lt;/h2&gt;&lt;p&gt;在 12 月中旬加入了“小阳人”的大军，这是无法避免的，新冠三年恰好贯穿了自己毕业后的这三年，经历了太多的辛酸苦辣，幸好这一切都慢慢结束了。&lt;/p&gt;
&lt;p&gt;在历史的潮流中，在这个环境下，有时候我们真的是身不由己，我们更多的只是被动的接受，无法参与到历史的抉择之中去，很多人可能会像我一样在心理上备受煎熬。&lt;/p&gt;
&lt;p&gt;但无论怎样，还是要努力的生活，希望可以慢慢恢复到正常的状态，2023 年大家一起加油！&lt;/p&gt;</description></item></channel></rss>