将 java 对象作为 json 字符串存储在 MySQL 数据库中?
Store java object as json string in MySQL database?
从性能上看,这样做聪明吗?
一个例子是 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
我想简化存储和检索对象的方式,而不是每次 store/retrieve 从数据库中构建对象并将它们分成多个部分和单独的列。
但我对使用 json 字符串的担忧是当数据库填满时长度可能会影响性能?我不确定,这就是我问的原因。
使用 'space' 或性能没有问题:MySQL 可以很好地处理。
也就是说,虽然整个 JSON 块必须 pulled/pushed 才能处理和更改 MySQL 将继续处理它曾经做过的最好的事情,甚至 'as the database fills up' .
但是,遵循此设计时存在信息规范化和不透明的问题。数据库是关于信息的,但是 JSON 的 blob 只是 .. SQL 数据库的 JSON 的 blob。
因此 JSON 中的数据 none 可用于关系或查询,也不能参与索引或约束。数据库的 "relational" 部分就这么多了..
除非JSON确实是不透明数据,就像二进制文件的内容一样,考虑进行相关规范化..或切换到(JSON) document-oriented 数据库(例如 Raven、Redis、Couch、Mongo)。
存储 JSON 字符串不存在 space 或性能问题。如果需要,MySQL 能够处理大型 blob。
是否将序列化的数据存储到 JSON 中的决定应该基于您需要如何处理这些数据。关系数据库,例如 MySQL,假设您规范化数据并建立记录之间的关系。也就是说,在许多情况下,以其他方式进行操作是可行的(即存储为 JSON)。
如果您将数据存储为 JSON 字符串,您将无法使用 MySQL 功能有效地处理这些数据,例如您不能按存储为 JSON 的值过滤或排序记录。但是,如果您只需要存储此数据,而处理将由应用程序代码完成,则使用 JSON.
是合理的
随着 MongoDB 等面向文档的数据库变得越来越流行,一些传统的关系数据库,例如 PostgreSQL 和 MariaDB,最近也实现了原生 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
我想简化存储和检索对象的方式,而不是每次 store/retrieve 从数据库中构建对象并将它们分成多个部分和单独的列。
但我对使用 json 字符串的担忧是当数据库填满时长度可能会影响性能?我不确定,这就是我问的原因。
使用 'space' 或性能没有问题:MySQL 可以很好地处理。
也就是说,虽然整个 JSON 块必须 pulled/pushed 才能处理和更改 MySQL 将继续处理它曾经做过的最好的事情,甚至 'as the database fills up' .
但是,遵循此设计时存在信息规范化和不透明的问题。数据库是关于信息的,但是 JSON 的 blob 只是 .. SQL 数据库的 JSON 的 blob。
因此 JSON 中的数据 none 可用于关系或查询,也不能参与索引或约束。数据库的 "relational" 部分就这么多了..
除非JSON确实是不透明数据,就像二进制文件的内容一样,考虑进行相关规范化..或切换到(JSON) document-oriented 数据库(例如 Raven、Redis、Couch、Mongo)。
存储 JSON 字符串不存在 space 或性能问题。如果需要,MySQL 能够处理大型 blob。
是否将序列化的数据存储到 JSON 中的决定应该基于您需要如何处理这些数据。关系数据库,例如 MySQL,假设您规范化数据并建立记录之间的关系。也就是说,在许多情况下,以其他方式进行操作是可行的(即存储为 JSON)。
如果您将数据存储为 JSON 字符串,您将无法使用 MySQL 功能有效地处理这些数据,例如您不能按存储为 JSON 的值过滤或排序记录。但是,如果您只需要存储此数据,而处理将由应用程序代码完成,则使用 JSON.
是合理的随着 MongoDB 等面向文档的数据库变得越来越流行,一些传统的关系数据库,例如 PostgreSQL 和 MariaDB,最近也实现了原生 JSON 支持。