C#,SQL:将数据库中的任意用户数据存储为序列化二进制文件

时间:2009-07-03 14:11:19

标签: c# sql-server database-design settings

您是否认为将各种用户数据作为序列化二进制文件存储在数据库中是不好的做法?这是一个好的,坏的还是非常丑陋的想法?

我说的几乎是随意的事情,比如表格上的最后一个分割距离,搜索文本框中的最后一个值,主要选择的复选框索引等等。应该记住的事情如果被遗忘就不重要。

我有点喜欢它,因为我只需要一个表,例如四列:userid,source,key和value。如果我创建一个很好的包装类来保存和加载这个表的值,那么事情可以很好地工作。例如,无论何时进行新的设置,我都不必修复数据库。

它当然不适用于搜索和排序等类似的东西,但不管怎么说都不需要,因为你只能直接从它们的索引(用户id +源+键)访问这些键值对。这些列也不是人类可读的,但这也不是真正的问题。数据将是可以清除的数据,没有太多问题。

有关此想法的任何反馈意见?这是一个可怕的吗?这是一个好的吗?你做过类似的事吗?

5 个答案:

答案 0 :(得分:3)

由于你没有搜索,这不是一个坏主意 - 它是一个不透明的容器,用于错误的用户数据,正如你所说,它不包含任何关键信息。你是对的,你不需要改变数据库来支持新的设置配置。

答案 1 :(得分:3)

我一直使用它,因为我们的对象是根据客户端/安装非常自定义的。这样我可以添加&删除属性而不必更新数据库。

我每行需要大约200-300个属性。我发现这种方法给了我很大的灵活性。

我总是在二进制结构中包含版本号。所以我知道我可以从中检索哪些数据。

在某个子对象上,我还包含了typename,因此我可以存储继承树中的对象。 (我希望你明白我的意思)。

答案 2 :(得分:1)

如果你选择XML序列化而不是二进制序列化会更好。与前一种情况一样,随着课程的不断发展,您无需特别注意向后兼容性。

答案 3 :(得分:0)

我刚才记得我读过关于ASP.NET 2.0 Profile API的内容。

让我引用MSDN

  

ASP.NET配置文件功能将信息与单个用户相关联,并以持久格式存储信息。配置文件允许您管理用户信息,而无需您创建和维护自己的数据库。此外,ASP.NET配置文件功能使用强类型API提供用户信息,您可以从应用程序的任何位置访问该API。

     

您可以使用配置文件存储任何类型的对象。配置文件功能提供了一种通用存储功能,允许您定义和维护几乎任何类型的数据,同时仍以类型安全的方式提供数据。

此致

hadi teo

答案 4 :(得分:0)

只是想在讨论中加入反对声音:

通过放入序列化对象,您会失去对数据的可见性(显然),但您也会依赖于平台。通过将事物保存在关系表中,现在可以由您选择的任何客户端读取数据。如果将来您决定更改(或者甚至只添加不同的更改),那么您将失去重用相同数据的能力。保持客户端和数据分开。