1. 数据库的概念
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
2. 数据库分类
通过数据的保存格式进行分类,现阶段流行的数据库主要分为以下两种:
-
关系型数据库
关系型数据库采用表格的存储方式,数据以行和列的方式进行存储。存储的格式可以直观地反映实体间的关系。使用SQL(Structured Query Language,结构化查询语言) 对数据进行操作。
常见的有Oracle、MySQL、微软的SQL Server、PostgreSQL、IBM的DB2等。
-
非关系型数据库
伴随着互联网技术快速发展,传统关系型数据库在应对大数据量,比如大规模和高并发动态网页时,已经有些力不从心,曝露了许多难以克服的难题。因此出现了针对大规模数据量场景,以性能卓越和应用便捷为目的的的数据库产品——NOSQL数据库。
非关系型数据库主要是根据“非关系实体模型”的数据库,也称之为NoSQL数据库,NOSQL的原意是“Not only SQL”,NoSQL的出现并不是要完全否认关系型数据库,只是做为传统关系型数据库的一个合理补充。NoSQL数据库在特殊的情景下能够充分发挥出高效率和卓越性能。
非关系型数据库分类:
-
键值型数据库:Redis
-
列储存数据库:Hbase
-
文档型数据库:MongoDB
-
图型数据库: Neo4j
-
3. PostgreSQL
3.1. 简介
PostgreSQL是一个开源的,特性非常齐全的对象-关系型数据库,同时还支持NoSql的文档型存储。
3.2. 特性
-
复杂查询
-
外键
-
触发器
-
可更新视图
-
事务完整性
-
多版本并发控制
-
数据类型:
-
函数:
-
操作符:
-
聚集函数:
-
索引方法
-
过程语言
3.3. PostgreSQL的特征
-
多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。
-
数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据等。
-
全文检索:通过 Tsearch2 或 OpenFTS。
-
NoSQL:JSON,JSONB,XML,HStore 原生支持,甚至 NoSQL 数据库的外部数据包装器。
-
数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen等,使用 FDW(Foreign data wrappers) 进行 ETL(Extract-Transform-Load)。
-
函数:通过函数,可以在数据库服务器端执行指令程序。
-
索引:用户可以自定义索引方法,或使用内置的 B 树,哈希表与 GiST(Generalized S