微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ColdFusion - 有没有办法在开发环境中从 prod 数据库中提取查询详细信息?

如何解决ColdFusion - 有没有办法在开发环境中从 prod 数据库中提取查询详细信息?

我想要从 prod 到 dev 的订单详细信息和相关表的副本,我想知道我们是否可以使用 ColdFusion cfquery 或 queryExecute 从开发环境查询 prod 服务器的详细信息?

解决方法

这一切都取决于您对生产的访问。安全性要求 prod CF 可以访问 prod DB,但在 prod 网络之外没有对 prod DB 的外部访问。

您需要使用数据库工具导出生产表数据,然后在开发数据库中恢复该数据。这会引发多个与 Personal Identifiable Information (PII) data 相关的安全问题。您需要清理这些数据,以便开发者无法访问实际的、真实的用户数据。

那么,您(应该)可以通过 CF 执行此操作吗,不。也许通过数据库工具。

,

你可以。我们在我以前工作的地方做过,但可能会有问题。这样做

  1. 安排您的 CF 开发环境以获得必要的数据库权限。事实上,它可能已经有了。
  2. 在 CF 开发环境中设置 DSN。

Arian J. Moreno 提到了安全问题。除此之外,您还必须担心代码复杂性和数据保护。

代码复杂性基于假设您的 CF 开发环境具有生产和开发数据库的 dsns。这意味着两个 dsn 将具有不同的名称,这在您将代码提升到生产环境时变得很重要。开发人员要么必须在最后一刻更改代码,要么结合一些逻辑,使 dsn 成为基于环境的变量。我们都做了。

当 CF 具有读/写权限而不是只读权限时,数据保护是一个问题。您需要确保开发活动不会无意中影响生产数据。

,

这是可以完成但可能不应该完成的事情的完美示例.

有多种方法可以完成您的要求,但几乎所有方法都涉及一些额外的配置或与其他团队合作。

并且根据您的业务类型,这也可能会产生法律或财务后果。

无论如何,在我看来,这不应该是开发人员被允许做的事情。允许开发环境访问生产环境会带来很多问题。其中最重要的是内部威胁可能会破坏您的数据。或者,更有可能的是,将代码直接部署到生产环境(或意外部署)的诱惑,然后在下一次开发部署中消失了。

我认为您的实际需求(也是一个相当普遍的需求)是为了开发目的而拥有类似生产的数据。

注意:我主要使用 Microsoft SQL Server,因此如果您使用不同的 DBMS,我的建议可能不适用。

在我看来,做到这一点的方法完全在数据库方面。让数据库相互协作,而不是让开发环境访问生产数据库。

选项 1:这几乎就是 SSIS(SQL Server 集成服务)的用途。根据您的 DBMS,这可能是最简单的方法。

选项 2:配置 Prod 和 Dev 之间的共享服务器访问。除非别无选择,否则我不会推荐这个。有很多安全隐患。

选项 3:我推荐的是:

  • 确保在开发中编写对数据库所做的任何更改。

  • 备份您的生产数据库。

  • 在开发服务器上恢复您的生产备份。

  • 运行一个将删除、匿名化或消除 PII 的脚本。

  • 运行您的集成脚本以进行必要的架构更改。

  • 您现在在开发环境中拥有生产数据的全新副本。

    这还允许您验证数据库更改的部署过程。无论您使用什么 DBMS,您都应该能够做到这一点。这将需要一些初始设置和测试,但是一旦第一次编写脚本,就应该很容易重复。

如果您只需要一个表,请从 Production 编写数据和架构脚本,在 Dev 数据库上运行更改,处理 PII,运行集成脚本。

如果您需要的任何数据或表架构涉及主键或外键(或其他约束),您可能也必须考虑这些。这就是为什么我总是发现完整的备份/恢复是最好的选择。但是,您必须确保对 Dev 数据库的更改认真编写脚本,否则您将在恢复时丢失它们。

将生产数据迁移到 Dev 数据库是非常可行的,但需要进行一些规划、验证和测试以确保其正确无误,同时又不牺牲数据库的安全性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。