现有一个自定义对象需要储存到sql数据库中去。这个对象里面属性很多,甚至包含一些元素量打到几十万的List集合属性。 |
|
10分 |
从业务上说,为啥不把这些数据分解成数据库记录来存储?而要序列化打包成一堆难以查询的数据来存储?
从技术上说,个人认为你这种量的数据,直接序列化不论如何都是不合适的。非要说的话,二进制序列化应该比json效率高些 |
1分 |
+1 中肯! 不如分成数据库做。 |
5分 |
可以用gzip再压缩一下,再存
|
你说的是属性对应列的方式吗。那List<string>、甚至是List<List<string>>类型的属性,该怎样储存到某列中呢? |
|
2分 |
子表 |
阁下说的List<List<string>>类型的属性,用子表储存?子表指的是什么啊?如何储存?请君详细说下 |
|
23分 |
假设你的类型定义如下
class A { public string A1{get;set;} public int A2{get;set;} public List<List<string>> A3{get;set;} } 表A: 表A3: A表不用解释,A3表的Key就是List<List<string>>第一级(红色)的下标,string的具体内容就存在Value里 |
10分 |
你那个属性也不定要放到数据库中。这样数据文件会很多。你可以将这部分数据存储到文件中。最好和NOSQL结合存储。这样既不会造成很大的关系数据库。而且也方便查找。MongoDB就很好用。有兴趣可以尝试下。
|
15分 |
JSON序列化 是将对象的属性以键值对的形式组织成字符串(一个编码过程),显然体积会增大很多。
而且解码后也不能直接还原回原来的对象 二进制序列化 是将对象的内存映射抽取出来形成字符串,还原时只有一个重新分配内存的过程。还原后依然还是你原来的对象 将二进制序列化后的串写入文件,就可以认为他是数据库中的一个表(专用的而已) |
哦,懂了。实际上我的数据还要复杂些,有List<person>属性,就不太好整了。 |
|
10分 |
是的,序列化后的内容还是日后给自己用的,自然是二进制序列化较好
Soap、XML、json 序列化都是为了交换数据用的 |
实际上我的数据对象,是这个样的:
http://bbs.csdn.net/topics/391001166 |
|
20分 |
一样,你说你是List<list<string>>,我就给你一个value,你是person,那就把person里所有的属性都列到A3表里就好了,有什么不好整的 |