针对庞大数据集的SQL数据库设计

时间:2011-09-24 22:41:59

标签: sql-server sql-server-2008 database-design large-data-volumes

我的客户具有以下数据结构...对于每位患者,可能有多个样本,并且每个样本在处理后可能有400万个数据对象。每位患者的最大样本数为20.因此,单个患者最终可能会有8000万行数据,当然最终会有数百名患者。

在设置数据库来存储对象(每个对象包含大约30个统计和测量字段)时,挑战非常明确 - 如何管理这些海量数据?

我原以为我会有一个数据库,每个样本都有一个表 - 所以每个表最多可能有400万条记录。

我的一位同事提出了一个有趣的建议,即更进一步 - 为每位患者创建一个新的数据库,然后每个样本都有一个表格。他的想法是每位患者有1个对数,能够按每个病人移动数据库等,这是好的。我不能不同意他的意见。

这合理吗?出于某种原因,拥有许多数据库是一个坏主意吗?

思考?谢谢!

2 个答案:

答案 0 :(得分:2)

虽然从隐私和迁移的角度来看这个想法很有意思,但每个患者拥有一个数据库并不是一个好主意。考虑管理,备份,为每个患者数据库提供文件。我甚至不确定DBMS是否可以在实例或服务器中同时处理数百万个数据库。

我要做的是,接受体积数据作为实况的事实,并在您选择的参数和表格类型中处理它。让DBMS担心它的schale。确保您具有允许扩展和扩展表的部署模型。每个实体的表格,至少是明智的,所以对于患者,测量等等。

只是,作为开发人员做你擅长的事情,让DBMS做它创建的内容。

答案 1 :(得分:1)

使用这么多数据时,您肯定希望探索MySQL和RDBMS替代方案。你有没有研究过任何noSQL解决方案? (即键值存储)。有几个开源解决方案,鉴于任何数据丢失可能都是不可接受的,其中一些解决方案可能会立即适用于此应用程序。

也许试着看看Apache的Cassandra http://cassandra.apache.org/。它是一个分布式数据库系统(键值存储),但也可以在单个节点上运行。它允许您在单个键值“即Patient1”下存储每个患者的所有数据,然后从那里将数据组织成最适合在您的应用程序中查询的任何键值结构。