探索 Snowflake 与 Databend 的云原生数仓技术与应用实践 | Data Infra NO.21 回顾

上周六,第二十一期「Data Infra 研究社」在线上与大家相见。活动邀请到了西门子数据分析师陈砚林与 Databend 联合创始人王吟,为我们带来了一场关于 Snowflake 和 Databend 的技术探索。Snowflake,这个市值曾超过 700 亿美元的云原生数据仓库巨头,以其独特的存储与计算分离架构,正在改变传统数据仓库的面貌。尽管进入中国比较晚,Snowflake 仍凭借其强大的数据处理能力和弹性扩展性,赢得了市场的青睐。

与此同时,开源的 Databend 以高性能、低成本的优势,成为了 Snowflake 的最具性价比的开源平替。Databend 的存算分离架构和对象存储技术,不仅提供了高弹性的云原生数仓体验,还通过开源社区的力量,不断推动技术创新。

本次活动不仅深入探讨了 Snowflake 在中国的应用现状,还详细介绍了 Databend 如何作为开源替代方案,在云原生数据仓库领域崭露头角。无论是实时数据分析、大规模日志处理,还是数据归档和业务数据链路追踪,Databend 都展现了其卓越的能力。

Snowflake 是全球领先的云原生数据仓库,于 2020 年上市并创造了超过 700 亿美元的市值。Snowflake 的出现彻底改变了传统数据仓库的架构模式,采用独特的存储与计算分离的技术架构,能够实现弹性扩展与高性能的数据处理。这种按需扩展的能力帮助企业显著降低了 IT 成本,同时提升了数据分析和处理的效率。

Snowflake 的开源平替——新一代云原生数仓 Databend

 Databend Labs 联合创始人王吟

Databend 是一个新一代云原生数据仓库产品,基于存算分离架构和对象存储技术,提供高弹性、按需付费的云原生数仓体验。其核心目标是打造一个开源版的 Snowflake,为全球企业提供低成本、高性能的数据仓库解决方案。

Databend 的技术与团队背景

Databend 的技术核心团队汇集了来自全球各大科技公司的专家,包括 Google、阿里云、青云、OceanBase 等顶级云计算厂商和数据库厂商。团队成员不仅具备丰富的数据库和云计算技术经验,还在多个开源项目中做出过重要贡献,如ClickHouse、TokuDB(Mysql内核)等。

Databend 的架构设计充分体现了团队的技术实力和创新思维。作为一款完全基于 Rust 语言开发的云原生数仓,Databend 采用存算分离架构,利用对象存储来构建一个高弹性、按需扩展的分布式数据处理平台。这种架构不仅提高了资源利用率,还大幅降低了运营成本。

Databend 从第一天起就是开源的,经过三年多的自然增长,已经在 GitHub 上获得超过 7700 个 stars,拥有 190 多名 contributor,其中约 40% 来自公司外部的社区成员。社区的活跃参与使 Databend 的功能不断完善,用户群体也在持续扩大。

Databend 的核心产品

Databend 目前提供两种主要的产品形式:Databend Cloud 云平台 和 私有化部署方案

Databend Cloud

Databend Cloud 是一个完全托管的云数据仓库服务,用户可以按需使用并根据实际使用量付费。Databend Cloud 提供了一站式的 SaaS 服务,用户无需关心底层基础设施的维护与运维,只需关注数据的存储和分析。这种模式不仅简化了用户的使用体验,还大幅降低了 IT 部门的运维压力。

Databend Cloud 目前支持国内外多个地区的部署,用户可以选择靠近自己业务的云区域来部署数据仓库,确保数据传输的低延迟和高可靠性。为了满足企业对数据安全和合规性的要求,Databend Cloud 提供了严格的访问控制和权限管理机制,确保数据在传输和存储过程中的安全性。

私有化部署方案

对于一些对数据安全性要求较高的企业用户,Databend 还提供了私有化部署方案。该方案分为 社区版 和 企业版两个版本:

  • 社区版:社区版是完全免费的开源产品,用户可以直接从官网或开源社区下载并自行部署。该版本适合希望灵活定制和完全控制数据仓库的小微企业或开发者。
  • 企业版:企业版针对企业级用户,提供了更多的高级功能支持,如用户定义函数(UDF)、历史数据删除功能以及企业级的 7*24 小时专属支持服务。这些功能使企业版成为那些对数据仓库有更高功能需求且需要专业支持的企业的首选。

无论是 Databend Cloud 还是私有化部署方案,Databend 的内核都是完全开源的,用户可以根据需求灵活选择适合自己的部署模式。

构建完整的生态系统

Databend 在产品设计上非常注重生态系统的建设,力求为用户提供一个完整的从数据导入到数据展示的全链条解决方案。在数据导入方面,Databend 支持与多个第三方工具的集成,包括 AirflowDBTFlinkDebezium和 CDC ****等技术,确保用户可以轻松地将数据从各种来源导入到 Databend 数据仓库中。

在数据展示方面,Databend 与多个主流的 BI 工具进行了深度集成,例如 TableauPower BISuperset 等,使得用户可以快速生成图表、报表,并对数据进行深度分析。用户通过这些 BI 工具可以实时获取数据仓库中的分析结果,大大提高了数据的可视化效率。

为了方便开发者和数据工程师的使用,Databend 还提供了一个名为 Ben d SQL 的命令行工具。这个工具类似于 Snowflake 的 SnowSQL,用户可以通过 BendSQL 与 Databend 数据仓库进行直接的命令行交互,执行查询、数据导入和导出等操作,极大地方便了日常开发和运维任务。

性能对比:Databend VS. Snowflake

在云数据仓库领域,Snowflake 是目前市场上的领军企业之一,其独特的架构设计和产品优势使其得到了广泛应用。Databend 在架构设计上与 Snowflake 有诸多相似之处,二者均采用了存算分离架构和对象存储技术,但 Databend 也在多个方面表现出了明显的差异和优势。

Databend 的架构设计体现了现代云原生数据仓库的最佳实践。其底层基于对象存储,数据的持久化存储与计算分离,这种架构不仅提高了资源的利用效率,还使得系统具备更高的扩展性和弹性。具体而言,Databend 的计算节点是无状态的,这意味着当一个计算节点出现故障时,系统可以快速启动新的节点,确保业务的连续性。

此外,Databend 还支持根据用户需求灵活调整计算资源。在不需要计算资源时,Databend 可以快速释放计算节点,以降低成本;在需要进行大量数据处理时,Databend 可以迅速扩展计算节点,满足用户的高性能计算需求。

性能与成本优势

Databend 在多个性能测试中表现出色。在 TPC-H 基准测试中,Databend 的整体性能比Snowflake高出约 1.3 倍,同时成本仅为 Snowflake 的一半左右。这意味着用户可以在享受高性能计算的同时,以更低的成本完成大规模数据处理任务。

架构设计的差异: 容器化 vs 虚拟机 

Snowflake 使用的是虚拟机技术来管理和分配资源,而 Databend 则采用了容器化的方式进行资源管理。容器化相比虚拟机更具灵活性和高效性,特别是在资源的利用率、启动速度以及弹性伸缩上,Databend 表现更为优异。

  • 启动速度:容器的启动速度通常远快于虚拟机,因此 Databend 能够在需要时迅速扩展计算资源,用户无需等待虚拟机的冗长启动过程,极大提高了系统的响应速度。
  • 资源利用率:容器的轻量化特性使得资源的利用率比虚拟机更高,因此 Databend 可以在相同的资源条件下处理更多的数据任务。
据管理与权限控制

Snowflake 的权限管理机制非常成熟,适合处理复杂的数据访问控制需求。Databend 则更加侧重多租户环境下的权限管理,允许跨应用的细粒度数据权限控制。Databend 的架构使用户可以根据实际需求对权限管理系统进行自定义,特别适合需要定制化数据管理的企业。

定价与成本优化

Snowflake 采用按需付费策略,提供弹性的资源分配能力,但其计算和存储费用相对较高。Databend 在计算和存储成本上则更加优化,通常只有 Snowflake 成本的 50%,并且支持更加灵活的按需扩展机制,使得用户可以根据业务需求进一步降低成本支出。

SQL ****兼容性 与易用性

Databend 支持标准 SQL 语法,并与Snowflake具有高度兼容性,用户可以轻松迁移 Snowflake中的查询语句和数据结构到 Databend 环境中。这大大降低了从Snowflake迁移到 Databend 的成本和技术障碍,使企业能够迅速将现有的数据工作负载无缝转移至云端。

Databend 的操作简便性和高度兼容性也使其在实际应用中极大降低了用户的学习成本和使用门槛。开发人员无需进行额外的技术培训便可以上手 Databend,尤其是在那些已经熟悉 SQL 语法的团队中,Databend 的快速适应能力成为其核心竞争力之一。

Databend 的开源之路

Databend 的另一大优势在于其完全开源的产品策略。用户可以自由访问和修改 Databend 的源代码,并根据自身需求进行定制化开发。开源社区的力量也推动了 Databend 的快速发展与创新,使其在功能扩展和产品演进上具备极高的灵活性。

Snowflake 虽然在产品成熟度和市场份额上占据领先地位,但它并不是一个开源产品,用户无法对其进行深入的定制与开发。相较之下,Databend 的开源特性使其在全球开发者和企业用户中广受欢迎,特别是那些对数据仓库有特殊需求的企业可以通过参与社区或二次开发来实现个性化功能。

Databend 的应用场景与成功案例

Databend 的独特架构和高性能表现,使其在多个行业和应用场景中得到了广泛应用。无论是在实时数据分析、大规模日志处理,还是大数据归档、业务数据链路追踪等方面,Databend 都展现了卓越的能力

实时分析与日志处理

一个典型的案例是某大型游戏公司成功实现了从 Snowflake 到 Databend Cloud 的迁移。该公司原本依赖 Snowflake 进行大规模的实时数据分析,但出于降低成本和提升系统灵活性的需求,他们决定迁移至 Databend Cloud。迁移过程中,Databend 与Snowflake 的SQL语法、函数基本兼容,确保了业务数据和查询的无缝过渡。此外,通过利用 Databend 的高效任务调度和资源弹性管理,客户不仅降低了 50% 的数据处理成本,还大幅提升了数据任务的执行速度。

这家游戏公司还重点利用了 Databend 的任务调度系统,该系统能够在不到 1 秒内响应任务调度需求,而在某些情况下,任务调度时间甚至可以达到 500 微秒。这种极快的任务调度能力,使得该公司能够在快速变化的游戏环境中实时跟踪玩家行为和游戏性能,确保了用户体验的最佳化。

数据归档与大数据处理

Databend 在大数据归档场景中也有显著的应用效果。例如,电商平台多点利用 Databend 实现了海量历史数据的归档和存储。该平台的业务数据量极为庞大,传统的数据库系统难以应对高效的数据归档需求。通过使用 Databend,他们将 MySQL 和 Tidb数据库中的 TB 级数据归档到 Databend Cloud 上进行存储。由于 Databend 基于对象存储,平台大幅降低了数据存储成本,同时依然能够在需要时快速读取和分析归档数据。

这一数据归档解决方案不仅为多点节省了 90% 以上的存储开销,还提供了对归档数据的快速检索和分析功能,极大提高了历史数据的利用率。这一解决方案尤其适合那些需要处理大规模数据归档和检索的企业,如银行、电信和互联网公司等。

离线分析与实时数据同步

另一个成功案例是东南亚社交平台Typing,该平台通过使用 Databend 实现了从 OLAP 系统到实时数据同步系统的架构升级。该平台的业务模式类似于聊天室应用,用户产生的大量数据需要实时存储和分析。通过 Databend 的实时同步功能,该平台能够在用户生成数据的瞬间,将数据实时写入 Databend 的存储系统中,并快速进行处理和分析。

具体来说,该平台通过将业务数据库的数据快照导入到 AWS S3 上,然后使用 Databend 的SDK将数据导入到数据仓库中进行分析。同时,通过任务调度机制,Databend 可以对新写入的数据进行实时检测和分析。这种实时分析能力帮助该平台快速响应用户行为变化,并基于数据进行个性化推荐和优化运营策略。

这一系统的上线速度也非常快,仅用了大约两周时间就完成了从开发到生产环境的过渡。此外,Databend 的无状态架构使得该平台在处理高并发的实时数据时,系统表现出了极高的稳定性和可靠性。

替代 Kafka 的日志系统

Databend 还可以作为 Kafka 的替代品,用于日志系统的构建。某AIGC公司,原计划使用 Kafka 进行实时数据传输和日志处理,但由于 Kafka 的维护成本高昂,他们决定改用 Databend 作为数据传输和存储的核心系统。

在这一场景中,该公司通过将业务链路数据写入到S3,然后再利用Copy into命令将S3中数据写入到Databend Cloud中,并在需要时通过任务调度快速提取数据进行分析。Databend 的多租户共享特性使得该公司可以在不同业务部门间共享数据,而无需为每个部门分别复制数据副本,这不仅提高了数据管理的效率,还极大降低了存储和运维成本。

Databend 的灵活性使得这一解决方案能够根据业务需求进行动态调整,适应数据流量的波动。这使得该社交软件公司能够以较低的运维成本实现高效的日志处理和数据分析,确保了平台的稳定性和用户体验的持续提升。

Databend 开源生态与社区支持

开源是 Databend 的核心策略之一。自项目启动以来,Databend 通过开源社区不断扩展功能,推动创新。Databend 的 GitHub 项目目前拥有超过 7700 个 stars 和 190 多名代码贡献者,社区贡献者约占 40%,这显示了 Databend 在开源社区中的活跃度和影响力。

海外市场的扩展

Databend 的用户群体不仅限于中国市场,其在全球的知名度和用户基数正在迅速增长。根据 Databend 的用户数据,海外用户已占到总用户数的 50%,其中主要分布在美国、德国、法国、印度等地。特别是在北美和欧洲市场,Databend 逐渐被更多的大型企业和机构所接受,成为数据仓库领域的重要玩家之一。

社区的全球化发展也为 Databend 提供了强大的推动力。通过与全球开发者的合作,Databend 能够快速响应用户需求,并在产品功能和性能上进行持续优化。Databend 还积极参与 Apache 基金会等国际开源组织的活动,进一步提升其在全球市场的影响力。

Databend 的未来展望

随着全球企业对大数据分析需求的日益增长,云原生数据仓库正在成为企业 IT 基础设施中的核心组件。Databend 通过其独特的存算分离架构、高弹性、高性能和低成本的特性,已经在全球市场上崭露头角。

未来,Databend 将继续专注于技术创新,进一步完善其产品功能,特别是在 AI 与大数据结合的领域展开深度探索。通过与机器学习和深度学习技术的结合,Databend 计划提供更多的 AI 驱动功能,使企业能够更智能地处理和分析海量数据。

同时,Databend 还将继续扩展其全球市场,通过与更多云服务提供商和技术合作伙伴的深度合作,为企业用户提供更加多样化的解决方案。Databend 的开源社区也将在未来发挥更加重要的作用,推动产品的创新和演进,最终实现 Databend 成为全球领先的云原生数据仓库平台的目标。

初见 Snowflake,Snowflake 在西门子的应用探索

 西门子数据分析部门数据分析师陈砚林

Snowflake 进入中国的时间比较晚,今年 4、5 月份才开始由神州数码在国内运营,允许用户在上面开账号,做一些开发工作。目前 Snowflake 在国内的客户还不是特别多,基本以传统外企为主。

Snowflake 在全球主要基于 AWS、Azure、GCP 三朵主流公有云运营,在中国只有 AWS 和 Azure 可供选择。实际上,Snowflake 在国内也只和 AWS 合作。AWS 在中国是和西云数据与光环新网合作的,所运行的版本与全球相比通常存在 1-2 年的代差,很多产品在中国区不可用。同理,Snowflake 在国内的情况也是一样的。虽然 Snowflake 官方从来不会承认和全球落后几个版本,但据实际使用来看,也大概有 1-2 年的代差,并且有一些功能在中国是完全不可用的状态。以上就是 Snowflake 目前在中国市场的运营现状。

我们所在的西门子数据分析部门,也是从那个时候开始上手接触 Snowflake。但其实在西门子全球部门里,4、5 年前就已经使用 Snowflake 来做一些数据分析。并在过去大概 2、3 年左右,开始用 Snowflake 彻底替代原有数据平台做数据相关的建模和开发。所以西门子数据分析部门虽然接触 Snowflake 时间并不长,但因为西门子全球的使用基础,还是积累了一定的使用经验。

初识 Snowflake:Snowflake 介绍以及架构解析

首先从架构图来简单了解一下 Snowflake。Snowflake 非常充分地利用了公有云本身的一些能力,总体上分为三层:

最下层是数据存储层。Snowflake 的数据存储是基于 S3 对象存储实现的,所有数据摄入到 Snowflake 后,会以 Snowflake 自己的方式对数据进行优化、存储。比如说一张大表,有很多数据,Snowflake 会按照一种叫 micro partition 的方式做一个列式、压缩的存储。

第二层是运算的执行层。对于 Snowflake 来说,所有运算的展开是依托于叫 virtual warehouse 的一个单元来进行的。我们可以将它简单理解为 AWS 上的一个个 EC2 实例,它会分不同的型号,比如说 X small、small 或者 large,区分这个运算实例的大小。若干个这样的实例组合在一起,可以形成一个 cluster,去做一些并行运算。同时还可以根据自己的需求弹性地控制这些 virtual warehouse 的大小或者数量,实现横向或者纵向的实时伸缩。

第三层是云服务层。这个概念比较抽象,可以简单理解为除了数据的存储和运算执行,其他所有功能都会放到这个云服务层。云服务层通常会包含几个功能,最基础的比如身份验证鉴权,数据权限控制,以及账号下面所有的基础设施的管理等等 。

上图是 Snowflake 对于数据治理的架构图,整张图代表的是在企业背景下的一个数据治理的生命周期。从最开始的数据摄入到中间进入 Snowflake 后,需要对数据做一些预处理,最后可能需要把这些数据分享出去,分享给一些非技术用户。

最左侧是数据摄入,数据源可以是来源于 IOT 设备的一些 JSON 文件、CSV 文件,一些来自于上游的数据库或数据湖的数据,一些 SaaS 应用的数据,各种各样的流式的数据源,也可以是来自于其他 Snowflake 伙伴分享的数据。

所有这些数据通过中间官方提供的数据摄入的方法传输到 Snowflake 中,比如 Snowpack,一个基于 Kafka 的流式数据输入工具,或是批量摄入数据工具。甚至你可以不把这个数据本身拿到,就把数据放到对象存储里,然后直接对这个对象存储里的文件做分析。这些数据可以是结构化、半结构化或非结构化的数据。拿到这些数据之后,下一步就是根据需求做一定的数据建模,搭建自己的数据模型,对这些数据进行分析。处理好的数据可以分发给下游系统去做一些 BI 分析,给下游系统去消费。或者你也可以把它再发到一些数据分享平台。

为什么选择 Snowflake?

西门子为什么要选择 Snowflake 呢?下面列举了一些它的主要优势:

第一,它可以打通数据的孤岛。Snowflake 可以摄入的数据源非常丰富,基本上企业里常规会遇到的数据源都可以涵盖。用户不再需要在这些零散的数据源分别做数据的分析,可以把所有数据都拿到 Snowflake 做一个集中的数据分析,并且可以统一管理这些数据,做消息系统的分发,这些都是可以实现的;

第二,因为它充分利用了云上的一些能力。比如说 Serverless 微服务,所以整体成本是比较可控的,基本可以实现用多少花多少钱。

第三,也是因为基于云,它的各种服务都是弹性可伸缩的。

除了以上列举出来的优势点,陈砚林还站在数据工程师角度,介绍了一些比较有价值的创新功能。

Snowflake 的创新功能

数据摄入

首先是关于数据摄入。刚才讲过 Snowflake 可以把数据放到对象存储里,然后直接对这个对象存储里的文件做分析。比如有一些上游系统会产生一些零散的数据文件,这些数据文件会定期或者不定期的更新,那这些数据其实完全没有必要拿到 Snowflake 里去做分析,用户可以直接和自己的上游系统约定好,基于 S3 的通知机制,只要产生了新的文件,就会更新到对象存储里。这样设置之后,只要放了新的文件进来,就可以把这些数据直接读到 Snowflake 里,而不是把这个文件本身拿到 Snowflake。通过这样的方式,就可以实现对一些常规的数据格式的文件做分析,比如说像 CSV、Parquet 等常规的数据格式。

Snowflake 的数据摄入方式可以分为两种:一种是批量对数据做提取。另一种是基于 Kafka 的 Snowpack 的服务去对数据做流式的处理。

列级别的权限控制

数据拿到后,当我们想把这个数据分享给下游系统,或者消费者的时候,通常需要对数据做行级别或者列级别的权限控制。行级别权限控制很好理解,其他数据库也都完全能够支持这个功能。基于列的存储提供了一种比较新颖的管理方式,叫 dynamic data masking。

比如说现在有个用户的身份数据有一些敏感的信息,用户的姓名、手机号等。在数据库存储的过程中,传统数据库肯定是需要把这些数据完整地储存储存在数据库表里。对于 Snowflake 来说,它可以对这些敏感列的数据做打码的处理,比如说手机号,它可以对中间结尾作打码,或者对姓名做隐藏。这样的处理其实不光是对于数据输出,它甚至对于数据工程师日常处理数据的时候也是生效的。这是一个非常高级别的权限控制,不光是对于数据的消费者,甚至对于开发人员这个效果同样是生效的。

物化视图

对于数据中间处理的过程中,Snowflake 还提供物化视图的功能。比如说有很多的子查询来源于共同的一个父节点的查询,如果不对这个父节点的查询做一个物化处理的话,可能每一次子查询的调用都会重新运算这个父节点的过程。这样会造成非常大的资源消耗,而且也会增加查询的时间,物化视图就可以非常好地处理这个问题。通过把这个父节点的查询物化成表,可以加快整个查询的过程,同时降低整个查询过程的资源消耗。

在 Snowflake 中,创建物化视图的方式也很简单,通过一种类 SQL 的语句进行。其实原理上还是一个select,只不过前面套了一个 create material 的过程。同时这个物化的视图,因为是把它物化成一张表,所以表的这些特性可以完全继承过来。我们就可以对这些表或这些物化视图做一个分区的处理,进一步加速这些子节点的查询。

数据的分区

Snowflake 甚至可以针对同一张表创建多种不同的分区。不同的子查询有可能有不同的 where 或者 join 的条件,它所依赖的父节点的查询的分区方式可能是不同的。所以为了让这种全局的查询优化的效果能够达到最佳,我们就可以根据不同的子查询的特性去创建不同的父节点的分区方式。

动态表

在一个传统的数据处理过程中,比如说上个系统有若干张表需要监控,需要把数据提取到数据库里去做分析。之前我们经常是通过 CDC 的方式获取。对上游系统的数据库表做一个监控,当它有新的数据进来时,或者数据变化时,把这些变化的数据提取到数据库里。

Snowflake 提供了一种全新的服务,它可以达极大简化这种 CDC 的过程,可以直接对上游系统的数据库表做一个监控,然后通过一定的配置来去刷新从上游系统数据库表提取到这个数据库表的过程。这个刷新的机制可以自己定义,可以每分钟刷新一次,也可以把这个刷新的频率降得比较低。这完全可以根据业务的实际情况来去做相应的选择,但是不同的选择会有不同的成本。

数据分享

接下来是 Snowflake 提供的数据分享方式。Snowflake 提供三种数据分享的模式,第一种是通过创建一些 secure 的数据库对象去做一种点对点的对象的分享。另外两种 data exchange 和 marketplace 是官方提供的基于 web 的 P2P 的分享方式。比如说 data exchange,可以把运算好的数据发布到 Snowflake 上,挂在 Snowflake 上售卖。有用户对我的数据感兴趣,就可以对这些数据进行消费;Marketplace 也是类似的原理。

所有的这些分享,都是依托于所谓 share 去展开的。那都有什么数据库对象可以被分享?通常来说,首先是permanent 和 transient table。这个好像比较抽象,其实就是除了临时表都可以被分享出去。甚至包括刚才提到的外部表。还有一些 secure views、secure materialized views、secure JavaScript and SQL UDFs。可以看到这三类前面都套了一个 secure 的关键字。Secure 实际上是 Snowflake 针对于分享的一个比较特殊的产品。其实它就是一个正常的 view,正常的物化视图,正常的 UDF,用于分享的时候需要单独创建一个带 secure 关键字的一个数据库对象,然后可以对这个东西做分享。作为这个数据库对象的分享方,可以对这些分享出去的东西做实时管理。所有这些分享出去的东西,我都可以控制它的权限,可以控制分享生效的时间,随时撤销掉已经做出的分享。而且它对所有 Snowflake 的版本都是生效的。

用 secure views 举一个例子。比如说我有一个数据模型,想分享给其他用户。那这个视图首先肯定是已经定义好的,我可以通过创建一个 secure view 去把这个模型分享出去。创建的过程还是比较简单的,首先,左边是创建好的标准的视图,拿到这个标准视图后,可以通过右边的语句创建一个 secure view。拿到这个 secure view 后,可以对这个 view 做一些权限的控制。通过这样的类似 SQL 里边的 grant 语句,去对这个创建的 share 做一个分享。同理也可以去创建这种 secure UDF 等等这些东西。

管理和观测性

最后是 Snowflake 提供的一些管理和观测性的手段。首先是 Snowflake 提供一些基于云的通知方式。比如说这个数据库对象发生一些变化时,可以配置一些基于云的通知手段,比如 AWS SES 或者SNS。

举个例子,比如说数据库发生一些错误的时候,可以预先创建一个AWS SNS 对象,把这个 SNS 的 ARN 配置进来。同时,需要在 AWS 上对这个 SNS 的通知做一些预先的配置,比如说 SNS 的通知对象可以是一些邮件的收件人。那当这个数据库发生错误的时候。Snowflake 会去调用这个 SNS的请求,预先配置好的这些收件人可以收到一封相应的邮件,可以知道数据库发生了什么样的错误。

同理,在 Snowflake 我们肯定会配置一些 task 去调度这个数据摄入或者数据处理的过程。处理数据的过程当中,可能会发生一些错误,同样可以预先配置好这种 SNS 通知消息,发生错误的时候可以去发一个通知。

Snowflake 上所有的运算都是基于 virtual warehouse 数据库对象进行的,在 Snowflake 的网页上,进入到账号里可以看到名下所有的 virtual warehouse 近期的使用情况。柱状图显示的是每天这个 virtual warehouse 运行的情况。点进去可以看到每次的查询或任务具体执行的情况,甚至可以看到这个查询消耗了多少资源,用了多长时间,产生了多少条的数据输出等等信息。

Snowflake 在西门子的应用场景探索

在西门子目前的业务背景下,Snowflake 已经成为其核心数据仓库平台,用于处理和分析来自不同上游系统的大量结构化数据。为了全面理解这一架构,以下将从数据源、数据处理、权限管理及下游系统四个方面详细解读西门子在 Snowflake 中的全局架构。

数据源  ERP 系统和 SQL Server

在西门子的架构中,数据主要来自两大类上游系统:

  • ERP 系统:这类系统以 SAP 为代表,主要用于企业的采购、财务等关键业务。SAP 作为外企普遍采用的 ERP 系统,承担着从企业运营中获取结构化数据的任务。
  • SQL Server:许多西门子业务部门自主管理 SQL Server 系统,用于特定业务需求,SQL Server 中的数据库表也成为了主要的数据来源之一。西门子会定期从这些 SQL Server 系统中抽取数据库表,为后续的数据分析和处理提供原始数据。

这些上游系统的数据都是结构化数据,且大部分以表格的形式存储。在数据进入 Snowflake 之前,数据经过初步整理,以便为后续的建模和分析提供统一的管理和结构。

数据处理与管理:DB 之间的权限共享

西门子在 Snowflake 中构建了多个数据库(DB),每个 DB 对应不同的数据源。在这个架构中,西门子并不会直接对原始数据进行开发,而是通过 Snowflake 中的数据库权限共享机制,将不同数据库中的数据表分享给相应的用户或应用程序。

具体的操作方式是,将原始数据抽取并加载到 Snowflake 中的数据库后,不同的数据源根据业务需求建立各自独立的 DB,避免数据混乱。之后,利用同一 Snowflake 账号下不同 DB 之间的赋权功能,将这些数据安全地分享出去,从而满足业务团队对不同数据的访问权限需求。

这种架构极大地简化了数据的管理与访问。通过 Snowflake 的权限控制,西门子能够确保每个团队和应用程序只访问与其相关的数据,降低了安全隐患,并简化了数据治理流程。

数据建模与测试:开发、测试与生产环境的分离

在拿到被分享的数据后,西门子会按照严格的开发流程,分别为不同的业务需求创建开发( DEV  、测试(QA)生产(PRD)环境。这种环境分离的架构设计,使得数据开发和测试过程更具灵活性与安全性。

  • 开发环境( DEV  :数据科学家和工程师在这里进行初步的数据建模和开发工作,确保逻辑设计正确。
  • 测试环境( QA  :开发完成后,数据会进入测试环境进行验证,确保所有的业务逻辑、数据建模和数据处理管道都能稳定运行。
  • 生产环境( PRD  :经过测试的数据和模型将最终部署到生产环境,供实际业务使用。

这种分层结构不仅提高了数据开发的效率,也确保了数据在正式发布前的安全性与准确性。

数据分享与权限管理:轻量化 DB 的作用

在数据处理完成后,西门子不会将最终数据直接放在 Snowflake 的核心计算 DB 中,而是会将数据发布到一个专门用于数据分享的轻量化 DB。这个轻量化 DB 的作用并非进行数据运算或复杂分析,而是作为数据权限控制的工具。

当用户获取轻量化 DB 中的数据时,他们已经只会看到符合权限管理的数据集,这样确保了数据的访问控制。这种模式有效降低了权限管理的复杂性,用户无需过多干涉,只需要根据需求分享数据给下游系统。

这种轻量化 DB 的作用尤为关键,既优化了数据的存取速度,也确保了数据的安全性。

下游系统: BI 报表与 机器学习 工具的集成

对于西门子的业务场景,下游系统通常是 BI 报告生成工具或应用程序,这些工具能够直接从轻量化 DB 中提取数据,生成实时的商业智能报告。常见的 BI 工具如 Tableau、Power BI 等,在西门子内部广泛应用,用于不同业务部门的日常决策支持。

此外,西门子还集成了多种机器学习 工具,用于高级数据分析和预测模型。这些工具已经与 Snowflake 完全打通,能够直接从 Snowflake 提取处理好的数据集,而不再需要传统数据库那样复杂的 ETL 工具来传输数据。

相比传统的数据库架构,这种与机器学习工具无缝集成的设计显著简化了数据流动,提高了数据使用的效率和灵活性。

结语

Databend 作为新一代的云原生数据仓库,通过其创新的架构设计、开源生态和卓越的性能,已经为全球用户提供了高效、低成本的数据存储与分析解决方案。无论是在实时分析、日志处理、大数据归档,还是与 Snowflake 的对比中,Databend 都展现了其独特的技术优势和市场潜力。随着未来技术的不断进步和市场需求的增加,Databend 将在全球数据仓库市场中扮演越来越重要的角色,为企业的数据驱动决策提供强有力的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

李宏毅机器学习2023-HW10-Adversarial Attack

文章目录 TaskBaselineFGSM (Fast Gradient Sign Method (FGSM)I-FGSM(Iterative Fast Gradient Sign Method)MI-FGSM(Momentum Iterative Fast Gradient Sign Method)M-DI2-FGSM(Diverse Input Momentum Iterative Fast Gradient Sign Method) Reportfgsm attackJepg Compress…

性能优化与资源管理:优化Selenium脚本的执行效率,合理管理浏览器实例和系统资源

目录 引言 一、Selenium基础与常用方法 1.1 Selenium简介 1.2 Selenium基础用法 二、Selenium性能优化技巧 2.1 使用WebDriverWait实现显式等待 2.2 启用无头模式 2.3 设置合理的页面加载策略 2.4 禁用图片和JavaScript加载 2.5 优化元素定位 2.6 合理使用隐式等待和…

从0开始linux(5)——vim

欢迎来到博主的专栏:从0开始linux 博主ID:代码小豪 文章目录 vim的多种模式底行模式命令命令模式视块模式(visual block) vim的配置 vim是linux系统的文本编辑器。就像windows的记事本一样。 使用vim指令可以使用vim打开一个文本文…

JavaWeb美食推荐管理系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优…

JavaScript 学习

一、输出 为方便调试可以输出内容&#xff0c;但是用户是看不到的。要在开发者模式中看。 console . log ( "Hello" )&#xff1b; 二、外部文件引用 可以直接在html中写JS <head> <meta charset"utf-8"> <script> console.log("he…

ZYNQ:开发环境搭建

资料下载 http://47.111.11.73/docs/boards/fpga/zdyz_qimxing(V2).html Vivado软件是什么&#xff1f; Vivado软件是Xilinx&#xff08;赛灵思&#xff09;公司推出的一款集成设计环境&#xff08;IDE&#xff09;&#xff0c;主要用于FPGA&#xff08;现场可编程门阵列&am…

零代码构建自己强大的Agent智能体,偷偷甩掉90%的人

转自公众号&#xff1a;渡码 Agent&#xff08;智能体&#xff09;的概念大家应该并不陌生了&#xff0c;今天分享通过可视化的方式构建各种各样强大的智能体。 关于Agent的定义&#xff0c;我并不想引用官方正式的说法。而是按照我的理解通俗地解释一下。 大模型好比是面粉…

第166天:应急响应-拒绝服务钓鱼指南DDOS压力测试邮件反制分析应用日志

案例一&#xff1a;内网应急-日志分析-爆破&横向&数据库 数据库 这里不同数据库日志不一样&#xff0c;我用mysql分析 首先MySQL数据库需要支持远程连接 GRANT ALL PRIVILEGES ON . TO root% IDENTIFIED BY 123.com WITH GRANT OPTION; 其次开启日志 -- 查看general…

Flutter为Android添加签名并打包

前言 我们需要将App进行数字签名才能发布到商店里。在这里就具体描述一下如果给App添加签名 为App签名 创建一个用户上传的秘钥库 如果你已经有一个秘钥库了&#xff0c;可以直接跳到下一步&#xff0c;如果没有则按照下面的指令创建一个 keytool 可能不在我们的系统路径中…

MySQL多版本并发控制MVCC实现原理

MVCC MVCC 是多版本并发控制方法&#xff0c;用来解决读和写之间的冲突&#xff0c;比如脏读、不可重复读问题&#xff0c;MVCC主要针对读操作做限制&#xff0c;保证每次读取到的数据都是本次读取之前的已经提交事务所修改的。 概述 当一个事务要对数据库中的数据进行selec…

【初阶数据结构】详解二叉树 - 树和二叉树(三)(递归的魅力时刻)

文章目录 前言1. 二叉树链式结构的意义2. 手搓一棵二叉树3. 二叉树的遍历&#xff08;重要&#xff09;3.1 遍历的规则3.2 先序遍历3.3 中序遍历3.4 后序遍历3.5 遍历的代码实现3.5.1 先序遍历代码实现3.5.2 中序遍历代码实现3.5.3 后序遍历代码实现 4. 统计二叉树结点的个数5.…

微服务注册中⼼2

5.Nacos配置管理 Nacos除了可以做注册中⼼&#xff0c;同样可以做配置管理来使⽤ 5.1 统⼀配置管理 当微服务部署的实例越来越多&#xff0c;达到数⼗、数百时&#xff0c;逐个修改微服务配置就会让⼈抓狂&#xff0c;⽽且很容易出错。我们需要⼀种统⼀配置管理⽅案&#xf…

Java.反射

目录 1.获取class 的三种方式 2.利用反射获取构造方法 3.利用反射获取成员变量 4.利用反射获取成员方法 1.获取class 的三种方式 全类名怎么找? 全类名报名&#xff0b;类名 package MyReflect;public class Student {private String id;private String name;private int…

MySQL基础篇(黑马程序员2022-01-18)

1 MySQL数据库概述 1.1 MySQL数据库的下载,安装,启动停止 1.2 数据模型 (1)关系型数据库(RDBMS) 概念&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库。 特点&#xff1a; A. 使用表存储数据&#xff0c;格式统一&#xff0c;便于维护。…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25 1. PromSec: Prompt Optimization for Secure Generation of Functional Source Code with Large Language Models (LLMs) M Nazzal, I Khalil, A Khreishah, NH Phan - arXiv preprint arXiv:2409.12699, 2…

Python--操作列表

1.for循环 1.1 for循环的基本语法 for variable in iterable: # 执行循环体 # 这里可以是任何有效的Python代码块这里的variable是一个变量名&#xff0c;用于在每次循环迭代时临时存储iterable中的下一个元素。 iterable是一个可迭代对象&#xff0c;比如列表&#xff08;…

URI和URL的区别

1: 将 URI 转换为 URL import java.net.URI; import java.net.URL;public class UriToUrlExample {public static void main(String[] args) {// 创建一个 URI 对象URI uri = new URI("http://example.com/path/to/resource");// 将 URI 转换为 URLtry {URL url = u…

C语言中易混淆概念的关键字

最快的关键字---- register register&#xff1a; 这个关键字请求编译器尽可能的将变量存在 CPU 内部寄存器中而不是通过内 存寻址访问以提高效率。注意是尽可能&#xff0c;不是绝对。你想想&#xff0c;一个 CPU 的寄存器也就那么 几个或几十个&#xff0c;你要是定义了很多很…

变电站设备检测系统源码分享

变电站设备检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

大模型如何赋能智慧城市新发展?

国家数据局近期发布的《数字中国发展报告&#xff08;2023&#xff09;》显示&#xff0c;我国数据要素市场化改革步伐进一步加快&#xff0c;数字经济规模持续壮大&#xff0c;数字技术应用场景不断拓展。这一成就的背后是数字技术广泛应用&#xff0c;数字技术不仅影响着老百…