11
回答
关于关系型数据库存放json数据
终于搞明白,存储TCO原来是这样算的>>>   

@Brin想写程序 你好,想跟你请教个问题:

  刚在一片文章评论中看到你用关系型数据库存放json,我没用过。这种方式优势在哪里?

如果只要选取某一个字段,是不是也得把所有json字符串先读出来然后在获取呢?


望回复,谢谢。(ps,有没有介绍用关系型数据库存放json数据的相关文档呢?:))

<无标签>
举报
小小晋
发帖于3年前 11回/3K+阅
共有11个答案 最后回答: 2年前

关系型数据库存放json,其实本质是一个设计问题,要求在设计上区分“规则”和“数据”,数据是多变的,规则(及其相关数据,或者数据模式)(逻辑)是较为固定的,可以用json存的,只能是数据,而不是“规则”或者说是逻辑。

不过具体说:

采用这种思路,要明确具体需求,首先就减少只取一个字段的业务场景。如果是经常只用一个数据,那么还是传统关系型表的玩法最好。

当整个数据是一个整体的情况下,可以这么干。

简单来说,最大的优势就是可以用来做横向分库分表。其次就是数据的灵活性。

因为现有分库分表组件最大的问题就是关联查询问题,采用json的组合起来,在设计上就要求分表的数据模型无外键。这样json大字符串造成的重大性能损失,就可以通过横向扩展和并行查询给弥补。

--- 共有 1 条评论 ---
小小晋理解 3q 3年前 回复
PHP使用json_encode把数组变成JSON串存到MySQL表中的一个字段,下次使用时读出该字段然后json_decode变回数组,再进行哈希操作,也很方便.
array <=json_decode|json_encode=> string
看网上的文章,都说postgresql的性能和功能比mysql和mongodb要好。所以想用postgresql做为主要的数据库使用。请问在php中,用什么方式连接postgrelsql数据库,操作最方便,最稳定,性能最好。php对postgresql的支持程度,有没有比其它语言,例如java对postgresql支持的更好。

引用来自“jack984”的评论

看网上的文章,都说postgresql的性能和功能比mysql和mongodb要好。所以想用postgresql做为主要的数据库使用。请问在php中,用什么方式连接postgrelsql数据库,操作最方便,最稳定,性能最好。php对postgresql的支持程度,有没有比其它语言,例如java对postgresql支持的更好。

postgresql是功能比mysql强,性能不一定比mysql强。

php还是标准pdo吧?

postgresql支持主要是基于postgresql的一些专门的扩展的支持,比如postgis这种才谈得上支持更好。其他就把他当数据库用就行了。

楼上的大哥,php中有postgis引擎吗。似乎只有pdo吧。单表容量上亿条评论数据,用mysql和postsql哪个查询性能更快。好像人们都说pg性能更好,在大数据量下。你到底是g不是半瓶子啊?
--- 共有 1 条评论 ---
开源中国董事会主席http://php.net/manual/zh/book.pgsql.php 3年前 回复

引用来自“jack984”的评论

楼上的大哥,php中有postgis引擎吗。似乎只有pdo吧。单表容量上亿条评论数据,用mysql和postsql哪个查询性能更快。好像人们都说pg性能更好,在大数据量下。你到底是g不是半瓶子啊?

单表上亿条评论数据。。。

啥数据库都有问题。这种应该找sharding中间件来解决。而不是换各种数据库。

引用来自“jack984”的评论

楼上的大哥,php中有postgis引擎吗。似乎只有pdo吧。单表容量上亿条评论数据,用mysql和postsql哪个查询性能更快。好像人们都说pg性能更好,在大数据量下。你到底是g不是半瓶子啊?
PostgreSQL真的那么牛逼的话,淘宝就不会以MySQL为核心去IOE了.PHP5.4开始默认的MySQL驱动是mysqlnd.mysqlnd作为一个PHP扩展,跟PHP是紧耦合的,使用的是PHP的内存管理系统,所以内存占用要比libmysql少,效率也更高.mysqli用p:127.0.0.1,PDO用PDO::ATTR_PERSISTENT => true开启持久连接,高并发下性能会有提升.
顶部