把 PostgreSQL 当做对象数据库使用

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 本文阐述了如何把 PostgreSQL 当做一个对象数据库使用,及其好处。

众所周知,PostgreSQL 是功能最为强大的开源数据库,以关系型为基础,添加了很多面向对象的功能,并且支持的数据类型可以说是无所不包,就算原生不支持的,也可以由用户自己进行扩展,以满足用户的需求。

PostgreSQL 中的数组类型,就可以发挥很大的作用,有了它的支持,我们便可以把 PostgreSQL 当做一个对象数据库来使用。

比如我们有以下对象类型:

class Book {
    String id;
    String title;
    List<Author> authors;
}

class Author {
    String id;
    String name;
    List<Book> books;
}

我们也可以创建同样结构的数据库表:

CREATE TABLE book {
    id character varying(32) NOT NULL PRIMARY KEY,
    title character varying(50) NOT NULL,
    authors character varying[] COMMENT 'ref: author.id',
}

CREATE TABLE author {
    id character varying(32) NOT NULL PRIMARY KEY,
    name character varying(20) NOT NULL,
    books character varying[] COMMENT 'ref: book.id',
}

怎么样?是不是和对象类型一模一样!

这样,我们就不再需要做对象-关系映射了。

我们可以把内存中的对象结构,原样保存到数据库中来。这时候,PostgreSQL 就变成了一个真正意义上的对象数据库!(别忘了,PostgreSQL 的表也是支持继承的哦!)

所有数据的查询、获取都是走的主键索引,就算你表中数据量再大,也是毫秒级返回。而且也可以实现懒加载,只有当你需要子对象的具体数据时,才会去数据库里查询获取,否则只返回一个 ID 就够了。

这样的数据存储方式,不是比 MongoDB 那种好太多了么!

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
8天前
|
关系型数据库 分布式数据库 数据库
开源云原生数据库PolarDB PostgreSQL 15兼容版本正式发布
PolarDB进行了深度的内核优化,从而实现以更低的成本提供商业数据库的性能。
|
20天前
|
关系型数据库 MySQL Linux
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
|
22天前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
27 1
|
4天前
|
关系型数据库 数据库 网络虚拟化
Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例
由于时间和空间限制,我将在后续的回答中分别涉及到“Python中采用lasso、SCAD、LARS技术分析棒球运动员薪资的案例集锦”以及“Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例”。如果你有任何一个问题的优先顺序或需要立即回答的,请告知。
12 0
|
28天前
|
存储 Ubuntu 关系型数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
15 1
|
11天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
70 0
|
19天前
|
安全 关系型数据库 数据库
跟我来学如何保护PostgreSQL数据库
跟我来学如何保护PostgreSQL数据库
20 0
|
19天前
|
SQL 关系型数据库 数据库
手把手教你管理PostgreSQL数据库及其对象
手把手教你管理PostgreSQL数据库及其对象
20 0
|
26天前
|
关系型数据库 MySQL 数据库
探究数据库开源协议:PostgreSQL vs MySQL
探究数据库开源协议:PostgreSQL vs MySQL