天天看点

PostgreSQL schemaless 的实现(类mongodb collection)

postgresql , schemaless , mongodb

使用mongodb时,并不需要先建表(collection),直接就可以往里面写,原因是collection本事就是固定的bson结构。

所以当用户插入时,如果表不存在,建一个bson结构的colleciton即可。

而关系数据库无法做到这一点,因为关系数据库的表结构都是事先构建,并且在写入数据时,是需要检查对应的类型,约束的。

那么有没有办法让postgresql关系数据库也实现类似mongo这种schemaless的表呢?

用户通过调用函数,写入数据。

在函数中处理并实现schemaless。

创建一个自动建表的函数,用于自动创建目标表。

创建一个插入数据的函数,使用动态sql,如果遇到表不存在的错误,则调用建表函数进行建表。

调用函数插入数据,不需要建表,会自动创建。

函数支持并发插入,不会相互影响。

由于使用了动态sql,性能略差。

使用绑定变量,性能如下。

损失11万的qps,获得schemaless的能力,要不要呢?

当然,如果是从内核层面来支持就更爽了,性能问题可能也能得到解决,比如。