Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture 远程访问其他数据库管理系统_Architecture_Database - Fatal编程技术网

Architecture 远程访问其他数据库管理系统

Architecture 远程访问其他数据库管理系统,architecture,database,Architecture,Database,请回答两个问题 1) 我正在阅读有关联邦存储引擎的文章,但对我来说,不清楚简单的远程连接是否有优势。有什么区别或优势吗 2) (真正的问题)在这种情况下:如果我有一个MySQL数据库,我需要访问和读取其他数据库中的敏感数据,可能使用不同的DBMS,并且可能我只有读取权限(无论如何,我不需要更多的权限来执行任务) 选项 联邦存储引擎只能解决MySQL DBMS中的问题 数据库抽象库(pdo,zend) 为每个外部数据库构建一个API 将我的数据库与其他数据库同步(对于此提议,可能有些过分) 我

请回答两个问题

1) 我正在阅读有关联邦存储引擎的文章,但对我来说,不清楚简单的远程连接是否有优势。有什么区别或优势吗

2) (真正的问题)在这种情况下:如果我有一个MySQL数据库,我需要访问和读取其他数据库中的敏感数据,可能使用不同的DBMS,并且可能我只有读取权限(无论如何,我不需要更多的权限来执行任务)

选项

  • 联邦存储引擎只能解决MySQL DBMS中的问题
  • 数据库抽象库(pdo,zend)
  • 为每个外部数据库构建一个API
  • 将我的数据库与其他数据库同步(对于此提议,可能有些过分)
我需要的只是:“约翰在你的数据库里?是的,不是”

最好的选择是什么


谢谢

很难判断您是在试图解决技术问题还是某种安全/管理问题。我将解决我认为是您的实际技术问题,确定用户是否在数据库中,并描述您的每个可能性的权衡。让我们按照复杂性的顺序讨论可能的解决方案

1.直接MySQL数据库连接 这将是使用特定于MySQL的数据库驱动程序直接连接到远程数据库,并发出硬编码的SQL语句。如果您可以确保两端都具有相同的模式知识,如果两端最好位于同一内部网络上,并且您负责所有要连接并需要此信息的客户端,那么这对于内部使用是很好的

2.PDO数据库连接 如果您同意模式,但不同意数据库供应商(即一方可能使用PostgreSQL而不是MySQL),那么PDO是更好的选择。只要查询相当简单,就不太可能遇到数据库兼容性问题。这是一个比#1更好的主意,因为它的工作量相同,但更灵活

3.数据库复制 我建议在决定使用数据库复制之前要格外小心。复制的设置很复杂,需要监督和管理。没有简单的复制设置。但是,如果:

  • 双方都必须具有低延迟访问,或者
  • 一方希望避免在另一方运行昂贵的查询,或者
  • 人们担心网络可用性
  • 如果您需要部分或全部这些功能,并且愿意支付维护费用,那么它可能是正确的选择。请记住,处理复制需要做大量的工作,而且它会将双方绑定到同一个数据库供应商

    4.联邦存储引擎 出于以下原因,我建议不要使用此选项:

    • 可选存储引擎并不总是包含在操作系统提供的MySQL包中
    • 没有被广泛使用的奇怪东西会毫无预警地中断
    • 由于
      联邦
      仅在MySQL数据库之间工作,因此它引入了新的故障类型,而不会有意义地简化应用程序代码
    我在看这个引擎的选择,想知道它有什么好处。我想,如果你把一个表从一个数据库移到另一个数据库,但是不想改变或不能改变查询它的应用程序代码,它可能是合适的,但是我不认为这是一个最前面的设计。如果不提高清晰度或性能,它将是脆弱的

    5.编写一个API 在此之前的所有选择都假设您可以信任所有需要数据库凭据信息的人。如果您需要将此信息的访问权授予第三方,API是一个不错的选择,因为:

    • 对API的访问可以与数据库分开管理
    • 使用API不需要密码
    • API将用户与内部数据库架构更改隔离开来
    不过,API也有缺点:

    • API将代码和责任添加到您的代码库中
    • 数据库的通用查询将需要大量代码
    • API会让您面临自己的安全问题
    其他问题和说明 你提到这是“敏感”信息。请允许我指出,对于PCI合规性和HIPAA合规性以及您处理受法律保护的私人数据的其他情况,这些选项都不合适,因为它们都涉及在不应访问数据的计算机上解密和共享数据。当您从机器B查询机器a上的数据库时,很难确定内存中数据的确切副本数。如果这是您的情况—私人、加密、受法律保护的数据—您将需要竭尽全力确保您的解决方案在法律上是合理的,我无法就如何继续提供建议,只能说上述内容是不够的


    如果不是这样,我想说,就效率和简单性而言,内部使用的最佳解决方案是使用PDO(#2)。否则,构建一个API(#5)。

    Daniel。谢谢就API而言。您所说的是我将数据访问权授予其他服务。好的,解释清楚了。但反过来说,如果我有一个数据库,我需要与n个远程数据库交换信息。每个服务都需要一个特定的API,对吗?如果这是你想要的方向,是的。我认为最好的选择(简单又便宜)可能是PDO。宝贵的帮助。谢谢