什么是最好的SQL数据types来存储JSONstring?
什么是用于存储JSONstring的最佳SQL数据types?
static List<ProductModel> CreateProductList() { string json = @"[ { ProductId: 1, ProductCode: 'A', Product: 'A' }, { ProductId: 2, ProductCode: 'B', Product: 'B' } ]"; IList<JToken> tokenList = JToken.Parse(json).ToList(); List<ProductModel> productList = new List<ProductModel>(); foreach (JToken token in tokenList) { productList.Add(JsonConvert.DeserializeObject<ProductModel>(token.ToString())); } return productList; }
我们应该使用哪种SQL数据types来存储包含JSON的string?
-
NVARCHAR(255)
? -
TEXT
? -
VARBINARY(MAX)
?
当然不是 :
-
TEXT, NTEXT
:这些types在SQL Server 2005中不推荐使用 ,不应该用于新的开发。 改用VARCHAR(MAX)
或NVARCHAR(MAX)
-
IMAGE
,VARBINARY(MAX)
:IMAGE
与TEXT/NTEXT
一样被弃用,将文本string存储到二进制列中真的没有意义。
因此,基本上保留了VARCHAR(x)
或NVARCHAR(x)
: VARCHAR
存储非Unicodestring(每个字符1个字节), NVARCHAR
每字符2个字节的Unicode模式存储所有内容。 那么你需要Unicode吗? 你的string中是否有阿拉伯文,希伯来文,中文或其他非西欧文字? 然后去与NVARCHAR
(N)VARCHAR
列有两种types:要么定义最大长度为8000个字节或更less( VARCHAR
最多8000个字符, NVARCHAR
最多4000个),或者如果这还不够,请使用(N)VARCHAR(MAX)
版本,可存储高达2 GB的数据。
更新: SQL Server 2016将具有本机JSON支持 – 将引入新的JSON
数据types(基于nvarchar
),以及FOR JSON
命令将查询的输出转换为JSON格式
更新#2:在最终产品中,Microsoft没有包含单独的JSON
数据types – 相反,有许多JSON函数(将数据库行打包成JSON,或将JSONparsing为关系数据)typesNVARCHAR(n)
我会去nvarchar(max)
。 这应该符合要求。
更新:有了SQL Server 2016和Azure SQL,还有很多额外的本地JSONfunction。 这可能对您的devise或方法产生积极影响。 您可以阅读更多: https : //docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server
如果您计划在SQL 2016或Azure SQL上使用JSONfunction,我build议使用nvarchar(max)
。
如果您不打算使用这些function,则可以将varbinary(max)
与COMPRESS
(和DECOMPRESS
)函数结合使用。 更多信息: https : //blogs.msdn.microsoft.com/sqlserverstorageengine/2015/11/23/storing-json-in-sql-server/
COMPRESS和DECOMPRESSfunction使用标准的GZip压缩。 如果您的客户端可以处理GZip压缩(例如,了解gzip内容的浏览器),则可以直接返回压缩的内容。 请注意,这是性能/存储的权衡。 如果您经常查询您mig的压缩数据,性能会降低,因为每次都必须对文本进行解压缩。
- Facebook Graph API,如何获取用户的电子邮件?
- node.js TypeError:path必须是绝对path或指定根pathres.sendFile
- 在Python中将JSON转换为SQLite – 如何正确地将json键映射到数据库列?
- 使用Json在Objective C中发布数据
- 通过JSON发布一个对象数组到ASP.Net MVC3
- PHP的json_decode()返回NULL与有效的JSON?
- GSON – 从string获取JSON值
- Ruby on Rails – 为多个模型渲染JSON
- HTML / Javascript:如何访问使用src设置的脚本标记中加载的JSON数据