1

我发现了一个架构和几个持久性混合架构。

我想知道是否有人有实现级别的链接,详细的文章,教程,展示了如何将 MongoDB(或 Cassandra,CouchDB)和 MySQL(任何 RDBMS)结合在一起(对于 PHP,Java 应用程序)

4

2 回答 2

3

我可以分享一些关于我在当前工作中是如何做到这一点的细节。

请记住,关系存储被视为遗留系统。他们拥有权威实体,我们正在将这些数据移动到 MongoDB 进行读取。展望未来,我们希望写入也转到 MongoDB,而不是关系系统。

将数据从 MySQL 移动到 MongoDB(特别是 Wordpress)

TL;DR - 使用触发器和存储过程

对于这种方法,我们在 MySQL 中的表上设置触发器来监视插入、更新和删除。当其中一个操作发生时,我们将触发一个存储过程,该过程将生成一个实体并将其放入充当队列的表中。

然后我们使用一个外部进程每隔几秒钟轮询一次该表。我们编写了一个存储过程来确保我们不会多次处理同一个排队项目。

外部进程(Mule ESB 流)将对从队列表读取数据的存储过程的结果进行少量转换,然后将其传递给 MongoDB。

从 Wordpress 后端发布后,可能需要 2 秒才能在 MongoDB 中将 Wordpress 帖子视为 JSON 文档。

将数据从 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 方法好得多。

于 2013-03-29T22:53:13.670 回答
0

PHP 或 Java 应用程序将围绕对象(实体)构建。根据实体的角色和使用模型(它们被持久化和检索的频率),您可能需要为其选择合适的数据存储。例如,您可以在 RBDMS 中保存用户名密码,在 mongodb 等面向文档的数据库中保存您的参与者对象(文档、音乐、博客文章等),您可以在 redis 中保存经常使用的小对象,如文件系统层次结构。这完全取决于您的架构 - 没有现成的可用框架。

于 2013-03-29T13:34:05.680 回答