【问题标题】:NoSQL independent application architectureNoSQL 独立应用架构
【发布时间】:2012-08-14 18:54:51
【问题描述】:

如何创建一个 Web 应用程序(使用 Java、C# 或 JavaScript),它使用 NoSQL 数据库作为后端,但可以灵活地更改后端(例如从 couchDB 到 mongoDB),而无需重写很多代码。

我认为最好使用一些框架,例如 Java 的 Spring 和 JavaScript 的 Wakanda。如果这是要走的路,请列举几个框架。

我知道不同类型的 NoSQL 数据库之间存在很大差异,我也知道这取决于需要解决的问题。但这是一个理论问题,因此我想获得许多不同的选项,可以用来解决不同的问题,同时让 NoSQL 的应用程序“独立”(在某种程度上,例如仅在基于图形的)后端。

感谢您的回答和时间。

【问题讨论】:

  • “请列举几个框架” - 这不是合适的场所。要求列表或意见的问题、投票问题等不是 Stack Overflow 的主题。至于您的其他问题,您不一定必须使用框架。抽象 NoSQL 数据库就像抽象任何数据持久层一样。通常,您将表示逻辑、业务逻辑和持久性逻辑分开。在这种情况下,您的持久性逻辑将使用 Mongo 之类的东西,但您可以将其更改为使用 Couch,而无需更改任何其他逻辑。
  • 是的,我知道。但是如果你有很多查询,即使你有单独的逻辑,你仍然需要重写很多代码。如果你使用 SQL,那么从 MySQL 迁移到 PostgreSQL 不会是一个大问题,但是从一个 NoSQL db 迁移到另一个意味着重写大量代码。我只是想知道人们有哪些选择来缓解可能的迁移。

标签: architecture nosql database-independent


【解决方案1】:

如果你真的想独立于数据库,你必须抽象出所有实体和数据库访问。最常见的方法是实现存储库模式。

请注意 OR/Ms(和 NoSQL 客户端)通常要求您违反封装(公共设置器或使用 List<T> 而不是 IEnumerable<T> 用于集合属性)。

如果这是您愿意做出的牺牲,您也可以将您的域实体用作数据库实体。 (恕我直言,在小型项目中很好,但在中/大型项目中则不然)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-28
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多