【问题标题】:Hybrid SQL and MongoDB solutions [closed]混合 SQL 和 MongoDB 解决方案 [关闭]
【发布时间】:2013-03-29 02:38:08
【问题描述】:

我发现了an architecture 和其他几个持久性混合架构。

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

【问题讨论】:

  • 结婚?将 ID 存储在一个系统中,代表另一个系统中的键/ID。除此之外,它还可以根据您的要求、平台、框架和所选语言进行定制。
  • 当我说结婚时,我的意思是同一个应用程序同时使用关系和非关系,但用途不同。

标签: mysql mongodb hybrid nosql


【解决方案1】:

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

请记住,关系存储被视为遗留系统。他们拥有权威实体,我们正在将这些数据移至 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 方法好得多。

【讨论】:

  • 很棒的帖子,你有更多关于基于触发器的方法的信息可以分享吗?在我看来,在某种程度上概括这一点并在与 mongo 中的 oplog 拖尾相结合时制作一个 1:1 的镜像并不难。有什么陷阱吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2011-04-03
    相关资源
    最近更新 更多