手机站:/m

数据库软件_数据物联网是啥-库_阿里大数据开发

时间:2021-04-08 09:36编辑:淘客樊里来源:淘客樊里当前位置:主页 > 服务器 >

数据库软件_数据库_阿里大数据开发

自从我们上一篇关于这个架构的博客文章以来,有哪些云服务器,振幅作为一种产品和数据量都有了显著的增长,从那时起我们不得不重新思考很多事情(这是个很好的问题!)。大约六个月前,我们意识到旧的Wave架构不会长期有效,于是开始计划下一次迭代。随着我们继续推进行为分析的边界,我们从数据存储和查询的角度对我们需要什么有了更多的了解,以便继续推进产品。我们对新系统有两个主要目标:(1)执行复杂行为分析的能力(如Compass和Pathfinder),以及(2)具有成本效益的可扩展性。经过广泛的研究,我们决定建立一个专门为行为分析设计的内部专栏商店。我们称之为Nova系统,我们很高兴能与大家分享一下我们是如何做到这一点的思考过程,以及我们做出的一些关键设计决策。预加总的局限性[推特"Nova:理解用户行为的架构"]我们现有架构的核心原则之一是预聚合的概念。预聚合是基于将高维查询分解为简单的低维组件,然后在查询之前聚合组件。当查询实际运行时,所需的计算量明显减少,云品,这使得预聚合查询非常快速。这对于行为分析中的许多不同查询都是有效的,从分段到更简单的保留形式。当然,折衷之处在于,在可以高效运行的查询类型中,灵活性有限。如果查询不能利用预先聚合的结果,那么它将被迫执行一个非常昂贵的完整计算。我们的一些新功能(如Compass和Pathfinder)比以前的功能复杂得多,无法充分利用预聚合。预聚合的好处是成本和速度,但是查询的广度导致了一个支离破碎、成本效率低下的系统,对于更复杂的查询来说速度较慢。很明显,我们需要彻底改革查询体系结构,将灵活性作为首要任务之一,从而使我们的客户能够更深入地理解用户行为。对于今天从事分析数据库工作的人来说,最自然的选择是面向列的数据库(column store)。列存储概述在数据库中以面向列的格式存储数据的想法已经存在了很长时间(30多年)。本文对列存储的历史以及使其如此有效的技术进行了很好的总结。与传统的关系数据库(它是为读取、更新和插入单个记录而优化的)不同,列存储针对回答扫描大型数据集的查询进行了优化,这正是分析的确切用例。在列存储中,尽管查询必须扫描大量的数据才能产生结果,但数据的结构可以保证高性能。与任何类型的预聚合系统相比,列存储的主要优点是它为查询提供了极大的灵活性,因为所有原始数据都是可用的。现在有相当多的列存储技术(其中很多都有蓝色徽标),了解它们之间的差异是很有用的。它们可以大致分为三类:服务、商业和开源。在服务桶中,我们找到了两个大型基础设施提供商的产品,即Amazon Redshift和Google BigQuery。这些是迄今为止运行起来最简单的解决方案,因为它们为您处理底层计算机的管理。两者都有类似SQL的接口,任何有SQL经验的人都可以使用。我们是振幅红移的大量用户,因为它允许我们的客户使用SQL构建报表。主要的商业产品是惠普Vertica,它是最早的专栏商店之一C-Store的演变。它是一个较老的产品,在这个领域有着强大的企业立足点。最后,我们调查了几个最近的开源专栏商店。第一个是Citus Data,它是一个扩展,它将PostgreSQL转换成一个分布式数据库,可以以列格式存储数据。这很酷,因为PostgreSQL是一个广泛使用且成熟的数据库(我们自己运行它的一些实例),已经有很多集成。另一方面,Druid是一个从头构建的分析数据存储,它具有自己的查询API,支持多种不同类型的聚合。对于绝大多数用例,选择其中一个是正确的决定,因为它们已经完成了为分析查询构建高度可伸缩系统的所有艰苦工作。内部专栏店的优势考虑到围绕分析列存储所做的所有现有工作,您需要有令人信服的理由来构建一个新的。我们花了相当多的时间来理解我们的用例的复杂性及其对我们技术的影响;最终的结果是内部列存储的一些关键优势:查询灵活性是我们数据库系统最重要的方面之一(它首先是架构改造的动力之一!)。我们不断创新我们提供的分析方法,因此我们能够处理从简单聚合到机器学习算法的所有事情,这一点很重要。我们的事件数据是不可变的,我们可以使用这个假设来提高性能。我们将在后面讨论一些可变性的特殊实例,但不必支持泛型更新会大大降低复杂性。我们有一些余地的一个方面是最终的一致性。当我们接收事件时,数据在接受写入后立即可用并不重要,只需要在短时间内(通常是一分钟左右)就可以查询。与不变性一样,删除强一致性允许优化。最后,我们可以更好地控制数据存储的位置和方式,从而降低成本。虽然所有面向列的数据库都设计为水平可伸缩的,但由于采样是如此,因此我们有必要在高容量上经济高效地运行糟糕。而且,我们与Amazon Redshift合作过很多,过去也曾探索过Google BigQuery。最终,我们总是发现不受支持的用例,特别是考虑到我们所做的独特行为分析,因此控制底层系统具有一定的吸引力。我们在权衡优势的同时,也存在明显的缺点,即所需的工程设计工作,以及我们可能必须重新发明许多基本可靠性和伸缩机制的事实。幸运的是,我们有一些利用AWS生态系统来缓解后者的经验,因此主要取决于开发我们自己的系统所花费的时间和资源是否会有回报。鉴于分析和分布式系统是我们的核心竞争力,在这一领域发展竞争优势是一项值得投资的投资。因此,我们开始了为期数月的建设Nova的旅程,这是一家能够与公司规模相当的内部专栏店。Nova中以用户为中心的计算模型我们认为Nova是一个分布式的柱状存储引擎,它具有以用户概念为中心的实时MapReduce计算模型。在深入了解如何存储数据之前,我们将首先描述模型。提醒一下,我们的主要目标之一是查询灵活性,而MapReduce非常适合作为表示多种计算类型的通用框架。我们遵循的一个基本原则是将代码移动到数据,云教云,而不是相反。行为分析高度依赖于同时查看用户的所有事件。在分布式系统中,这相当于对用户执行分布式连接,这意味着需要按用户对数据进行分区以避免移动数据,因此采用了以用户为中心的模型。完成此操作后,可以通过在不相交的用户子集上运行独立的工作程序来高度并行化查询。在我们的计算模型中,reduce步骤假设它拥有用户事件的完整视图。例如,假设您使用Register=>viewitem=>additem=>Purchase来计算电子商务应用程序中漏斗的转换。考虑到用户所执行的所有事件,如何成为淘客,很容易确定他们在漏斗中的成功程度。现在,假设您为不相交集合A、B和C中的用户独立计算漏斗转换,这些集合构成了完整的用户基础。我们所利用的行为查询的重要特性是,对用户子集的查询结果很小(不依赖于用户数量),并且可以聚合在一起。在这种情况下,我们可以看到总的漏斗转换是通过求A、B和C的每个步骤的转换而得到的。用户#登记#查看项目#添加项目#购买A5000个2000年300200B7000个4000个200150C4000个2500个150100总计16000个8500个650450如果您密切关注,您可能已经注意到,如果数据是按用户分区的,那么shuffle步骤就不能省略,从而折叠map和reduce吗?对此有一个重要的警告,那就是合并用户或别名的问题。在未来的任何时候,大数据精准获客,我们都有可能获得这样的信息:振幅范围内的两个用户实际上是相同的。我们选择不追溯性地修改事件数据,因为这违反了不变性,因此我们应用查询时间映射来告诉我们每个事件的真正用户。这意味着在数据层,我们没有一个完全分区的数据集,这就需要进行洗牌;幸运的是,由于合并和别名处理只占用户的一小部分,因此这一步骤的成本最小,而这一步骤往往是MapReduce的瓶颈。最后,在减少计算之后

上一篇数据存储服务器西安大数据-_租用_物联网现状

下一篇cdn阿里_国内物联-_云主机哪个好用

养花知识本月排行

养花知识精选