在MS-SQL Server 2008上有一个数据库,它逐年增长很多。保存数据库历史
我想要做的是:获取一些数据并存储在一个XML文件中,并将该文件存储在一个表中,在同一个数据库中。
这是个好主意吗?你有什么主意吗?
谢谢。
在MS-SQL Server 2008上有一个数据库,它逐年增长很多。保存数据库历史
我想要做的是:获取一些数据并存储在一个XML文件中,并将该文件存储在一个表中,在同一个数据库中。
这是个好主意吗?你有什么主意吗?
谢谢。
的标准方法是建立一个新的数据库(可能在不同的机器上),这将是你存档数据库和调度运行存储过程的记录移到存档数据库(仅记录早说2年为例或适合您的业务问题)。您将不得不复制表格的结构并保持两个数据库同步。你可以在你的sp中只包含最大的表,通常只有少数表会导致问题。
这样,您仍然可以以适当的方式访问您的归档数据并对其运行查询。将数据存储在数据库中的xml对我来说不是一个好主意,因为如果您需要旧数据,您将遇到困难时期。它也会给你带来巨大的磁盘空间。
XML本质上是一种详细的数据存储方式,而不是本地存储在表列/行结构中的方式。
例如,假设只存储用户的一个简单的表...
<Users>
<User>
<UserID>1</UserID>
<Name>Joe Smith</Name>
<DOB>24.02.1973</DOB>
</User>
<User>
<UserID>2</UserID>
<Name>Joleen Smith</Name>
<DOB>13.10.1962</DOB>
</User>
...
...
你会好起来使您的架构的副本,并导出归档数据从这个第二个副本。这样,你仍然可以查询它,如果它是XML,那么你将无法做到(容易)。
尽管我同意XML比仅以常规行/列存储数据需要更多空间,但数据库不仅仅存储所有冗长的重复性XML标记。如果您要在数据库文件上使用十六进制编辑器并查看一些XML数据,则会看到它正在使用某种编码方案来节省一些空间。 – 2010-03-10 13:58:01
有意思的是,我忘记了SQL2008 SQL数据类型,也没有意识到使用它可以减少数据占用量。好喊。但是,我的建议仍然是一样的,不要使用XML,为归档数据使用单独的DB架构/副本。 – CResults 2010-03-10 14:39:28
基本上你想要达到什么目的?它是为了节省磁盘空间吗? – hallie 2010-03-10 13:04:01
是的,这是为了节省一些磁盘空间 – rpf 2010-03-10 14:37:05