【问题标题】:Can SQL Server and Mongo be used together?SQL Server 和 Mongo 可以一起使用吗?
【发布时间】:2017-07-09 07:31:50
【问题描述】:

我们有一个以新闻为导向的大型网站,该网站的网络流量很高。该架构是您经常看到的 DB - Repo 层 - 服务层 - Asp.Net MVC。我们看到的问题是关于读取性能的。事实证明,所有这些 DDD 领域对象的东西在理论上都非常适合业务规则,但在优化读取性能方面却让生活变得更加困难。

作为一种解决方案,我正在考虑一些全新的东西(对我们而言):使用 noSQL。我想对我们网站上呈现的数据使用 noSQL 数据库。我们无法摆脱我们的 SQL Server(至少不会很快),但在我看来,一个实际的步骤是使用 Mongo 作为所有新开发的查询数据库。

我的问题是是否可以同时使用 SQL Server 作为记录数据库和 Mongo 作为查询数据库,如果可以,您将使用什么技术/技术来更新更新?我希望 Mongo 每 15 分钟刷新一次。

【问题讨论】:

  • 这可能是向programmers.stackexchange.com 提出的问题,但我会对答案感兴趣,因为我们正在考虑做同样的事情。
  • 嗯,我认为显然这是可能的 - 这里真正的问题是是否有工具或框架可以更容易地将 MongoDB 用作 SQL Server 的读取缓存.
  • 我认为使用真正的数据缓存比使用 mongodb 伪造数据缓存更好。
  • 也许是一个带有 CQRS(命令查询职责分离)的缓存层?

标签: sql-server mongodb nosql


【解决方案1】:

我建议查看 Greg Young 最初引入的 cqrsCommand Query Responsibility Segregation)模式。你也可以阅读here

此方法涉及拥有两个数据库:读取和写入。写数据库用作主要的写存储和读数据库用于查询。读取数据库可以具有非规范化数据。例如,如果您有文章,您也可以在其中嵌入作者信息,以便在 ui 上快速显示。而且一般nosql数据库很适合读存储。

在您的情况下,主要规范化数据库可以在 sql 中,而读取数据库可以在 mongodb 中。

一般来说,这种方法非常适合高流量系统。它有开源实现——ncqrs

2012 年微软的roadmap 也是这种方法。

来自我:我使用这种方法一年多了,并给予我个人的支持。

【讨论】:

  • CQRS 是我正在尝试做的事情,但我很难理解在使用现有遗留系统的同时如何实现这一目标。 nCQRS 似乎需要大量重写。我试图从简单的事情开始:创建一个只读 MongoDB 并将其用于新的客户端页面。正如 Udi 所说,“……CQRS 是一种方法,一种思维定势,而不是千篇一律的解决方案。”
  • @John:是的,Udi Dahan 像往常一样享有权利。应用 cqrs 意味着巨大的重写,但在未来会带来很多好处。不仅提高了性能和可扩展性,而且还简化了应用程序代码并实现了逻辑分离。
猜你喜欢
  • 2012-05-14
  • 2023-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多