我可以分享一些关于我在当前工作中如何做到这一点的细节。
请记住,关系存储被视为遗留系统。他们拥有权威实体,我们正在将这些数据移至 MongoDB 进行读取。展望未来,我们希望写入也转到 MongoDB,而不是关系系统。
将数据从 MySQL 移动到 MongoDB(特别是 Wordpress)
TL;DR - 使用触发器和存储过程
对于这种方法,我们在 MySQL 中的表上设置了触发器,用于监视插入、更新和删除。当其中一个操作发生时,我们将触发一个存储过程,该过程将生成一个实体并将其放入一个充当队列的表中。
然后我们使用外部进程每隔几秒轮询一次该表。我们编写了一个存储过程来确保我们不会多次处理同一个排队项。
外部进程(Mule ESB 流)将对从队列表读取数据的存储过程的结果进行少量转换,然后将其传递给 MongoDB。
从 Wordpress 后端发布后,在 MongoDB 中将 Wordpress 帖子作为 JSON 文档查看可能需要 2 秒。
将数据从 SQL Server 移动到 MongoDB(方法 1)
我使用的第一种方法是编写生成 XML 的存储过程。 XML 语法在 TSQL 中有点笨拙,但它完成了工作。好处是您可以使 XML 结构任意深。
一旦您生成 XML,它就是一个跳跃和跳跃,以编写一个将 XML 转换为 JSON 的工具。然后,您可以让一个外部进程(我们再次使用 Mule)获取 XML 结果,将它们转换为 JSON,然后写入 MongoDB。
将数据从 SQL Server 移动到 MongoDB(方法 2)
这种方法涉及在 Visual Studio 中编写一个 C# 项目,该项目被部署为 SQL Server 中的 CLR 函数/存储过程。
这是迄今为止我最喜欢的方法,因为代码很容易编写并且在服务器上运行速度非常快。您甚至可以在 CLR 函数中对结果进行序列化,然后将它们存储在临时表中 - 或者只是从存储过程中返回它们。
说服 DBA 将您的代码(可能包括 JSON 序列化程序)部署到生产 SQL Server 机器上可能很困难,但好处是非常突出的。它的性能也比 XML 方法好得多。