您是否曾遇到以下情况:您需要存储信息,但此信息的一部分使用一种类型的数据库(非常宽松的意义)很好地建模,而另一部分则使用其他类型进行了很好的建模。例子:
您认为处理这种情况的最佳方法是什么?保持两种类型的数据分离,并编写一个保持同步的软件层?只使用一种数据库,将一种数据调整到另一种数据库中(例如将文件作为blob存储到关系数据库中,或者将关系部分存储在磁盘上被黑客攻击的基于文件的数据库中)?
答案 0 :(得分:1)
我认为“合并”这两个世界并不是一件好事(表现,态度等等)。 第一个对我有好处,让它们分开,并用层来区分它们与业务逻辑。使用松散的Coulped层有许多好处。您可以通过设计模式或使用接口/抽象类来实现此目的。
答案 1 :(得分:1)
这种问题称为联邦数据库系统。我建议在wikipedia上阅读关于联邦数据库的文章。
这不是一个简单的情况,这个问题的解决方案很大程度上取决于不同“数据库”中数据的耦合/相关程度,以及不同“数据库”的模式有多相似。
答案 2 :(得分:1)
您描述了虚拟数据库引擎(也称为联合DBMS引擎)解决的问题。
我怀疑理想情况是一个概念层,它位于不同的逻辑源之上,可以是以下任意组合:关系型dbms引擎(在ERP,CRM,HR,会计系统之后),Web服务,XML等。
Virtuoso(我公司的产品)通过允许您附加与无数数据表示格式相关联的外部/远程数据源(如上面的列表)来处理此问题。然后,它允许您使用EAV / CR模型(例如RDF图模型)作为概念层的基础,该概念层既具体又是所有后续数据交互的焦点。此概念层使用基于HTTP方案的标识符赋予每个数据项;因此,当您开始探索现在位于不同逻辑数据源的丰富概念图时,您只需要一个HTTP感知用户代理。
我上面所描述的基本上是现在通常所知的:基于HTTP的关联数据。
链接: