Snowflake cloud data platform 雪花数据仓库中的模式版本控制
我感兴趣的是,通过使用模式版本控制,雪花数据库的用户可以不受更改的影响。我一直在研究如何使用连接语法来定义一个模式,在这个模式中,将为每个版本创建一个包含核心表视图的新模式,任何未更改的视图都将被复制,其他被修改的视图将被向后兼容。当用户连接时,理想情况下会为他们提供所需版本的正确连接语法 我遇到的问题是,有多个团队各自拥有与核心业务领域关联的模式,我认为不可能在连接语法中定义多个模式 有没有人在有多个用户、模式和开发团队的环境中实现了这一点 问候,Snowflake cloud data platform 雪花数据仓库中的模式版本控制,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我感兴趣的是,通过使用模式版本控制,雪花数据库的用户可以不受更改的影响。我一直在研究如何使用连接语法来定义一个模式,在这个模式中,将为每个版本创建一个包含核心表视图的新模式,任何未更改的视图都将被复制,其他被修改的视图将被向后兼容。当用户连接时,理想情况下会为他们提供所需版本的正确连接语法 我遇到的问题是,有多个团队各自拥有与核心业务领域关联的模式,我认为不可能在连接语法中定义多个模式 有没有人在有多个用户、模式和开发团队的环境中实现了这一点 问候, Luke作为发布过程的第一步,您可以将“当前
Luke作为发布过程的第一步,您可以将“当前版本”架构克隆到新的“x版本”架构,然后使用原始名称部署新架构 例子: 创建模式MY_DB.MY_SCHEMA_20200103克隆MY_DB.MY_SCHEMA 。。。部署发布步骤 重要注意事项
- 必须小心处理所有引用,以确保它们指向正确的对象,无论该对象是版本化架构中的对象还是当前架构中的对象
- 这将复制模式中所有对象的授权,但需要授予新创建模式的权限
accountadmin
凭据的CI/CD管道,以便在生产中进行更改
因为它是用Python编写的,所以可以将其连接到Git工具(如GitHub或GitLab),在合并请求中提交更改,并在生产数据库中运行之前获得批准
以下是文档:
根据Snowflake文档,这也得到了官方支持:
Alembic迁移的示例可能如下所示:
Revision ID: 78a3acc7fbb2
Revises: 3f2ee8d809a6
Create Date: 2019-11-06 11:40:38.438468
"""
# revision identifiers, used by Alembic.
revision = '78a3acc7fbb2'
down_revision = '3f2ee8d809a6'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.create_table('test_table',
sa.Column('op', sa.String(length=255), nullable=True),
sa.Column('id', sa.String(length=255), nullable=False),
sa.Column('amount', sa.BigInteger(), nullable=True),
sa.Column('reason', sa.String(length=255), nullable=True),
sa.Column('deleted', sa.Boolean(), nullable=True),
sa.Column('user_id', sa.Integer(), nullable=True),
sa.Column('company_id', sa.Integer(), nullable=True),
sa.Column('inserted_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('dw_import_filename', sa.String(length=255), nullable=True),
sa.Column('dw_import_file_row_number', sa.Integer(), nullable=True),
sa.Column('dw_import_timestamp', sa.TIMESTAMP(), nullable=True),
sa.PrimaryKeyConstraint('id'),
schema='test_schema'
)
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('test_table', schema='test_schema')
正如您所看到的,您必须提供升级,并具有降级的能力,这将逆转升级。如果您对Alembic有任何其他问题,或者您对此感兴趣,那么我很乐意解释更多 我听说过许多外部工具(GitHub、CircleCI等),客户将这些工具实现到他们的雪花工作流中,以更改模式的控制。我不认为这些工具现在可以直接集成到Snowflake中,但这将是一个很好的功能要求。是的,我也遵循同样的过程。每次我在snowflake中创建或修改表、视图和存储过程时,我都会更改并提交给Git repos。所以我有做过改变的历史数据。当你有一个大的团队并且在同一个过程中工作时,这个过程也变得很重要。但正如@SuzyLockwood所说,没有这样的工具直接集成到snowflake中,我们只需要实现我们自己的处理过程。