2009-02-17 34 views
2

我目前正在研究一个Web应用程序,它需要用户的某些请求被保留。我有三个选择:将序列化对象存储在数据库而不是多个XML文本文件中是一个好主意吗?

  1. 序列化每个请求对象并将其存储为一个xml文本文件。
  2. 序列化请求对象并使用CLOB将此xml文本存储在数据库中。
  3. 将请求存储在数据库中的单独表中。

在我看来,我会去选择2(存储序列化对象的XML文本在数据库中)。我会这样做,因为从1列读取会更容易,然后反序列化对象以对它们执行一些处理。我正在使用c#和asp.netnet MVC来编写这个应用程序。我对软件开发相当陌生,希望能得到任何帮助。

回答

1

这个答案真的取决于细节。什么样的数据存储?你如何查询它?你需要多久查询一次?

一般来说,我会说这不是一个好主意,做1和2.选项2的问题是,你会很难查询特定的领域。如果你打算做一个LIKE查询并让它搜索一个非常长的字符串,这将是一个昂贵的操作,你很可能会在之后遇到perf问题。

如果您确实想避免编写代码来读取多列来加载数据,请使用ORM(像Linq to SQL)。这将有助于将数据库表加载到对象中。

0

如果这种物体的数量很大,并且它的大小不是很大。我认为使用数据库是一个好主意。

是否将其存储在单独的表中或将其存储在原始表中取决于您如何将此CLOB数据与原始表一起使用。 如果您在访问原始表时始终需要CLOB数据,请使用选项2。 否则请使用选项3来提高性能。

0

您还需要考虑安全性和n层体系结构。在数据库中存储序列化的数据意味着你的数据将在另一台服务器上,这对于数据需要安全是理想的,但会给你网络延迟,而将数据存储在文件系统中会使你更快地访问IO,但是搜索非常有限能力。

我有一个这样的情况,我使用数据库。它还可以与其他相关数据一起正确备份。

4

简答:如果选项2很适合您的需求,请使用它。将数据存储在数据库中没有任何问题。

2

我设计了一些系统,在数据库中存储'some'对象作为序列化xml已被证明是更好的选择。我也学到了将数据库中的对象存储为xml的经验,最终导致了更多的麻烦。所以,我想出了一些问题,你必须回答是,以便做到舒服:

  1. 对象是否需要可移植?
  2. 对象中的数据是否被封装,即不是其他内容的一部分,而不是由其他内容组成。
  3. 未来可以换2号吗?

在SQL中,您始终可以使用XQuery创建表视图,但我只会建议您在以下情况下执行此操作:a)更改主意太迟b)您没有要管理的许多对象。

序列化和XML存储对象有一些真正的好处,特别是extensibilty和敏捷开发。

相关问题