关于结构化数据存储:下一个十年我们需要一款什么样的分析型数据库

本文来自于 Doris Summit 2022 演讲实录,演讲人:陈明雨 十年对于数据库意味着什么?身处在突飞猛进的时代,咱们见惯了技术的衰亡与凋敝、变迁与衰败,甚至是朝荣夕灭。信息技术以前所未有的速度更迭,给周遭事物带来了颠覆性地变动。数据库亦是如此,有数数据库悄悄埋没在技术更迭的浪潮里,直到在浩渺如海的代码片段中都找不到些许印记。而有的则历久而弥新,禁受了工夫的考验,彰显出弱小的生命力,并以更加枯萎的姿势扎根成长。 十年对于数据库而言,可能是一段从诞生到消失的残缺软件生命周期,也可能是迈过里程碑之后的全新旅程。 所以从 MySQL 1.0 版本诞生,到具备颠覆性意义的 MySQL 5.7 版本正式公布,时间跨度刚好是十年,而十年之后的故事,大家曾经都晓得了。 所以从 Benoit、Thierry、Marcin 联结创立 Snowflake,到在纽交所胜利上市、成为软件行业有史以来最大规模的IPO,再到全面开启云数据仓库时代,时间跨度也差不多十年。 而对于 Apache Doris,十年意味着什么? 留个悬念,在答复这个问题之前,咱们无妨来回顾下社区倒退历程。 只管最早的历史能够追溯到 2008 年的百度凤巢广告零碎,但彼时非 SQL 的单机查问引擎加 KV 存储系统在产品状态上与 OLAP 还有着较大的差别。 正式确立 OLAP 数据库这一状态是在 2013 年。通过自研全列式存储引擎 OLAP Engine 并基于 Apache Impala 革新了全新的 MPP 查问引擎,自此,Doris 真正成为了具备大数据量下高效反对数据分析能力的 OLAP 数据库,并在百度外部大规模利用,成为了百度外部对立的 OLAP 剖析平台。 往往一个外部我的项目的倒退会有两种演进模式,一种是随着需要的减少零碎架构日益臃肿,当面对较为灵便的需要,常因改变老本过大而被彻底重构。另一种则是长期服务某一固定场景、需要逐步收敛乃至停滞,最终被疾速变革的内部技术彻底取代。而开源则是外部我的项目的一场新生,在更广大的利用场景、更多样的开发者群体以及更高效的研发模式加持下开启新的篇章。 于是在数个版本的迭代与优化后,2017年 Doris 的前身在 GitHub 上开源,2018 年进入 Apache 基金会孵化,并正式更名为 Apache Doris。(GitHub 地址:https://github.com/apache/doris) 时至 2022 年,正是 Apache Doris 在 OLAP 畛域深耕的十年之际。 ...

January 10, 2023 · 3 min · jiezi

关于结构化数据存储:稳定性之故障应急处理流程

简介: 只管能够通过稳定性体系建设,来避免出现生产系统故障。然而依然无奈彻底防止一点危险都不会产生,当稳定性危险产生后,怎么疾速协调组织,缩短故障时长,迷信的流程呢? 作者 | 金喜起源 | 阿里技术公众号 一 概述只管咱们能够通过稳定性体系建设,来避免出现生产系统故障。然而依然无奈彻底防止一点危险都不会产生,当稳定性危险产生后,怎么疾速协调组织,缩短故障时长,迷信的流程就十分重要了。 好在咱们当初就开始思考的话,咱们还有短缺的工夫去设计各个环节,并让参加的同学充沛的锤炼,从而做到训练有素,为故障复原争取贵重的工夫。 二 结构化问题解决对于问题解决有很多结构化解决办法,尤其是各种业余的征询公司,这些流程值得咱们借鉴。联合软件系统的生产环境故障来形容的话,一个典型的结构化问题解决步骤如下: 问题定义:清晰的形容问题景象、影响,其中影响要尽量量化。例如xx时xx分开始,xx服务异样,成功率从99%上涨到90%。长期解决:基于预案的长期解决方案和施行后果,包含符合条件的预案执行,或者利用公布过程中呈现的异样后立刻回滚。剖析问题起因:联合已知因素,找到问题的根本原因。制订解决方案。施行解决方案。标准化解决方案:将解决方案标准化,触类旁通,防止同类问题持续产生。生产环境中,呈现突发异样时候,咱们第一优先的是思考怎么疾速复原服务,因而本文中重点介绍下面流程中后面2个步骤。 另外,问题解决里,沟通是贯通在整个流程里的。须要在各个环节都做好充沛的沟通。 三 要害角色突发异样的状况都各有不同,很难有一个齐全对立而且颗粒度很细的规范流程,然而能够提前约定好几个要害角色,定义角色的作用和要害动作,来晋升合作效率。 次要包含这些角色: 指挥员:负责组织和协调故障疾速复原、故障群里通报相干停顿。通讯员:负责收集、记录要害信息,并在故障群等渠道跟相干团队沟通。快恢负责人:依据故障景象、监控大盘,决策并执行预案。问题诊断负责人:定位故障根本原因,当快恢不起作用的话,该角色至关重要。以下是各个角色的详细描述。 1 指挥员 指挥员的抉择 第一接警人:默认第一个收到告警、投诉反馈的技术人员作为指挥员。第一接警人判断是否可能指挥,或者是否有本人相熟且充沛演练的预案可用,如果能够则立刻复原服务,否则分割专职指挥员接手。在专职指挥员接手之前,第一接警人就是默认的指挥员。专职指挥员:团队 Leader 和稳定性负责人是大多数危险的最佳指挥员,当应急团队建立联系后,指挥员能够交由 TL 或团队内的稳定性负责人。各级TL:当故障时长和等级持续上升后,依据理论状况会回升,由更高层级 TL 接掌指挥员角色,以协调更多资源退出。指挥员要害动作 确认问题:确定该次突发事件的景象、影响。确定角色:确定参加该次事件处理的要害角色,包含通讯员、快恢负责人、问题诊断负责人。向上沟通:让组织中要害角色通晓该问题,这样在须要时候,能够更快的调动更多人员和资源参加进来。协调:帮助快恢负责人和问题诊断负责人解决问题,在信息、领域专家等资源上给予声援。对指挥员的要求 启动:确定人员,并通过视频会议、故障群等形式建设起应急小组。后期:紧盯快恢负责人停顿,优先落地快恢,而不是剖析根本原因。当快恢不失效后,也要持续摸索可能的快恢伎俩,例如回滚近期的变更等操作。过往的故障时长没有满足1-5-10的案例中,大多数状况下都是指挥员在剖析问题根本原因,错失了快恢的最佳时机。中期:尝试大量伎俩都无奈复原服务的话,重心逐步转移到问题诊断负责人这里,找到根本原因。通常进入到这个阶段故障还没复原的话,就是大故障了,1-5-10基本上是无奈达标的。前期:组织团队持续察看,确认不会问题再复现。组织善后和复盘等工作。2 通讯员 如果故障不能在第一工夫通过预案复原的话,通讯员将会是仅次于指挥员的角色。高效组织信息收集、整顿,会让整个应急小组更快速度找到解计划。 通讯员抉择 专职通讯员:在团队内有肯定稳定性认知,而后通常又不是快恢负责人和问题诊断负责人第一人选的那个同学。其余不参加问题诊断和快恢的团队成员。通讯员要害动作 继续确认问题和通报:随着时间推移,问题的景象、影响面也在动态变化,须要定期通报(故障群、电话会议等渠道),后期要做到5分钟换一次通报,随着时间推移,前期能够改成15分钟、30分钟等距离。信息收集:依照规范模版,为该问题建设一个对立的文档,把文档链接放到群布告、故障群中。并继续将收集的要害信息更新进去。不便后续退出到应急小组的同学疾速理解上下文。收集舆情:这一点跟信息收集有重叠,之所以特别强调进去,是因为该环节通常容易被疏忽,技术同学容易陷入在技术指标中,对于舆情不足关注。对外发声:分割客服负责人,与客服团队单干,安抚客户。对通讯员要害要求 后期要快:疾速收集要害信息,黄金10分钟内要做到每分钟有信息更新,并继续通报。通报及时:好的信息通报是告知下次通报工夫,例如xx问题yy正在解决中,目前状况是zzz,xx分钟后将进行下一次通报。如果有牢靠和及时的通报,关注该问题的人只需继续注意信息通报即可,防止非专业的插手影响应急小组快速反应。分割内部声援:波及到内部依赖方的时候,例如OSS、MySQL等,通过指挥员、利用Owner等渠道通晓内部接口人的时候,及时组织内部接口人退出到应急小组中来,并向对方通报问题上下文。3 快恢负责人 咱们的冀望是所有的危险都可能通过快恢来解决,如果不能的话,也是第一工夫探讨其余可行的快恢计划(比方回滚等操作)。 快恢负责人抉择 利用Owner/外围骨干。执行过该利用预案的团队成员:咱们激励团队之间穿插执行预案,当利用Owner分割不上的时候,其他同学也能够通过预案来帮助问题复原。快恢负责人要害动作 执行快恢预案:依据问题景象,找到预案大盘,依据大盘上监控指标指引去执行相应的预案。制订其余候选复原计划:当已知快恢预案不失效时候,剖析可能的变更等因素,通过回滚等办法尝试复原。必要时候,让指挥员协调更多人进来反对。快恢负责人要害要求 以复原服务为第一优先级,问题根因剖析请交给问题诊断负责人。既定预案不能快恢,也要持续摸索其余可能的复原伎俩。4 问题诊断负责人 通常咱们不心愿这个人呈现在故障1-5-10的复原环节,然而当快恢生效并且短时间内不足无效伎俩复原服务的话,最初只能靠问题诊断负责人来找到根本原因,并制订解决方案。问题诊断负责人抉择 利用Owner/骨干:理解相干代码的人最适宜去做问题诊断。领域专家:比方网络问题,能够从团体找到该领域专家帮助参加进来。问题诊断人要害要求 依据收集的信息,找到问题根本原因。向指挥员、通讯员提出要求,把内部声援邀请退出到应急小组中。 四 最初故障应急响应是维持零碎高可用的最初一个机会,这个环节的不业余体现,对于稳固来说是最初彻底的失守。因而,跟预案演练一样,故障应急也须要重点锤炼。一些能够锤炼的机会包含: 实在的故障场景。红蓝反抗演习:与SRE联动,通过突袭形式,模仿一次故障。惯例报警降级:TL或者稳定性负责人随机抽取一个短信告警,人为将其降级为故障,进入故障应急响应流程。原文链接本文为阿里云原创内容,未经容许不得转载。

May 20, 2021 · 1 min · jiezi

关于结构化数据存储:结构化数据上的选出运算

【摘要】    选出是指在汇合中,依据指定条件获取成员。选出与定位计算很类似,不过定位关怀的是成员在汇合中的地位,而选出关怀的是成员记录的详细信息。比方选出入职超过 10 年的员工支出,查问销售额超过一万的客户名称等等。如何简略快捷的实现选出?这里将为你全程分析,并提供 esProc SPL 示例代码。 结构化数据上的选出运算 1\. 选出符合条件的成员【例 1】 分栏列出欧洲和非洲人口超 200 万的城市名称及人口(每栏按从多到少排序)。世界城市人口表局部数据如下: | Continent | Country | City | Population || Africa | Egypt | Cairo | 6789479 || Asia | China | Shanghai | 24240000 || Europe | Britain | London | 7285000 || … | … | … | … | 冀望后果如下: | Europe   City | Population | Africa   City | Population || Moscow | 8389200 | Cairo | 6789479 || London | 7285000 | Kinshasa | 5064000 || St   Petersburg | 4694000 | Alexandria | 3328196 || … | … | … | … | ...

November 15, 2020 · 8 min · jiezi

关于结构化数据存储:结构化数据中的存在判断问题

【摘要】    从数据表中选出数据时,有时候须要判断成员在某些条件下是否存在,这些条件可能是从其余的数据表中查问的。例如分数是成绩表的字段,怎么从学生表中选出各科分数都高于 80 分的学生?如何简便快捷的解决结构化数据中的存在判断问题,这里为你全程解析,并提供 esProc 示例代码。结构化数据中的存在判断问题 1. 外键映射的存在性检测在两个表中,依据外键映射的存在性查找记录。 【例 1】 统计一班男生的平均分。成绩表和学生表如下: 【解题思路】 从分数表选出数据时,判断是否存在班级的名称是一班且学生性别是男性的记录,如果存在则选出。 【SPL 脚本】 A6的执行后果如下: 当外键表数据量大时,能够应用游标的有序归并来解决。 【例 2】 查问 2014 年每月没有应用折扣的订单数量。订单表和订单明细表如下: 【解题思路】 从订单表选出数据时,判断是否存在折扣为 0 的订单,如果存在则选出。 【SPL 脚本】 A6的执行后果如下: 2. 非等值连贯的存在性检测在一个表中,通过非等值连贯的存在性检测查找数据。 【例 3】 查问同一订单跨度超过一年的订单的销售额。订单表局部数据如下: 【解题思路】 从订单表中选出数据时,判断订单跨度超过一年的记录是否存在,如果存在则选出。 【SPL 脚本】 A5的执行后果如下: 3. 外键映射的不存在性检测在两个表中,依据外键映射的不存在性检测查找记录。 【例 4】查问所有科目均高于 80 分的学生。成绩表和学生表如下: 【解题思路】 从学生表选出数据时,判断学生是否存在任意科目低于 80 分的问题,如果不存在则选出。 【SPL 脚本】 A6的执行后果如下: 4. 双重否定的存在性检测通过双重否定,查问可能匹配的记录。 【例 5】 查问选修了所有课程的学生。选课表、课程表和学生表如下: ...

November 5, 2020 · 1 min · jiezi