PostgreSQL 的对象层次

所有的数据库离开数据量来谈性能都是耍流氓。

就你那几万条的数据库,用啥都行,典型的就是怎么方便怎么来。

不过 PostgreSQL 上手确实比 MySQL 概念更多。

PostgreSQL 比 MySQL 多了一层。

PostgreSQL 是从PostgreSQL 是从 Database,到 Schema 再到 Table

MySQL 就直接从 Database 到表了。

Schema

这个单词的翻译有点乱七八糟,有些人会翻译成模式。

其实数据库中,这个单词被翻译成命名空间多一些。

因为 PostgreSQL 比 MySQL 多了一个命名空间(Schema)那么去找对应的话,就有点困惑不知道 Schema 对应的是 MySQL 的是什么了。

其实 Schema 对应的就是 MySQL 的数据库。

PostgreSQL 的一个数据库就 MySQL 在机器上安装的整个实例了。

数据互访

比如说 PostgreSQL 有 2 个数据库 DB0 和 DB1,那么对应 MySQL 就是需要有 2 个实例,这 2 个实例对应的 MySQL 需要运行在不同的端口中。

PostgreSQL 互通性

PostgreSQL 的数据库定义的对饮 MySQL 的 2 个实例的话,那么在实例之间进行数据通信是比较困难的。

同样的,PostgreSQL 也是这样的,PostgreSQL 的数据库是互相独立的,是不能互相访问的。

PostgreSQL 的 Schema 在不同的命名空间中的数据是可以互相访问的。

不同命名空间中的表名字可以完全一致。

比如说我们有2个命名空间分别为 S1和 S2,但这 2 个命名空间中都有一个相同名称的表叫做 T1和T1,这个是可以存在的。

总结

因为 PostgreSQL 对比 MySQL 多了一层逻辑结构,所以 PostgreSQL 比 MySQL 的理解上面更加复杂,同时用户的授权也更加麻烦。

这也就是为什么很多人拿到 PostgreSQL 开始的时候都不知道表在哪里。