我有一个关于患者账单系统的项目,这是一个组织的网站.. 我使用技术jsp和java来开发这个....
在这个系统中我有不同的组织,每个组织都有自己的数据库 我没有为这个系统维护任何中央数据库.. 在这方面,我的要求是必须由组织明智地完成。
例如,如果我们想知道每个组织中有没有床位,那么它就有了 结果没有组织明智的床位....
我的想法是在我的中央数据库中保存组织静态IP 然后在我们需要时查询数据库..
在此我也怀疑...... 是否可以一次查询不同的数据库...... ??
请给我解决我的问题....
提前感谢...
答案 0 :(得分:1)
如果你需要IP,我想你必须这样做。
我想你最好不要点击主机名,因为它更不太可能改变。
就击中不同的数据库而言,你必须与每个数据库建立连接(尽管你可以根据大小对它们进行聚类,有一些超级节点可以击中那个状态下的所有数据库并行化)但它很容易做到。我的意思是,它几乎就像这一样简单(从逻辑上讲,显然你不能复制/粘贴它。)
for(DatabaseBinding db : databases) {
Connection conn = db.spawnConnection();
Statement stmt = ...
ResultSet rs = stmt.execute(getBedsQuery());
List<Bed> beds = processResultSetForBeds(rs);
allBeds.add(beds);
}
答案 1 :(得分:1)
我不知道任何DBMS可以让您执行单个查询来访问多个数据库模式。您最好的两个选择是:
哪种方式更适合您受到多种因素的影响。
答案 2 :(得分:1)
是否可以一次查询不同的数据库?
这取决于你的意思。
如果数据库都使用相同的模式,表名和SQL方言,如果您没有进行更新,并且不需要原子查询,则只需保留一个数据库连接池到不同的数据库,将相同的查询发送到每个数据库,然后手动合并从结果集中提取的内容。
如果数据库模式(或只是表名)不同,那么1)你必须发送不同的查询,2)合并结果可能很繁琐。
如果数据库使用不同的SQL方言,您还必须处理SQL语法,列类型和潜在语义的差异。
跨多个数据库的原子查询和更新很难。您需要使用支持分布式事务的分布式数据库层。
关于Federated Database Systems的维基百科文章可以帮助您理解一些问题。