首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设计在单个项目中使用不同类型数据库的项目的良好方法

设计在单个项目中使用不同类型数据库的项目的良好方法
EN

Stack Overflow用户
提问于 2016-02-25 07:24:23
回答 3查看 43关注 0票数 0

假设我的项目使用了3个不同的数据库MySql、Redis、Cassandra。我想概括一下我的设计,以便

  1. 它将在运行时根据输入类型返回相应的数据库客户端(类似于工厂设计模式)。
  2. 将来,我可以轻松地添加或替换DB,而不需要太多的代码更改

类似这样的情况,假设在运行时,如果我想读取/更新mysql db,我的设计应该返回mysql db连接形式连接池,现在我想对Redis进行同样的操作,因此基于输入,它应该从连接池返回Redis连接。

有谁能建议我设计我的项目时应该遵循的最佳方法?

EN

回答 3

Stack Overflow用户

发布于 2016-02-25 10:42:49

这类事情没有灵丹妙药,但很好的是,你能提前考虑这件事。您需要做的是将这些数据库与您的代码逻辑隔离开来,这样代码就不知道数据来自哪个存储区或来自哪个存储区。

  1. 工厂模式将帮助您找到在代码执行过程中需要使用的抽象的具体实现。我觉得你走的路很对。我还会评估您是否有办法通过配置来设置(您真的需要在运行时决定还是可以更早地推断)。
  2. 为了方便地切换实现,最常用的技术是依赖反演。简化后,它的意思是为您的依赖项(在本例中是数据库)抽象一个公共接口,并对该接口执行所有客户端代码。这样,如果您决定交换接口后面的具体实现,您的客户端代码就不需要更改。快乐的日子!在数据库方面,我可能会将这些接口分为两个(读/写),因为您可能无法在它们之间提供100%兼容的接口。
票数 0
EN

Stack Overflow用户

发布于 2016-02-26 09:24:21

一个很好的候选人

在运行时根据输入类型返回相应的数据库客户端,并且可以轻松地添加或替换DB,而无需进行太多的代码更改。

战略设计模式。它定义了一系列算法(在您的例子中是DB),封装每个算法,并使它们在运行时可互换。策略允许算法独立于使用它的客户端。

票数 0
EN

Stack Overflow用户

发布于 2016-02-27 21:02:55

DAO由一个IoC (DI)容器注入。

这样,业务服务(即DAO的客户端)就不涉及数据访问逻辑细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35620863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档