我们当前的生产数据库环境包含大约 10 个类似管理的数据库。我们的机构刚刚购买并正在安装新的刀片机箱,并希望将我的数据库移至新实例(将其他 9 个数据库保留在另一个实例上)。这个决定是由我们的一名 IT 员工而不是 DBA 做出的。我是一名项目经理,而不是 DBA,但我知道,没有必要对这个决定有好感,我敦促我们的 IT 部门根据对数据库最有利的原则做出合理的决定。我们的 IT 部门表示,把所有的鸡蛋都放在一个篮子里是不好的,还表示我的数据库包含“监管数据”,因此它应该放在自己的实例上。
几个事实: - 当前实例上的所有数据库都不是 OLTP 数据库,也不是数据仓库 - 我的数据库目前与生产环境中的其他几个数据库有连接/视图
我的问题如下:
我忽略了关于鸡蛋放在篮子里的说法,错了吗?(您好,这就是我们有维护计划/灾难恢复计划的原因)。我要说的是,其他数据库也有监管数据。
我需要问什么类型的问题来确定这是否是一个合理的决定?(一位 DBA 朋友提到,如果所述数据库的服务级别协议与其他数据库没有根本区别,那么他们为什么要这样做?)
我对链接服务器进行了一些研究。对于我目前设置的视图依赖于来自其他数据库的数据,我应该提出哪些论据?
答案1
据我所知,您的环境没有任何“官方”DBA。由于距离太远,很难做出很多具体的陈述,但以下是一些我会仔细考虑的事情。
首先,IT 人员完全有可能是正确的,出于某些监管原因,数据需要放在另一台服务器上。有时,规则就是规则。它们可能是由政府(或法律系统)人员协商制定的,而不考虑它们在技术上如何实施。即使这些规则可能不是 100%“合乎逻辑”,你也不会改变它们。
此外,作为一项总体考虑,我认为只要性能没有受到损害,正常运行时间、灾难恢复和其他 SLA 涵盖的项目没有受到负面影响,那么 IT 员工就真的要被解雇了。您不负责遵守法规(或者我猜您会接受培训以更熟悉规则),而 IT 员工负责遵守法规。如果应用程序出现问题或他们违反了某些监管规则,他们将不得不承担后果。您可以说“IT 人员告诉我不会有问题。”(如果系统在新服务器上确实存在任何问题,我肯定会查明如果数据库在旧服务器上是否会发生该问题。)
作为一名从事过许多整合项目的资深 DBA,您通常希望实例数量更少,而不是更多。(我说的不是开发/测试/质量保证/生产实例;我们这里只讨论生产。)管理较少数量的实例更容易,并且可以降低许可成本。有时,有些人喜欢高服务器数量的想法,认为越多越好。“100 台服务器,每台 1 个数据库”在某种程度上比“1 台服务器上 100 个数据库”更好。
他们是否会将其他包含监管数据的数据库移至刀片服务器,还是只针对您的数据库?如果要移动更多数据库,为什么您的数据库会先移动?
您的数据库有什么样的 SLA?刀片服务器能够处理吗?他们怎么知道的?如果旧服务器是集群的,新刀片服务器也是集群的吗?正常运行时间会一样吗?或者更好?存储会一样吗?
是否有外部报告或应用程序“知道”所有这些数据库都位于同一个实例上?MS Access 数据库或 Excel 工作表如何进行数据提取?是的,这种事情应该隐藏在视图或存储过程后面,但我见过很多情况并非如此。您不想在移动数据库后才发现需要重新编写应用程序代码。任何此类工作都需要计入移动数据库的工作量中。
从更消极的角度来看,有可能“IT 人员”对 SQL Server 了解不够,无法安心使用 SQL Server 的功能(登录、角色、权限、加密、命名实例等)来正确地将“监管数据”隔离在一个实例上。您可以将其视为“IT 人员需要更多培训/需要有人购买 DBA”,也可以将其视为“IT 人员需要安心使用他们已知的知识来遵守法规”。这两种观点都很明智,各有利弊。
如果当前服务器存在性能问题,IT 人员可能希望通过将数据库移至另一台服务器来改善这种情况。对于特定数据库的至少某些功能来说,这可能确实如此,但数据库间的依赖关系可能会非常成问题。由于网络延迟、正确优化查询的能力下降以及有时获取数据的方式,链接服务器查询的性能将无法与本地查询的性能相匹配。有时性能还可以,有时则不行。最好的判断方法是在新服务器上线之前测试您的代码。一旦您进入新服务器,就很难对性能不佳的查询采取任何措施,这不是您想要感到惊讶的事情。我过去见过有人遇到这种情况。响应通常是将数据从远程服务器复制到本地服务器,通常通过 SSIS 或使用链接服务器。这是额外的工作,并且可能会出现数据“陈旧”的问题。
此外,如果配置不当,链接服务器可能会成为安全漏洞。如果您的 IT 团队主要担心的是监管数据的访问,那么这也应该引起他们的关注。
如果一个数据库依赖于其他数据库,则它们都是同一系统的一部分。将数据库移至另一台服务器将使系统发生故障的可能性更大,因为发生故障的因素更多。
鸡蛋和篮子并不是一个好的比喻,尽管它经常被使用。鸡蛋不相互依赖。数据库可以相互依赖。相互关联的数据库应该被视为一个系统。将一个数据库移动到另一台服务器将导致整个数据库失败。系统数据库更有可能出现故障,因为有更多的东西可能出现故障。
那么问题就变成了,“如果你随机让其中一个数据库离线,整个系统会受到怎样的影响?”换句话说,如果旧服务器崩溃了会发生什么?如果新刀片服务器崩溃了会发生什么?如果其他九个数据库离线,整个公司都停止工作,那么你的数据库是否正常运行又有什么关系呢?
答案2
我的数据库目前与生产环境中的其他几个数据库有连接/视图
好的,那么这将如何工作?链接服务器?这将给网络带来大量流量。查询行为(查看行为)可能会发生巨大变化。