我目前正在开发一个Web应用程序,该应用程序需要保留用户的某些请求。我有三个选择:
在我看来,我会选择选项2(将序列化对象的xml文本存储在数据库中)。我会这样做,因为从1列读取然后反序列化对象以对它们进行一些处理会更容易。我正在使用c#和asp .net MVC来编写这个应用程序。我对软件开发还很陌生,并且非常感谢我能得到的任何帮助。
答案 0 :(得分:4)
简短回答:如果选项2适合您的需求,请使用它。将数据存储在数据库中没有任何问题。
答案 1 :(得分:2)
我设计了许多系统,在db中将'some'对象存储为序列化xml已被证明是更好的选择。我还学到了在数据库中存储对象的经验,因为xml最终导致了更多的麻烦。所以我提出了一些问题,你必须回答是,以便做得很舒服:
在SQL中,你总是可以使用XQuery创建一个表视图,但我只建议你这样做,如果a)为时已晚,无法改变主意b)你没有那么多的对象需要管理。
在XML中序列化和存储对象有一些实际的好处,特别是对于可扩展性和敏捷开发。
答案 2 :(得分:1)
这个答案真的取决于细节。什么样的数据存储?你怎么需要查询它?您需要多久查询一次?
一般来说,我认为同时执行1和2并不是一个好主意。选项2的问题在于,查询特定字段会更加困难。如果你要做一个LIKE查询并让它搜索一个非常长的字符串,这将是一个昂贵的操作,你可能会在以后遇到性能问题。
如果您真的不想编写代码来读取多列来加载数据,那么请使用像Linq to SQL这样的ORM。这将有助于将数据库表加载到对象中。
答案 3 :(得分:0)
如果此类对象的数量很大且其大小不是很大。我认为使用数据库是一个好主意。
是将它存储在单独的表中还是将其存储在原始表中取决于您如何将此CLOB数据与原始表一起使用。 如果在访问原始表时始终需要CLOB数据,请使用选项2。 否则请使用选项3来提高性能。
答案 4 :(得分:0)
您还需要考虑安全性和n层架构。将序列化数据存储在数据库中意味着您的数据将位于另一台服务器上,理想情况是数据需要安全,但也会给您带来网络延迟,而将数据存储在文件系统中会让您更快地访问IO,但搜索非常有限能力。
我有这样的情况,我使用数据库。它还可以与其他相关数据一起正确备份。