<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>QuickStart - 标签 - Victor's Code Journey</title><link>http://www.victorchu.info/tags/quickstart/</link><description>QuickStart - 标签 - Victor's Code Journey</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>victorchu0610@outlook.com (victorchutian)</managingEditor><webMaster>victorchu0610@outlook.com (victorchutian)</webMaster><lastBuildDate>Wed, 30 Nov 2022 16:35:59 +0800</lastBuildDate><atom:link href="http://www.victorchu.info/tags/quickstart/" rel="self" type="application/rss+xml"/><item><title>Trino源码学习-架构Overview</title><link>http://www.victorchu.info/posts/2022/11/4aaf9f12/</link><pubDate>Wed, 30 Nov 2022 16:35:59 +0800</pubDate><author><name>victorchutian</name></author><guid>http://www.victorchu.info/posts/2022/11/4aaf9f12/</guid><description><![CDATA[<div class="featured-image">
                <img src="/feature-images/trino.webp" referrerpolicy="no-referrer">
            </div><p>Trino 是一种旨在使用分布式查询高效查询大量数据的工具。通常用在数据仓储、数据分析、海量数据聚合和报表生成等任务上，这些任务通常被归类为联机分析处理(online analytical processing，OLAP)。</p>]]></description></item><item><title>Apache Calcite Quick Start</title><link>http://www.victorchu.info/posts/2022/01/351c6aee/</link><pubDate>Thu, 06 Jan 2022 10:54:14 +0800</pubDate><author><name>victorchutian</name></author><guid>http://www.victorchu.info/posts/2022/01/351c6aee/</guid><description><![CDATA[<div class="featured-image">
                <img src="/feature-images/calcite.webp" referrerpolicy="no-referrer">
            </div><p>Apache Calcite是一个动态的数据管理框架，从功能上看它有很多数据库管理系统的典型功能，比如 SQL 解析、SQL 校验、SQL 查询优化、SQL 生成、数据连接查询等等，但省略了一些关键功能：数据存储，处理数据的算法以及用于存储元数据的存储库。从另一方面看，正因为 Calcite  这种与数据处理和存储的无关的设计，才使它成为在多个数据源和数据处理引擎之间进行协调的绝佳选择。它也是构建数据库的完美基础：只需添加数据即可。</p>
<p>Calcite 的主要功能是 SQL 语法解析(parse)和优化(optimazation)。首先它会把 SQL 语句解析成抽象语法树（AST Abstract Syntax Tree），并基于一定规则或成本对 AST 的算法与关系进行优化，最后推给各个数据处理引擎进行执行。</p>
<p>一般来说 Calcite 解析 SQL 有下面几步:</p>
<p><img class="tw-inline" loading="lazy" src='/posts/2022/01/351c6aee/fig1.webp'    height="384" width="418"></p>
<ol>
<li>解析（Parser），Calcite 通过Java CC 将 SQL 解析成未经校验的的 AST</li>
<li>验证（Validate），该步主要作用是校验上一步中的 AST 是否合法，比如如验证 SQL scheme、字段、函数等是否存在，SQL 语句是否合法等等，此步完成之后就生成了 RelNode 树。</li>
<li>优化（Optimize），该步主要作用是优化 RelNode 树，把它转化成物理执行计划。涉及的 SQL 规则优化一般有两种：基于规则的优化（RBO）、基于成本的优化（CBO）这一步原则上说是可选的，经过 Validate 后的 RelNode 树实际就可以直接转化物理执行计划，但现代的 SQL 解析器基本上都有这一步，目的是优化 SQL 执行计划。该步骤得到的结果是物理执行计划。</li>
<li>执行（Execute），这一步主要做的是把物理执行计划转换成可在特定平台执行的程序。如 Hive 、Flink 都在此阶段将物理执行计划 CodeGen 生成相应的可执行代码。</li>
</ol>]]></description></item><item><title>数据结构简介</title><link>http://www.victorchu.info/posts/2017/11/2654109c/</link><pubDate>Mon, 13 Nov 2017 10:21:39 +0800</pubDate><author><name>victorchutian</name></author><guid>http://www.victorchu.info/posts/2017/11/2654109c/</guid><description><![CDATA[<div class="featured-image">
                <img src="/feature-images/struct.webp" referrerpolicy="no-referrer">
            </div><div class="details admonition note open">
    <div class="details-summary admonition-title">
        <span class="icon"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"/></svg></span>未完待续<span class="details-icon"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"/></svg></span>
    </div>
    <div class="details-content">
        <div class="admonition-content">持续更新中&hellip;</div></div></div>
<p>本文是数据结构的相关简介。</p>]]></description></item><item><title>算法简介</title><link>http://www.victorchu.info/posts/2017/11/2654108b/</link><pubDate>Mon, 13 Nov 2017 10:21:39 +0800</pubDate><author><name>victorchutian</name></author><guid>http://www.victorchu.info/posts/2017/11/2654108b/</guid><description><![CDATA[<div class="featured-image">
                <img src="/feature-images/algorithm.webp" referrerpolicy="no-referrer">
            </div><div class="details admonition note open">
    <div class="details-summary admonition-title">
        <span class="icon"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"/></svg></span>未完待续<span class="details-icon"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"/></svg></span>
    </div>
    <div class="details-content">
        <div class="admonition-content">持续更新中&hellip;</div></div></div>
<p>什么是算法？从一个步骤开始，按照既定的顺序执行完所有的步骤，最终结束得到结果的一个过程。</p>
<ul>
<li>确定性，算法的每个步骤都是明确的，对结果的预期也是确定的</li>
<li>有穷性，算法必须是由有限个步骤组成的过程，步骤的数量可以是几个，也可以是几百万个，但是必须有一个确定的结束条件</li>
<li>可行性，一般来说我们期望算法得出的是正确的结果，这意味着算法的每个步骤都是可行的，只要有一个步骤不可行，算法就是失败的，或者不能被称为某种算法。</li>
<li>输入和输出，算法总是要解决特定的问题，问题的来源就是算法的输入，期望的结果就是算法的输出。</li>
</ul>
<p><code>程序 = 算法+ 数据结构.</code></p>
<p>将问题抽象为数学模型，输入输出方法和算法步骤是编写计算机算法程序的三大关键要素。对于非常复杂的问题，建立数学模型是很困难的事情，但是对简单的计算机算法而言，建立数学模型实际上就是设计合适的数据结构的问题，同时，输入输出方式和算法步骤的设计都是基于相应的数据结构设计的。</p>]]></description></item></channel></rss>