如何屏蔽DB?

时间:2013-04-07 17:36:50

标签: java database api architecture data-access-layer

我必须提供对我的语义的访问。目前,它是一个RDBMS,但后来我可能会使用其他非RDBMS数据源(图形,hadoop等)。

我的语义的消费者位于公司域/内部网中但在远程服务器上运行。此外,由于我们处于设计阶段,因此不清楚它们将用于实现其业务逻辑(Java / C或其他)的技术。 我认为向SW的外部模块提供通过JDBC / ODBC直接访问我的数据模型是一个坏主意(因为我不想仅提交给RDBMS)。

计划是创建一个API来访问我的语义。 API基本上就是CRUD。目前的候选者是使用Spring的REST API。

我担心的是,通过REST访问可能会很慢。 优选地,该技术将基于Java。但是,也欢迎C-base和其他人。

我想知道:我应该考虑使用REST的替代方案吗? 除了访问速度之外,唯一的要求是它必须易于实现和维护。

我很感激你的建议。

2 个答案:

答案 0 :(得分:0)

对于公司防火墙后面的内部调用,RMI允许使用多种接受和返回复杂数据结构的方法创建任意复杂的API。 CORBA也会这样做。这些技术是JavaSE的一部分。

从较新的技术来看,Google protocol buffers对于此任务可能并不坏。

答案 1 :(得分:0)

如果要保护域模型不受数据模型的影响,可以在两者之间放置一层抽象,即接口。为什么你认为你需要一个远程边界?通过REST提供可远程访问的API与您消除域和数据模型之间的耦合的问题完全正交。

无论如何,您的API的使用者将始终屏蔽您的私有域模型。如果您正在构建一个Java API,您将公开接口并使用远程和正交的REST接口,您将公开HTTP资源。