我正在使用DB2和pureXML开发一个医院管理系统。
最好是对所有数据(病人、医生详细信息、预约、病史、药物等)使用单一数据库,还是使用多个数据库来实现可伸缩性?
发布于 2011-11-27 16:00:34
设计一个平台:一个数据库还是多个数据库?是与你的问题相关的背景阅读。
你可能是从错误的角度来处理这个问题的。是否真的会有一个单一、全能、包罗万象、真正的“医院管理制度”呢?还是会有:
我相信还有很多其他的应用程序可以添加这个列表。每个应用程序都是一个单独的应用程序,可能是一个单独的数据库,所有这些应用程序都需要通过定义的接口相互通信。一个拥有一个大数据库的大型应用程序是一条通往混乱的快速道路。
发布于 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/
发布于 2011-12-12 16:39:58
最令人恼火和最常见的答案是:这取决于。
如果所有应用程序都使用(共享)大多数数据,那么一个数据库就可以简化工作。
但是,如果应用程序(或模块)共享的关系很少(除了一些共享的表,比如病人),那么在不同的数据库上,或者在不同的模式上,分离的东西是有意义的,因为并非所有的数据库服务器都支持同时访问不同数据库的查询。此类查询的示例:
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之间数据的一致性。
https://dba.stackexchange.com/questions/8431
复制相似问题