【发布时间】:2013-07-18 19:03:45
【问题描述】:
将异构 json 字符串存储到同一个 MySQL 表中的推荐方法是什么? 我在这个 MySQL 数据库中还有一些其他表存储 JSON 对象以外的信息,所以我想以最好的推荐方式将这些 JSON 对象存储在同一个数据库中。
我想将 Perl 脚本中的 json 字符串存储到 MySQL 表中,该表不仅不会有相同的值,而且在不同的 json 对象中也会有不同的层次结构。我正在考虑将它们存储为字符串或 blob,以及每个条目的一些最小元数据。例如:
CREATE TABLE `entry` (
`entry_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`file` varchar(1023) DEFAULT NULL,
`json` blob DEFAULT NULL,
`update_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`entry_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
在直接使用 Perl 和 MySQL 之前,我应该考虑哪些工具或库?我想知道是否有任何东西可以与 DBIx::JSON 对来自 MySQL 的 SELECT 查询所做的相反...
【问题讨论】:
-
您应该考虑使用一些非关系型数据库(它们主要基于键值对概念进行操作)而不是使用 blob。
-
@DVK 我在这个 MySQL 数据库中还有一些其他的表,它们存储 JSON 对象以外的信息,所以我想以最好的推荐方式将这些 JSON 对象存储在同一个数据库中。跨度>
-
您可能想要考虑为您序列化为 JSON 的至少部分数据实现某种 ORM;正如 Karoly 在他的回答中指出的那样,除非您希望能够查询序列化数据,否则这将很好地工作,在这种情况下,您将非常不走运。
-
听起来你需要一些 NoSQL,看看 Redis,使用哈希可能是你需要的,否则存储一个 json blob 会使事情变慢,因为你不能查询里面的数据它。
-
我发现 Postgresql 9.3 比我使用的 MySQL 版本具有更好的 JSON 功能:stackoverflow.com/q/17805483/719016