JSON序列化和二进制序列化,哪个效率高点呢?

fg45t5y 2015-03-19 04:42:39
现有一个自定义对象需要储存到sql数据库中去。这个对象里面属性很多,甚至包含一些元素量打到几十万的List集合属性。
本人试着使用JSON序列化这个对象,储存到数据库,报maxjsonlength超限,于是修改为了Int32.MaxValue。这样做,虽然不报错了,但是JOSN字符串肯定很长的吧,这样,会使得数据库文件很大的吧。
我想问的是,采用二进制储存,会不会没有这么大?
...全文
3164 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-03-20
  • 打赏
  • 举报
回复
是的,序列化后的内容还是日后给自己用的,自然是二进制序列化较好 Soap、XML、json 序列化都是为了交换数据用的
fg45t5y 2015-03-20
  • 打赏
  • 举报
回复
引用 10 楼 xuzuning 的回复:
JSON序列化 是将对象的属性以键值对的形式组织成字符串(一个编码过程),显然体积会增大很多。 而且解码后也不能直接还原回原来的对象 二进制序列化 是将对象的内存映射抽取出来形成字符串,还原时只有一个重新分配内存的过程。还原后依然还是你原来的对象 将二进制序列化后的串写入文件,就可以认为他是数据库中的一个表(专用的而已) 如果将你的对象细分成若干个子对象,分别对各子对象做二进制序列化,并以某种格式保存在同一个文件中。 再配上管理方法,那么你就已经实现了自己的 NOSQL 了
你的意思是,以二进制储存吗?
fg45t5y 2015-03-20
  • 打赏
  • 举报
回复
引用 9 楼 chihen 的回复:
你那个属性也不定要放到数据库中。这样数据文件会很多。你可以将这部分数据存储到文件中。最好和NOSQL结合存储。这样既不会造成很大的关系数据库。而且也方便查找。MongoDB就很好用。有兴趣可以尝试下。
还第一次接触到NOSQL,没学过呢
fg45t5y 2015-03-20
  • 打赏
  • 举报
回复
引用 8 楼 wjq 的回复:
假设你的类型定义如下 class A { public string A1{get;set;} public int A2{get;set;} public List<List<string>> A3{get;set;} } 表A: ID int not null, 主键 A1 nvarchar(255) not null A2 int not null 表A3: ID int not null 主键 AID int,外键,对应A表的主键 Key int not null Value nvarchar(255) not null A表不用解释,A3表的Key就是List<List<string>>第一级(红色)的下标,string的具体内容就存在Value里
哦,懂了。实际上我的数据还要复杂些,有List<person>属性,就不太好整了。
xuzuning 2015-03-20
  • 打赏
  • 举报
回复
JSON序列化 是将对象的属性以键值对的形式组织成字符串(一个编码过程),显然体积会增大很多。 而且解码后也不能直接还原回原来的对象 二进制序列化 是将对象的内存映射抽取出来形成字符串,还原时只有一个重新分配内存的过程。还原后依然还是你原来的对象 将二进制序列化后的串写入文件,就可以认为他是数据库中的一个表(专用的而已) 如果将你的对象细分成若干个子对象,分别对各子对象做二进制序列化,并以某种格式保存在同一个文件中。 再配上管理方法,那么你就已经实现了自己的 NOSQL 了
wjq 2015-03-20
  • 打赏
  • 举报
回复
引用 11 楼 fg45t5y 的回复:
[quote=引用 8 楼 wjq 的回复:] 假设你的类型定义如下 class A { public string A1{get;set;} public int A2{get;set;} public List<List<string>> A3{get;set;} } 表A: ID int not null, 主键 A1 nvarchar(255) not null A2 int not null 表A3: ID int not null 主键 AID int,外键,对应A表的主键 Key int not null Value nvarchar(255) not null A表不用解释,A3表的Key就是List<List<string>>第一级(红色)的下标,string的具体内容就存在Value里
哦,懂了。实际上我的数据还要复杂些,有List<person>属性,就不太好整了。[/quote] 一样,你说你是List<list<string>>,我就给你一个value,你是person,那就把person里所有的属性都列到A3表里就好了,有什么不好整的
fg45t5y 2015-03-20
  • 打赏
  • 举报
回复
实际上我的数据对象,是这个样的: http://bbs.csdn.net/topics/391001166
chihen 2015-03-19
  • 打赏
  • 举报
回复
你那个属性也不定要放到数据库中。这样数据文件会很多。你可以将这部分数据存储到文件中。最好和NOSQL结合存储。这样既不会造成很大的关系数据库。而且也方便查找。MongoDB就很好用。有兴趣可以尝试下。
wjq 2015-03-19
  • 打赏
  • 举报
回复
假设你的类型定义如下 class A { public string A1{get;set;} public int A2{get;set;} public List<List<string>> A3{get;set;} } 表A: ID int not null, 主键 A1 nvarchar(255) not null A2 int not null 表A3: ID int not null 主键 AID int,外键,对应A表的主键 Key int not null Value nvarchar(255) not null A表不用解释,A3表的Key就是List<List<string>>第一级(红色)的下标,string的具体内容就存在Value里
fg45t5y 2015-03-19
  • 打赏
  • 举报
回复
引用 6 楼 wjq 的回复:
[quote=引用 5 楼 fg45t5y 的回复:] [quote=引用 1 楼 wjq 的回复:] 从业务上说,为啥不把这些数据分解成数据库记录来存储?而要序列化打包成一堆难以查询的数据来存储? 从技术上说,个人认为你这种量的数据,直接序列化不论如何都是不合适的。非要说的话,二进制序列化应该比json效率高些
你说的是属性对应列的方式吗。那List<string>、甚至是List<List<string>>类型的属性,该怎样储存到某列中呢?[/quote] 子表[/quote] 阁下说的List<List<string>>类型的属性,用子表储存?子表指的是什么啊?如何储存?请君详细说下
wjq 2015-03-19
  • 打赏
  • 举报
回复
引用 5 楼 fg45t5y 的回复:
[quote=引用 1 楼 wjq 的回复:] 从业务上说,为啥不把这些数据分解成数据库记录来存储?而要序列化打包成一堆难以查询的数据来存储? 从技术上说,个人认为你这种量的数据,直接序列化不论如何都是不合适的。非要说的话,二进制序列化应该比json效率高些
你说的是属性对应列的方式吗。那List<string>、甚至是List<List<string>>类型的属性,该怎样储存到某列中呢?[/quote] 子表
fg45t5y 2015-03-19
  • 打赏
  • 举报
回复
引用 1 楼 wjq 的回复:
从业务上说,为啥不把这些数据分解成数据库记录来存储?而要序列化打包成一堆难以查询的数据来存储? 从技术上说,个人认为你这种量的数据,直接序列化不论如何都是不合适的。非要说的话,二进制序列化应该比json效率高些
你说的是属性对应列的方式吗。那List<string>、甚至是List<List<string>>类型的属性,该怎样储存到某列中呢?
hiphop 2015-03-19
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/391001048 急求答案,各位大牛帮忙看看这个问题
WM_JAWIN 2015-03-19
  • 打赏
  • 举报
回复
可以用gzip再压缩一下,再存
exception92 2015-03-19
  • 打赏
  • 举报
回复
引用 1 楼 wjq 的回复:
从业务上说,为啥不把这些数据分解成数据库记录来存储?而要序列化打包成一堆难以查询的数据来存储? 从技术上说,个人认为你这种量的数据,直接序列化不论如何都是不合适的。非要说的话,二进制序列化应该比json效率高些
+1 中肯! 不如分成数据库做。
wjq 2015-03-19
  • 打赏
  • 举报
回复
从业务上说,为啥不把这些数据分解成数据库记录来存储?而要序列化打包成一堆难以查询的数据来存储? 从技术上说,个人认为你这种量的数据,直接序列化不论如何都是不合适的。非要说的话,二进制序列化应该比json效率高些

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧