postgresql , schemaless , mongodb
使用mongodb时,并不需要先建表(collection),直接就可以往里面写,原因是collection本事就是固定的bson结构。
所以当用户插入时,如果表不存在,建一个bson结构的colleciton即可。
而关系数据库无法做到这一点,因为关系数据库的表结构都是事先构建,并且在写入数据时,是需要检查对应的类型,约束的。
那么有没有办法让postgresql关系数据库也实现类似mongo这种schemaless的表呢?
用户通过调用函数,写入数据。
在函数中处理并实现schemaless。
创建一个自动建表的函数,用于自动创建目标表。
创建一个插入数据的函数,使用动态sql,如果遇到表不存在的错误,则调用建表函数进行建表。
调用函数插入数据,不需要建表,会自动创建。
函数支持并发插入,不会相互影响。
由于使用了动态sql,性能略差。
使用绑定变量,性能如下。
损失11万的qps,获得schemaless的能力,要不要呢?
当然,如果是从内核层面来支持就更爽了,性能问题可能也能得到解决,比如。