clickhouse 简单走读
[toc]
[toc]
[toc]
我看到了infiniband,RDMA没钱上不了,落地先别想了。就是类似ramcloud看看架构
但没有文件,纯内存的。我找了半天没找到文件操作。应该是没有的。因为如果一直append 文件空洞问题页没有考虑
里面的log概念类似操作记录,是内存的,基于page。但没有把page刷入磁盘的动作以及管理地址
重点在内存管理,scan阶段优化
[toc]
看tag知内容 [toc]
代码链接 https://github.com/DolevAdas/Jiffy
talk https://www.youtube.com/watch?v=IO7ju-CEkNs
论文 https://export.arxiv.org/pdf/2010.14189.pdf#view=fitH&toolbar=1
需要安装numctl
yum install numactl-devel
ramcloud是一个典型的KV表格结构
针对这个表格,引入了很多设计,也有很多论文。这里整理列出这个文章
[toc]
看tag知内容
CMU技术分享
Noria Fast Materialized Views for Fast Websites
这个在monringpaper有提到过,最近又在cmu有techtalk
避免不了解,先看一下文档预习一下概念
看不懂有中文翻译
代码这里 https://github.com/mit-pdos/noria-mysql
https://github.com/mit-pdos/noria/
CMU技术分享
MonetDB: Scale Up Before You Scale Out (Martin Kersten)
项目地址 https://github.com/MonetDB/MonetDB
看这个视频之前首先要了解 列式存储(Column-oriented Storage) 以及对MonetDB的论文有一点了解
这里建议看 https://zhuanlan.zhihu.com/p/35622907
和 https://zhuanlan.zhihu.com/p/376227899
正文中我也会把这两篇文章的内容摘抄一部分,先行致谢
转自极客时间-左耳听风-《高效学习》系列整理
关于书/文档和代码的关系:
代码是具体的实现,但是并不能告诉你为什么?书和文档是人对人说的话,代码是人对机器说的话:
至于从代码中收获大还是从书中收获大,不同的场景、不同的目的下,会有不同的答案,我个人对这部分的想法是:
关于如何阅读源代码,耗子叔分享了一些干货,我这里简单总结一下
首先是阅读代码之前,最好先有以下了解:
接下来,就是详细地看代码的实现,这里耗子叔分享了一个源代码阅读的经验:
接口抽象定义:任何代码都会有很多接口或抽象定义,其描述了代码需要处理的数据结构或者业务实体,以及它们之间的关系,理清楚这些关系是非常重要的;
模块粘合层:我们的代码有很多都是用来粘合代码的,比如中间件(middleware)、Promises 模式、回调(Callback)、代理委托、依赖注入等。这些代码模块间的粘合技术是非常重要的,因为它们会把本来平铺直述的代码给分裂开来,让你不容易看明白它们的关系;
业务流程:这是代码运行的过程。一开始,我们不要进入细节,但需要在高层搞清楚整个业务的流程是什么样的,在这个流程中,数据是怎么被传递和处理的。一般来说,我们需要画程序流程图或者时序处理图;
具体实现
:了解上述的三个方面的内容,相信你对整个代码的框架和逻辑已经有了总体认识。这个时候,你就可以深入细节,开始阅读具体实现的代码了。对于代码的具体实现,一般来说,你需要知道下面一些事实,这样有助于你在阅读代码时找到重点。
运行时调试:很多时候,代码只有运行起来了,才能知道具体发生了什么事,所以,我们让代码运行进来,然后用日志也好,debug 设置断点跟踪也好。实际看一下代码的运行过程,是了解代码的一种很好的方式。
总结一下,阅读代码的方法如下。
另外这里也有个见解 https://www.codedump.info/post/20200605-how-to-read-code-v2020/ 兼听则明