需要有关构建具有双MySQL和MSSQL连接的php框架的建议


Need advice on building php-framework with dual MySQL and MSSQL connectivity

我的主要存储是MySQL,但我必须使用存储书名和ID的远程MSSQL服务器。我对该远程 MSSQL 服务器具有只读访问权限。所有其他数据(书籍作者,年份,描述等)都存储在我的本地MySQL数据库中。我无法在本地MySQL中存储标题(这是协议条件)。我的PHP框架允许为这些书添加描述和许多其他数据 - 所有数据存储在MySQL中。

总的来说,我开发这个框架还可以,但我有一个弱点。在这种情况下,我需要有关如何组织搜索的专业建议。由于我使用 2 个不同的数据库,因此我不能使用简单的连接或其他任何东西。当然,我可以做两步搜索:1)获取标题,2)获取其他内容,然后在PHP中形成结果。但恐怕会很慢。有没有办法以某种方式从 MySQL 临时表中的 MSSQL 中选择标题?或者我可能错过了一些用于此类数据库合作的好技术?任何想法都非常感谢!

MySQL对MSSQL一无所知,因此您无法跨两种不同类型的数据库服务器连接。 但是,您的结构对于您所描述的来说确实不太糟糕。 在我看来,您有三种可能的搜索方案 1) 仅搜索标题 2) 搜索标题和其他信息,3) 仅搜索其他信息。 你的问题是在情况2中,情况1和3都很容易。

正如你提到的,我处理它的方式是一个两步过程,有点像这样:

1) 获取搜索查询

2) 获取可能匹配的任何标题的 MSSQL 结果

3)a)

将标题结果写入临时表或b)存储在内存结构中(取决于您用于搜索结果评分的内容 - 如果使用MySQL全文搜索,则需要写入临时表)

4a) 如果标题位于临时表中,则对连接表执行搜索

4b) 如果书名在内存中,请根据需要搜索其他书籍信息并连接内存中的数据。

由于不在本地存储标题的限制,无论如何,您都会遇到一些性能问题,但尽量减少查询数量会有所帮助。

附言 您的协议究竟说了什么? 你能把书名存储在内存中吗?还是始终必须对远程服务器执行查询? 如果可以将它们存储在内存中,也许可以查询MSSQL数据库并将标题放在MySQL内存表(http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html),当服务器关闭时,该表将从内存中消失。