当前位置: 首页 > wzjs >正文

一个公司做几个网站二极管 东莞网站建设

一个公司做几个网站,二极管 东莞网站建设,wordpress 去掉页脚,东莞服务公司推广各种工具都已将软件工程实践引入到数据工程中,但仍有差距存在,尤其是在测试和工作流等领域。SQLMesh 的目标是在这些领域开辟新的天地,解决像 dbt 这样的竞争产品尚未提供强大解决方案的难题。在这篇文章中,我将对 SQLMesh 进行简…

各种工具都已将软件工程实践引入到数据工程中,但仍有差距存在,尤其是在测试和工作流等领域。SQLMesh 的目标是在这些领域开辟新的天地,解决像 dbt 这样的竞争产品尚未提供强大解决方案的难题。在这篇文章中,我将对 SQLMesh 进行简要介绍,分享有关其功能和潜在影响的见解。

安装SQLMesh

上文我们已经创建了示例SQLMesh项目,你可以使用它来学习本文中的示例。

python3 -m venv .venv
source .venv/bin/activate# SQLMesh uses extras to install specific modules that are used in the project. 
# This allows you to quickly extend SQLMesh with the desired capabilities 
# and at the same time ensure a lean footprint.
pip install "sqlmesh[postgres,web]"

项目结构介绍

如果你以前使用过dbt,那么您会对SQLMesh项目框架感到熟悉。开发人员已经确保SQLMesh与dbt向后兼容,允许现有dbt项目的无缝迁移。

  • config.yml - 在您的项目的根目录下,您会发现一个简洁明了的基于 YAML 格式的 SQLMesh 配置文件。此文件内容简短,主要侧重于设置网关(多个网关时)以及定义模型的默认 SQL 语言。
  • Audits - 验证数据是一项至关重要的功能,它应当让数据的生产者和消费者都确信数据符合预期。dbt 也提供了类似的功能,称为“数据测试”。
  • macros - 现在被视为标准的一项功能是能够通过编程式的函数(例如 if 语句、for 循环和筛选表达式)增强静态 SQL 语句。这种功能通常通过宏系统来实现,比如在 dbt 中使用 Jinja,这是一个流行的基于 Python 的模板引擎。SQLMesh 也支持 Jinja,但更进一步提供了自己的宏系统。与简单的字符串替换不同,它解释 SQL 语义,使其成为更强大和灵活的工具。在我看来,这种新增的能力不仅因其优雅的语法而值得称赞,还因其强大的功能而如此,值得肯定。
  • Models- SQLMesh 在定义数据模型方面与众不同的地方在于其如何管理元数据。它并非像其他工具那样使用单独的 YAML 文件,而是直接在 SQL 代码中定义元数据。在我的测试中,我发现这种方法特别直观且对开发者友好,使得建模过程更加顺畅和高效。
    • 原始数据集(Seeds) - 尽管这种情况可能不常见,但我们都知道它迟早会发生的:整合基于 CSV 或 JSON 的数据集。为了解决这个问题,SQLMesh 与 dbt 一样,包含了对原始数据集的支持。在 SQLMesh 中,数据集文件存储在指定的文件夹中,然后在 Models 文件夹中定义相应的模型。
  • 测试(tests) - 我完全赞同 SQLMesh 在为数据建模实现单元测试方面的做法。它并非采用传统的审计方式,而是侧重于一种直接的输入与输出对比检查,这种检查能够快速且轻松地执行,且无需依赖大量资源。这种方法不仅加快了反馈流程,还为数据工程师提供了实用的工具,使他们能够在数据的背景下采用诸如测试先行开发之类的概念。自 1.8 版本起,dbt 还提供了“单元测试”。

SQLMesh核心机制

这是SQLMesh的另一个真正优势所在。开发人员已经解决了数据集开发中的一个关键挑战:管理数据模型的多个版本。SQLMesh引入了虚拟数据环境的概念,它在两个层面上运行:物理和虚拟。

SQL Mesh Engine├── 物理层:数据库仓库 + 快照存储├── 虚拟层:环境隔离视图 + 版本映射├── 元数据引擎:指纹计算 + 依赖解析└── 测试引擎:快照验证 + 自动回滚

在这里插入图片描述

在物理层面,当一个新项目启动并首次执行计划时,会为每个模型创建一个快照(版本 1)。在所有测试和审计成功完成后,虚拟层面就会发挥作用。会为相应的环境创建一个视图,指向最新的快照。这种方法确保了有效的版本管理以及无缝的更新。

# sqlmesh plan [environment name]
# if you provide no name it will by default use "prod" as environment.
sqlmesh plan

当显式指定环境时,例如“dev”,流程将为dev创建虚拟层,并将视图指向模型的最新快照版本。

sqlmesh plan dev

当对模型进行修改时,SQLMesh 会采用一套复杂的指纹识别系统,该系统不仅会分析模型本身,还会分析整个依赖树。这确保了所有受影响的模型都得到了验证。如果该变更首先在“开发”环境中应用,那么在成功测试和审核后会创建一个新的快照版本,并且“开发”环境中的视图指针会被更新到新的版本。
如果出现操作错误,只需执行一个命令即可轻松回滚到之前的快照版本,无需重新处理数据。这真是太巧妙了!

sqlmesh rollback

如果你想知道那些不再使用的旧快照会怎样处理,那么 SQLMesh 提供了一个解决方案:一个名为“Janitor”的垃圾回收器。此进程会在每次计划执行时自动运行,或者在需要时通过 CLI 命令手动触发运行。

sqlmesh janitor

最后总结

为了提升数据工程的质量,采用成熟的软件工程实践和原则至关重要。SQLMesh 在这方面取得了显著进展,引入了诸如虚拟数据环境等创新概念。我还赞赏其通过单元测试方法来提高测试效率的专注点。在实际操作中,我发现以 YAML 格式定义模拟对象并快速有效地验证 SQL 模型的逻辑特别方便,而且无需依赖大量资源。

然而,就像任何进入成熟市场的新竞争者一样,SQLMesh 必须在行业领导者 dbt 的竞争中证明自己的实力。尽管我认为 SQLMesh 具有强大的潜力能够确立稳固的地位,但 dbt 的大量使用者是否会转向 SQLMesh 还有待观察。话虽如此,我建议你仔细研究一下 SQLMesh 的理念,并评估其可能为组织带来的价值。

http://www.dtcms.com/wzjs/555469.html

相关文章:

  • 昆明网站搜索优化网站建设新的开始
  • 中国建设银行驻莫斯科网站wordpress默认邮件在哪里设置密码
  • 淘宝放单网站开发网站空间租用多少钱
  • 邹城网站制作微网站免费建站系统
  • 怎么注册网站啊wordpress微商城模板下载
  • wordpress 中型网站wordpress 中文网站
  • 从事网站开发需要什么西安有关做网站的公司
  • 阳光梦网站建设深圳做网站推广
  • wordpress外贸网站好用的模板网站备案域名用二级域名
  • 软件开发流程简介排名seo怎么样
  • 江都城乡建设局网站微信开发者平台怎么登
  • 做网站每个月可以赚多少钱cloudflare做侵权网站
  • 网站建设的三网合一企业个人邮箱怎么注册
  • 购物网站排名前十wordpress怎么使用七牛云储存
  • 郑州铭功路网站建设学做网站php
  • wap网站制作怎么做福清做网站的公司
  • 做美食的视频网站有哪些wordpress自定义通栏
  • 南通移动网站建设专门做孕婴用品的网站
  • 社区门户网站建设方案有人在天琥设计学过吗
  • 北京建站公司网站网站制作方案有哪些
  • 广州网站建设技术wordpress去广告
  • 手机网站底部导航代码国家企业信息信用系统
  • 重庆忠县网站建设公司哪家好WordPress D8 5.1
  • 合肥网站建设网站建设标语文案
  • 阿里建站系统国外做网站公司能赚钱
  • 网站建设的实施方案怎么建立一个网站让百度搜到
  • 公众号的网站怎么做的揭阳网站建设揭阳
  • 一个公司网站设计需求西安网页公司
  • 查看网站主机有什么特点
  • 淄博网络公司做网站的电话seo推广系统