在Live系统中分离演示数据

时间:2008-10-03 13:26:44

标签: oracle

如果我们放弃将演示数据放入实时系统一分钟的权利和错误(这是一个完全独立的讨论!),我们被要求在我们的实时系统中存储一些演示数据,以便它可信在没有烟雾+镜子的情况下展示(例如我们想使用相同的登录页面)

因为我确信这是许多其他人必须具备的挑战 - 我有兴趣知道人们设计了什么方法来分离这些数据,这样它就不会妨碍日常运营在他们的系统上?

正如我上面提到的,我知道这可能不是最佳做法。 : - )

4 个答案:

答案 0 :(得分:3)

您是否可以将数据隔离到新数据库中,只需重定向您的连接字符串(它们不是硬编码的,对吗?对)?指向演示数据库。这样,实时数据不会受到污染,并且您的代码看起来完全相同。我们实际上以这种方式进行三层部署系统,我们在那里进行本地开发,部署到每几个月都有实时数据快照的QC环境,然后在测试完成后部署到实时。

答案 1 :(得分:1)

FWIW,我们正在考虑使用Oracle的行级安全/虚拟专用数据库功能来分离其余部分的演示数据。

答案 2 :(得分:0)

我经常在某些类型的直播系统上看到它。 例如,超市中的销售点系统:收银员在销售终端的生产点进行培训。

关键是要仔细识别测试或训练数据。我不会说如何在数据库中对此进行建模有任何明确的最佳实践 - 它将具体应用于其中。

您必须仔细定义测试/培训方案所涵盖范围。例如,您不希望培训/测试事务出现在生产报告中(但您可能希望能够使用此数据创建报告以进行培训/测试)。

答案 3 :(得分:0)

完全不同意乔。无论实现如何,Oracle都有一个工具来执行此操作。在我读你的答案之前,我会说VPD ......但这可能对生产产生影响。

请记住,查询中的每个表都会从

更改
SELECT * FROM tableA 

SELECT * FROM (SELECT * FROM tableA WHERE Data_quality = 'PROD' <or however you do it>

每张政策都是......

因此,假设您的测试数据必须跨越每个表,每个表都必须有一个策略,并且每个表都将在SQL开始工作之前进行过滤。

您甚至可以向用户隐藏该列。如果你这样做,你需要写一些灵巧的政策。您必须根据数据的插入方式创建该值,并将列公开给某些管理员帐户进行维护。