Home

Calcite-4:代码生成与编译

1. Csv表 之前记录了 Calcite 的架构和简化后的代码流程,这篇笔记回归下最开始Tutorial笔记里的 Csv 表,仿照写了一个可以 Debug 的例子(TutorialTest.scala): val csvPath = getClass.getClassLoader.getResource("sales_from_calcite_sources").getPath // val csvSchema = new CsvSchema(new File(csvPath), CsvTable.Flavor.SCANNABLE) val csvSchema = new CsvSchema(new File(csvPath), CsvTable.Flavor.TRAN...

Read more

Calcite-3:处理流程的代码例子

单纯看Calcite-2里的架构图理解不深,这篇笔记通过代码示例补充下 SqlParser、SqlValiator、SqlToRelConverter 等的处理流程。 实现主要参考了1和源码单测里的CsvTest,使用 Book & Author 表,查询 SQL 跟关系代数里基本一致以方便前后对比,完整的代码可以参考CalciteProcessSteps.scala 1. SqlParser val query = """SELECT b.id, | b.title, | b.publish_year, | a.fname, | a.lname ...

Read more

Calcite-2:关系代数、架构与处理流程

了解关系代数有助于从逻辑或者各类名词上理解 Calciate,惭愧的是我只记得学过高等代数、抽象代数,好在看了下影响不大,其实从使用关系数据库的时候就已经潜移默化的有这些概念了。 1. Relational Algebra Relational algebra is at the heart of Calcite. 关系代数是跟 SQL 一一对应的,一条 SQL 查询语句,可以转换为一个由关系运算符组成的树。这么说可能有些读者没有准确的概念,举两个例子说明: 比如上一篇笔记里的 SQL: SELECT name FROM EMPS WHERE EMPNO = 1 转化成关系代数: π name σ empno = 1 emps 图形化的结果: 其中 ...

Read more

Calcite-1:Tutorial

最开始了解 Calcite 的时候,印象最深的是众多名词。而由于 Calcite 的定位,其应用方式又多种多样,所以有一种以为看懂了,却还是不知道如何应用的感觉。这篇笔记,记录下我对 Calcite 的理解。 1. 背景 2005年,Michael Stonebraker 发表了“One size fits all” is an idea whose time has come and gone,即传统关系型数据库一招吃遍天的时代过去了。 事实证明确实如此,随着数据量的增长,各种数据库层出不穷,各有所长。除非硬件突破,短时间内我们也很难看到一统江湖(One size fits all)的局面。 2015年,Julian Hyde 在 XLDB 上做了一次演讲,题为Apache ...

Read more

数据湖笔记之一:Z-Order

Z-order curve,1966年就已经在应用了。但是在大数据崭露头角,似乎才是这几年的事情。最近看了数据湖的一些技术,想从细处着手,介绍下我理解的 Z-Order. 1. 背景 Z-Order 在地图的场景中应用非常常见,比如查找地图上某个点附近的信息。 假定我们的地图数据里有 N 个点,记录了对应的位置坐标(经纬度)、id、名称、信息等,要查找当前坐标附近 10 公里内的餐馆。最朴素的想法就是计算所有餐馆跟当前位置的距离,过滤 <= 10 公里的结果。不过数据量大肯定不行,太多的冗余计算了。 按照我的理解,坐标轴天然是递增的,所以二分法是一个不错的解决方案:如果在一维世界(x维度),创建一个 x->id 的辅助数组,性能足够。类比到二维世界(x、y维度),通...

Read more

事莫明于有效,论莫定于有证-读《置身事内》

对我来讲,历史变的有意思,不是看《明朝那些事儿》、混子哥的漫画读历史系列,虽然这些书确实很有趣。历史从一条条死记硬背的纪年事件,变得鲜活生动引人思考,是在看了《万历十五年》之后,通过一个个事件,看到背后的人。 看了《置身事内》,有一种似曾相识的感觉,政策制度的制定和执行,从来不是机械的,而是人跟人之间的协商和妥协,利益的冲突和解决。 这本书的大纲,分为上下两篇: 上篇解释微观机制,包括地方政府的基本事务、收入、支出、土地融资和开发、投资和债务等 下篇解释这些微观行为对宏观现象的影响,包括城市化和工业化、房价、地区差异、债务风险、国内经济结构失衡、国际贸易冲突等 作者没有引用一堆看不懂的名词,没有故作高深的预测,也没有强调宏大的构思,但是却详细的分析了政策的变化、时事...

Read more

世事洞明皆学问,人情练达即文章-读《伊索寓言》

想读这本书,是因为之前在读毛泽东传和林肯传时都提到了伟人读书的爱好: 毛泽东一直在读《伊索寓言》,在“善有恶报”中发现了冷酷无情的逻辑。农夫发现一条冻僵了的蛇。农夫可怜他,把它揣在怀里。这条蛇由于温暖而复苏,又恢复了通常的脾性,咬了可怜的农夫。 《伊索寓言》的讽刺与幽默让他对人性的弱点有了更深刻的认识,也对他的情商产生了深远的影响。 当时就很好奇,这里面的小故事,小学课本里就有,简单易懂,里面有什么魔力? 注:《伊索寓言》有很多个版本,我是从微信读书上找的,可惜在豆瓣读书上没有找到对应的链接。 1. 看山还是山,看水还是水 寓言大多简单易懂,有的小故事我们耳熟能详,譬如《吃不到葡萄就说葡萄酸》的故事:狐狸🦊发现了葡萄林,上面结满了一串串水灵灵的🍇,于是狐狸想...

Read more

人、社会、法律-读《消失的13级台阶》

第一次看到一本小说居然引用了这么多参考文献,作者的严谨程度可见一般。 1. 人、社会、法律 很多推理小说,除了缜密的故事情节让人大呼叫好,故事本身也有着对社会的思考,比如东野圭吾《分身》里对于克隆技术、《恶意》里对于人性,《消失的13级台阶》这本书里思考的是法律-死刑。读书就像看电影一样,精彩的故事情节固然让人沉浸其中,更多的思考会让人意犹未尽二刷多刷,正所谓“好书不厌百回读,熟读深思子自知”。 我们相信“法网恢恢疏而不漏”,也会看到“法律这张网,太小的从网眼里溜走了,太大的网不住”的言论。社会在进步,法律也不断完善,然而手持法律武器的终究是人。 举几个摘抄的书里的原话: 检察官都是通过了司法考试的精英,是一些不交流感情、只将法律作为武器宣扬正义的人。 人在正...

Read more