可插拔数据库接口

时间:2012-12-19 15:49:57

标签: database database-agnostic

我正在开展一个项目,我们正在确定多个批发商后端系统接口的规格。以下是我们正在使用的内容,

  1. 每个批发商都有多种产品,超过10,000种。每个批发商都为他们的产品定制价格。
  2. 正在访问的批发商名单将来会继续增长,因此系统可能会访问1000个批发商。
  3. 批发商在地理上分散。
  4. 该系统的界面将允许用户选择他们希望的批发商并浏览他们的产品。
  5. 产品价格更新应实时反映在网站上。因此,如果批发商更新价格,它应立即在网站上提供。
  6. 系统应与数据库无关。
  7. 系统应该很容易在批发商端设置,并且在日常活动中最小化。
  8. 最初,我考虑过为我们的每个批发商创建数据库,但未来可能有1000个批发商,这是性能和存储的最佳选择。 直接查询批发商数据库而不是在本地存储数据会更好吗?我们可以这样做并仍然保持数据库不可知吗? 这种实现最好的技术堆栈是什么?我需要某种ORM工具。

    首选基于Java的框架和技术。

    感谢。

1 个答案:

答案 0 :(得分:0)

如果您想创建一个可以切换数据库的软件,我建议使用Hibernate(如果您使用.Net,则使用NHibernate。)

Hibernate是一个不依赖于特定数据库的ORM,这使您可以非常轻松地切换数据库。它已经在大型应用程序中得到证明,并且很好地集成在Spring framework中(但也可以在没有Spring框架的情况下使用)。 (Spring.net是等效的,如果使用.Net)

Spring是构建大型可扩展应用程序的良好技术堆栈(包含IoC-Container,数据库访问层,事务管理,支持AOP等等)。

Wiki为您提供简短的概述:

http://en.wikipedia.org/wiki/Hibernate_(Java

http://en.wikipedia.org/wiki/Spring_Framework

  

直接查询批发商数据库会更好吗?   在本地存储他们的数据?

这取决于访问远程数据的可用性和延迟。数据库本身有几个可以通过多个服务器实例保持同步的可能性。问问自己,如果批发商数据库(部分)离线,应该/将会发生什么。也许并非所有数据都需要重复。

  

我们可以这样做并且仍然与数据库无关吗?

是的,请参阅我的回答与ORM(N)Hibernate相关。

  

这种实现最好的技术堆栈是什么?

“最佳”取决于您的要求。我喜欢春天。如果你使用.Net,内置的ADO.NET实体框架也可能适用。