分类
股票市场行情分析

技术解析

随时欢迎技术圈的小伙伴们过来交流^_^
AnalyticDB详情见:产品详情
AnalyticDB产品试用:产品试用
AnalyticDB知乎公众号:云原生数据仓库
AnalyticDB开发者社区公众号:云原生数据仓库
AnalyticDB开发者钉钉群:23128105

[Snowflake核心技术解读系列三]云原生技术

背景:2020年9月16日,Snowflake成功IPO,交易首日市场估值达到704亿美元,募集资金34亿美元。Snowflake成为迄今为止规模最大的软件IPO,市值最高突破1200亿美元。Snowflake提供基于云的数据存储和分析服务,一般被称为 "数据仓库即服务",它允许企业用户使用基于云的硬件和软件来存储和分析数据。Snowflake自2014年起在亚马逊S3上运行,自2018年起在微软Azure上运行,自2019年起在谷歌云平台上运行,其Snowflake Data Exchange允许客户发现、交换和安全地共享数据。[维基百科]
Snowflake取得了巨大的商业成功,技术是如何支撑起它的千亿美元市值呢?它技术强在哪?OLAP内核技术爱好者浙川为大家倾情解读Snowflake的核心技术原理。本文为该系列三。

云服务组件

多租户是Snowflake云服务组件非常重要的特点。云服务组件中的每一个组件,例如并发访问控制、优化器、事务管理器等,都是需要能够长期运行并可以被许多用户同时共享的。多租户的特性大大提升了系统的利用率,并且降低了系统的管理开销,相比于每个用户都会独立占用系统资源的传统架构,多租户可以降低系统的整体成本。
为了高可靠性和高可扩展性,每个云服务组件都会有自己的副本。因此,即便某个云服务组件挂掉,也不会导致数据丢失或者服务不可用。云服务组件挂掉可能会导致一些正在运行的查询任务失败,但由于数据没有丢失,Snowflake只需要简单地重新运行这些查询任务就行了。
查询管理与优化。用户的查询请求会首先发送到Snowflake的云服务组件上,云服务组件会对查询进行前期处理,包括查询解析、权限控制、查询计划优化、文件映射等。Snowflake的优化器采用了传统的自顶向下的瀑布模型(Cascades-style)和基于开销的优化(cost-based optimization,CBO)。优化器所依赖的统计数据,全部由Snowflake在数据加载和更新时进行自动统计。由于Snowflake并不支持索引,因此Snowflake搜索计划的空间会比较小。同时,Snowflake并不是在前期解析查询的是时候一并把所有计划都生成好,而是将一部分计划的生成推迟到执行阶段,比如针对join的数据分布计划就是在执行时才产生的。这样设计的优点是可以降低优化器生成低效计划的概率,同时也提升了系统的鲁棒性,而代价是可能查询执行的时候并不能获得极致的性能。更重要的是,这样的设计会使查询执行性能变得更加可预测,进而提升用户使用Snowflake的体验。
优化器产生的计划会下发给该查询对应虚拟仓库的所有计算节点上执行,当计划执行的过程中,云服务组件会持续不断地监测执行状态,统计性能指标并跟踪计算节点的健康情况。这些信息都是后续性能分析和日志审计的重要依据,并通过图形化接口向用户展示。
并发访问控制。Snowflake的并发访问控制也是在云服务组件中实现的。Snowflake的主要负载为分析型负载,分析型负载大多是复杂查询、批量插入、批量更新等。在这样的负载场景下,Snowflake通过ACID事务和快照隔离(snapshot isolation,SI)来实现并发访问控制。在快照隔离的机制下,一个事务内所有的读操作都会统一使用事务开始时的快照,这也意味着一个事务内所有的读操作都会看到同一个版本的数据,同时并发执行的另一个事务内的数据修改操作对这个事务的读操作来说是不可见的。
Snowflake的快照隔离机制是基于多版本并发控制(multi-version concurrency control,MVCC)实现的。由于Snowflake的表数据文件一旦存放到S3上,文件就不可以改变了,因此采用多版本并发控制是一个很自然的选择。在Snowflake中,如果想要修改一个文件,那么只能把这个文件删除,并用新的包含修改内容的文件来替换它。更进一步,在Snowflake中,如果对一个表做了写操作(数据插入、更新、删除),那么会对应产生一个新版本的表,旧版本表的文件都会被删除,新版本表的文件被重新添加进来。当然,除了涉及写操作的数据文件需要进行实际物理文件的删除和替换外,其他文件的删除和添加都是在元数据中进行操作。如前面章节所述,Snowflake的元数据管理就是key-value存储。
除了快照隔离外,Snowflake还使用快照来实现时间追踪和数据对象高效克隆。
剪枝。如何保证某个查询请求只访问和它相关的数据,是查询处理要解决的一个很重要的问题。传统数据库大多都会创建类似B+树索引来支持数据访问。尽管创建索引对于事务处理中的数据访问非常有效,对于类似Snowflake这样的系统来说,索引反而可能会带来很多问题。首先,索引会带来的很多的随机I/O访问请求,这对于采用列式存储(尤其带压缩)和S3的系统来说是一个非常严重的额外开销。其次,索引还会大幅增加实际存储的数据容量,以及增高数据加载时间。最后,索引还会降低用户的使用体验,尤其对于Snowflake来说:用户还需要花额外的时间和精力去主动地创建索引。
对于大规模数据分析场景来说,一个可以替代索引的技术为:min-max剪枝。对于一块数据来说(该块数据可以是一页,也可以是一个文件),系统会单独维护这块数据相关的元信息,其中最重要的元信息是这个块中数据的最大值和最小值。结合查询的过滤条件,这些min-max信息可以被用来判断该数据块内的数据是否会被查询用到。例如,假设数据块1中列x的min值是3、max值是5,数据块2中列x的min值是4、max值是6,那么对于包含where x>=6过滤条件的查询来说,数据块1中的数据肯定不会被用到,数据块2中的数据才会被用到。和索引不一样的是,类似min-max这样的元数据所消耗的空间非常小,而且访问会非常快。需要强调的是,这里的min-max不一定是数值(整数、浮点数)的min-max,还有可能是日期、字符等的min-max。
Snowflake非常适合采用这种剪枝技术:它不需要用户花时间和精力去做额外的操作;它所占空间比较小,具有良好的扩展性,并且易于维护;它非常适合大规模数据顺序访问的场景。另外,加载用来剪枝的元数据性能会非常快,而且分析这些元数据对于查询计划产生和执行来说开销并不大。Snowflake针对每个独立的表文件都会单独维护剪枝相关的元数据,元数据不仅会涉及到正常的关系型数据列,还会涉及到半结构化数据中的部分列。Snowflake会根据查询的过滤条件去检查对应的剪枝元数据,以便最小化查询执行时所需要的输入文件数。Snowflake的剪枝不仅能够处理简单的数值比较过滤条件,还能够处理类似in (5,6,7)这样的复杂过滤条件。除了上述的静态剪枝优化外,Snowflake还能够在执行时进行动态剪枝。例如,当在执行hash join的时候,Snowflake会收集build表数据中有关join键的分布信息,并将这些信息发送到probe表处理端,以便用来筛选和剔除probe表所不需要加载的数据文件。这些方案其实都是对现有技术(如bloom join)的扩展。

image.png

随时欢迎技术圈的小伙伴们过来交流^_^
AnalyticDB详情见:产品详情
AnalyticDB产品试用:产品试用
AnalyticDB知乎公众号:云原生数据仓库
AnalyticDB开发者社区公众号:云原生数据仓库
AnalyticDB开发者钉钉群:23128105

版权声明: 本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

全新国产宝马X5发动机技术解析,2.0T400N.m!3.0T+48V轻混

BMW B系列发动机自2014年开始生产,他取代了原有的BMW N系列发动机,宝马的B系列发动机和之前的N系列发动机它们之间的最不同之处就是B系列发动机开始引入了高度模块化开发策略。所谓的高度模块化开发策略可以理解为将发动机拆分为不同的模块,以气缸为首,将每个气缸的容量设为0.5L排量, B系列发动机通过调整不同数量的气缸从而达到不同的排量的发动机组合,这种模块化可以减少研发成本,并且使其更加方便生产。

1.2发动机代号及含义

BMW B系列发动机目前有汽油发动机和柴油发动机,可以通过发动机代号的最末尾数的8与7分别对应。另外发动机代号中间的3、4、5分别代表着不同排量版本,分别是B38 1.5T三缸汽油发动机、B48 2.0T直列4缸汽油发动机、B58 3.0T直列6缸汽油发动机,每台发动机的每缸排量为500cc(30.5立方英寸)。

2.1 B48的关键技术

2.2 B48的优点

2.3哪些BMW车型配备B48发动机?

2.4宝马B48发动机与国产宝马X5

搭载在全新国产宝马X52022款 xDrive 30Li M运动套装与2022款 xDrive 30Li 尊享型M运动套装车型上的B48是经过调校后的B48B20G,调较后的发动机在4500rpm-6500rpm可以输出最大功率180KW,在1600rpm4000rpm可以输出最大扭矩400N.m,同时搭配采埃孚的8AT变速箱,可以使2.135吨的车身百公里加速可以在7秒左右,并且B48+ZF 8AT在可靠性和耐用性方面都是比较强的的动力总成组合,在燃油经济性方面重新调校过后的B48B20G相对比上一代提升了2.5%的燃油经济性,总的来讲,这次全新国产化后是比较成功的升级。

3.1 B58的关键技术

3.2 B58的优点

3.3哪些BMW车型配备B58发动机?

3.4宝马B58发动机与国产宝马X5

搭载在全新国产宝马X52022款 xDrive 40Li M运动套装与2022款 xDrive 40Li 尊享型M运动套装车型上的B58是经过调校后的B58B30C,调较后的发动机在5500rpm-6250rpm可以输出最大功率245KW,在1600rpm4800rpm可以输出最大扭矩450N.m,并且配备48伏轻混系统,通过电动机与内燃机并联运行,以提供额外的驱动力,同时兼具动能回收功能,从而达到提升动力,增加燃油经济性的作用。B58+48V轻混+ZF 8AT可以从容的让2.225吨重的车身在6秒钟之内迅速的加到100km/h。从耐用性和可靠性上面来看的话,这套动力总成在增加了48V轻混系统之后相对比原来在可靠性方面是有影响的,并且后期的维修成本也会增加,但它所带来的燃油经济性和更好的动力也是非常可观的。

让续航来得更猛烈些!比亚迪DMI超混深度解读


秦PLUS DM-i售价为10.78万~14.78万,秦PLUS DM-i提供标准续航和长续航两个版本可选,百公里加速最快7.3秒,是首款实现了亏电油耗仅3.8L/百公里,可油可电综合续航可达1245公里的DM-i超级混动车型。10—15万的A级轿车一向是合资的天下,什么朗逸、速腾、宝来、轩逸、思域、卡罗拉、雷凌、高尔夫…秦PLUS DM-i的出现,同样的价格却拥有两种可切换的动力配置,又好开又省油其优势不言而喻。


宋PLUS DMi售价为15.38万~17.58万,纯电续航51Km、110Km,综合续航能力1150Km 、1200Km,百公里加速8S左右,不充电油耗4.4L。宋Plus DMi应该和谁比?同价位,基本上都是一些合资SUV,比如CEV、荣放、威兰达、探岳、皓影、奇骏、欧蓝德……。纵观这些车型,没有比宋PLUS DMi油耗更低。接近的CRV、荣放和威兰达混动版本基本都要20万起,价格相差悬殊,性价比不高。而同价位的,油耗基本上都是8L以上的水平,而且动力、空间、行驶品质方面也都没什么优势。


Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

“三体问题”刚刚被深度神经网络解决,速度提升1亿倍

如今,随着人工智能的发展,研究人员发现深度神经网络在解决“三体问题”方面,能够起到惊人的提速作用!爱丁堡大学、剑桥大学等发表在arxiv的一篇论文《Newton vs the machine: solving the chaotic three-body problem using deep neural networks》中表明,训练人工神经网络能在固定计算成本内提供准确的解,速度提升了1亿倍!

什么是三体问题?

为什么三体问题一直无法被精确求解?

根据东南大学甘庆雨论文,在一般三体问题中,每一个天体在其他两个天体的万有引力作用下的运动方程都可以表示成 3 个二阶的常微分方程,或 6 个一阶的常微分方程。

因此,一般三体问题的运动方程为十八阶方程,必须得到 18 个积分才能得到完全解。

虽然从理论上可以证明三体问题属于决定论问题,但要想得到通解表达式,通过降维的方法意味着我们需要 18 个不变量条件,然而目前只有 10 个(质心方程 3 技术解析 个,动量守恒方程 3 个,角动量守恒方程 3 个,能量守恒方程 1 个),所以说在解析上还远远解决不了三体问题。

神经网络成为突破关键!

神经网络似乎成为一个非常不错的选择。早在2017年,Johannes Kepler 大学、DeepMind、OpenAI 和 Facebook 纷纷发表论文,探讨了使用深度神经网络来解决多体问题。

LSTM 之父Sepp Hochreiter就提出利用模拟库仑力(即电磁力大小与反向距离的平方成比例)作为一种训练生成对抗网络(GAN)的替代目标函数。

神经网络解决三体问题,速度提升1亿倍!

神经网络似乎成为一个非常不错的选择。早在2017年,Johannes Kepler 大学、DeepMind、OpenAI 和 Facebook 纷纷发表论文,探讨了使用深度神经网络来解决多体问题。

LSTM 之父Sepp Hochreiter就提出利用模拟库仑力(即电磁力大小与反向距离的平方成比例)作为一种训练生成对抗网络(GAN)的替代目标函数。

作者表明,训练人工神经网络(ANN)来执行这些计算,能以固定的计算成本提供精确的解,而且比最先进的传统求解器快 1 亿倍!

Breen 和他的同事们首先简化了这个问题,把它限制为三个质量相等、初始速度为零的粒子在一个平面上的引力问题。他们随机选择起始位置,并用最先进的 Brutus 法求解它们的三体运动。然后重复这个过程 10000 次。

研究人员使用包含10个隐藏层、128个互连节点的前馈神经网络,如图2所示。通过将时间t和粒子x 的初始位置输入到输入层中,神经网络会在时间t返回粒子x 和x 的位置,从而近似解决一般三体问题的潜在解析解。