首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单数据库与多数据库

单数据库与多数据库
EN

Database Administration用户
提问于 2011-11-27 06:44:55
回答 3查看 1.6K关注 0票数 4

我正在使用DB2和pureXML开发一个医院管理系统。

最好是对所有数据(病人、医生详细信息、预约、病史、药物等)使用单一数据库,还是使用多个数据库来实现可伸缩性?

EN

回答 3

Database Administration用户

回答已采纳

发布于 2011-11-27 16:00:34

设计一个平台:一个数据库还是多个数据库?是与你的问题相关的背景阅读。

你可能是从错误的角度来处理这个问题的。是否真的会有一个单一、全能、包罗万象、真正的“医院管理制度”呢?还是会有:

  • 任用管理系统
  • 病人记录系统
  • 药品/药理学数据库(很可能是买来的东西,而不是重新发明的)
  • ...

我相信还有很多其他的应用程序可以添加这个列表。每个应用程序都是一个单独的应用程序,可能是一个单独的数据库,所有这些应用程序都需要通过定义的接口相互通信。一个拥有一个大数据库的大型应用程序是一条通往混乱的快速道路。

票数 3
EN

Database Administration用户

发布于 2011-11-27 07:01:10

我会从一个数据库开始,除非表大小从一开始就很大。扩展的下一步似乎是垂直分区,您可能希望在不同的服务器上移动一组关联的表。您可以使用从服务器来增加负载处理。但如果写作开始压倒大师,那么你将需要吃苦药丸和寻找水平切分。

我建议阅读这些文章- 1)http://www.25hoursaday.com/weblog/2009/01/16/BuildingScalableDatabasesProsAndConsOfVariousDatabaseShardingSchemes.aspx 2)http://www.codefutures.com/database-sharding/ 3)http://www.mysqlperformanceblog.com/2009/11/16/shard-early-shard-often/

票数 1
EN

Database Administration用户

发布于 2011-12-12 16:39:58

最令人恼火和最常见的答案是:这取决于。

如果所有应用程序都使用(共享)大多数数据,那么一个数据库就可以简化工作。

但是,如果应用程序(或模块)共享的关系很少(除了一些共享的表,比如病人),那么在不同的数据库上,或者在不同的模式上,分离的东西是有意义的,因为并非所有的数据库服务器都支持同时访问不同数据库的查询。此类查询的示例:

代码语言:javascript
复制
SELECT f1.col1, f2col2 
FROM 
  DATABASE1.dbo.tABLE2 f1 
  inner join DATABASE2.dbo.table2 f2
    on f1.fkcol = f2.origcol
where 
  f1.col1 = 'ALPHA'

此查询基于MS SQL Server。它很容易地支持多数据库。

在FirebirdSQL上,您必须使用2个连接来完成数据库之间的连接--但是数据库连接之间的事务并不是其中的问题。

如果您的数据库服务器支持模式,它可以帮助您,因为您不需要创建不同的数据库。在Oracle中,您完全没有选择--因为所有表都必须位于同一个数据库中,因此需要在模式中分离数据结构。

根本不了解DB2,但是如果您的系统架构在模块之间(或应用程序、服务或任何您所称的它们)之间没有共享很多表,那么它可以轻松地支持多数据库--因为这将简化您的生活。但是,如果您需要在多个模块之间的数据上使用完整性约束(而且DB2在多个数据库上不支持它)(如果您选择该路径的话,这些约束将位于不同的数据库上),那么一个数据库就会很吸引人--除非您保证应用程序上DB之间数据的一致性。

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

https://dba.stackexchange.com/questions/8431

复制
相关文章

相似问题

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