Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL数据库中将java对象存储为json字符串?_Java_Mysql_Gson - Fatal编程技术网

在MySQL数据库中将java对象存储为json字符串?

在MySQL数据库中将java对象存储为json字符串?,java,mysql,gson,Java,Mysql,Gson,性能方面,这样做明智吗? Gson就是一个例子 Gson gson = new Gson(); String json = gson.toJson(myObject); // store json string in sql with primary key // retrieve json string in sql with primary key 我希望简化存储和检索对象的方式,而不是每次从数据库存储/检索对象时,都将对象构建并分离为各个部分和单独的列 但是我对使用json字符串的担心

性能方面,这样做明智吗? Gson就是一个例子

Gson gson = new Gson();
String json = gson.toJson(myObject);

// store json string in sql with primary key
// retrieve json string in sql with primary key
我希望简化存储和检索对象的方式,而不是每次从数据库存储/检索对象时,都将对象构建并分离为各个部分和单独的列


但是我对使用json字符串的担心是,当数据库填满时,长度可能会影响性能?我不确定,这就是我问的原因。

使用的“空间”或这样的性能没有问题:MySQL可以很好地处理这个问题

也就是说,虽然整个JSON块必须被拉/推以进行处理,而且MySQL将继续像以往一样处理更改,即使“数据库已满”

然而,遵循此设计时,信息的规范化和不透明性存在问题。数据库是关于信息的,而JSON只是。。SQL数据库中的一块JSON

因此,JSON中的任何数据都不能用于关系或查询,也不能参与索引或约束。数据库的“关系”部分到此为止


除非JSON真正是不透明数据,就像二进制文件的内容一样,考虑工作相关的规范化。或者切换到(JSON)数据库(如Raven、Redis、Coach、Mongo)。

存储JSON字符串时没有空间或性能问题。如果需要,MySQL能够处理大型blob

是否将数据序列化为JSON的决定应该基于您需要如何处理这些数据。关系数据库(如MySQL)假设您规范化了数据并在记录之间建立了关系。也就是说,在许多情况下,可以采用其他方式(即存储为JSON)

如果您将数据存储为JSON字符串,您将无法使用MySQL功能有效地处理此数据,例如,您无法按存储为JSON的值筛选或排序记录。但是,如果只需要存储这些数据,而处理将由应用程序代码完成,那么使用JSON是合理的

随着MongoDB等面向文档的数据库变得越来越流行,一些传统关系数据库(如PostgreSQL和MariaDB)最近也实现了本机JSON支持