如何使用 Yesod/Persistent 访问两个不同的数据库服务器?
How to access two different database servers with Yesod/Persistent?
我正在使用 Yesod 和 Persistent 构建网站(我使用的是基本的 yesod mysql 脚手架)。
我需要访问与主数据库不同的数据库,但 runDB
使用
默认连接参数和连接。有没有一种简单的方法可以使用 Persistent 和两个不同的连接参数?
创建连接的函数(如runSqlite
)在IO
monad 中。这意味着您可以使用 liftIO
在 Yesod 应用程序的 Handler
函数中调用它。您还可以立即 运行 查询数据库,这非常简洁。
查看脚手架代码,应该很容易定义另一个 rundDB
访问另一个使用不同连接参数创建的池。这意味着还要修改 Settings
以读取和存储额外的连接信息。
然而,主要问题之一是,需要记住根据要加载的数据类型使用哪个连接(或 runDB
)。另一种解决方案是使用联合 tables。
MySql(或 MariaDB)允许创建连接到远程数据库的代理 table。尽管它需要一些设置,但这是在客户端安全且更易于使用的优势。
我正在使用 Yesod 和 Persistent 构建网站(我使用的是基本的 yesod mysql 脚手架)。
我需要访问与主数据库不同的数据库,但 runDB
使用
默认连接参数和连接。有没有一种简单的方法可以使用 Persistent 和两个不同的连接参数?
创建连接的函数(如runSqlite
)在IO
monad 中。这意味着您可以使用 liftIO
在 Yesod 应用程序的 Handler
函数中调用它。您还可以立即 运行 查询数据库,这非常简洁。
查看脚手架代码,应该很容易定义另一个 rundDB
访问另一个使用不同连接参数创建的池。这意味着还要修改 Settings
以读取和存储额外的连接信息。
然而,主要问题之一是,需要记住根据要加载的数据类型使用哪个连接(或 runDB
)。另一种解决方案是使用联合 tables。
MySql(或 MariaDB)允许创建连接到远程数据库的代理 table。尽管它需要一些设置,但这是在客户端安全且更易于使用的优势。