Appendix J. 术语表

这是一个术语以及它们在LightDB和一般关系数据库系统上下文中的含义的列表。

ACID

原子性(Atomicity), 一致性(Consistency), 隔离性(Isolation), 和 持久性(Durability). 这组数据库事务属性是为了保证并发操作的有效性,并且在发生错误、电源故障等情况下也是如此。

Aggregate function (routine)

一种结合(aggregates)多个输入值的function,例如通过计数、平均或相加,产生一个输出值。

更多信息, 请参见 Section 10.20

See Also Window function (routine).

Analytic function

See Window function (routine).

Analyze (operation)

tables和其他relations中的数据中收集统计信息的过程, 以帮助 query planner做出关于如何执行queries的决策。

(不要把这个术语与EXPLAIN命令的ANALYZE选项搞混淆。)

更多信息,请参见ANALYZE.

Atomic

关于 datum:它的值不能被分解成更小的组件。

关于 database transaction: 参见 atomicity.

Atomicity

transaction的一种属性,它的所有操作要么作为单个单元完成,要么不操作。 此外,如果在事务执行过程中发生了系统故障,恢复后不会看到部分结果。这是ACID的属性之一。

Attribute

tuple中具有特定名称和数据类型的元素。

Autovacuum (process)

一组例行执行vacuumanalyze操作的后台程序。

更多信息,请参见 Section 23.1.6

Backend (process)

代表client session并处理其请求的instance进程。

(不要把这个词与类似的Background WorkerBackground Writer搞混淆)。

Background worker (process)

instance中的进程,该进程运行系统或用户提供的代码。 作为LightDB中的一些特性的基础架构,例如logical replicationparallel queries。 此外,Extensions可以添加自定义的后台工作者进程。

更多信息,参见 Chapter 46

Background writer (process)

将脏data pagesshared memory写入文件系统的进程。 它会定期地唤醒,但只在很短的周期内工作,以便将大开销的I/O活动分布在一段时间内,避免产生可能阻塞其他进程的更大的I/O峰值。

更多信息,参见 Section 18.4.5.

Bloat

数据页中不包含当前行版本的空间,例如未使用(空闲)空间或过时的行版本。

Cast

从当前数据类型到另一数据类型的datum的转换。

更多信息,参见 CREATE CAST

Catalog

SQL标准使用这个术语来表示LightDB术语中所谓的database

(不要把这个术语与 system catalog搞混淆)。

更多信息,参见 Section 21.1

Check constraint

一种定义在 relation上面的constraint类型,以限制一个或多个attributes中允许的值。 检查约束可以引用关系中的同一行的任何属性,但不能引用同一关系的其他行或者其他关系。

更多信息,参见 Section 6.4.

Checkpoint

WAL序列中的一个点,在这个点上可以保证堆和索引数据文件已经被更新,包括所有来自在检查点之前被修改过的shared memory的信息; 一个checkpoint record被写入并刷新到WAL以标记该点。

检查点也是执行到达上述定义的检查点所需的所有操作的行为。 当满足预定义的条件时,如已经过了指定的时间,或者已写入了一定数量的记录,则启动此过程;也可以由用户通过命令CHECKPOINT来调用。

更多信息,参见 Section 29.4

Checkpointer (process)

负责执行检查点的专用流程。

Class (archaic)

See Relation.

Client (process)

通过connectinginstancedatabase交互来建立session的任何进程,可能是远程的。

Column

tableview中找到的attribute

Commit

database中完成transaction的行为,以使其他事务可见的并确保他的durability

更多信息,参见 COMMIT

Concurrency

这个概念指在database里面在同一时间发生多个独立的操作。 在LightDB中,并发性是由multiversion concurrency control机制来控制的。

Connection

客户端进程和backend进程之间的通讯的一个已建成的线路,通常是基于网络,支持session。 这个术语有时候用做为会话的同义词。

更多信息,参见 Section 18.3

Consistency

database中的数据的特性总是遵从于integrity constraints。 事务可能被允许短暂的违反一些约束,在它被提交之前,这样的事务自动被rolled back。 这是ACID属性中的一个。

Constraint

table中数据的值上所允许的限制,或的属性。

更多信息,参见 Section 6.4

Data area

See Data directory.

Database

local SQL objects的一个已命名的汇集?

更多信息,参见 Section 21.1

Database cluster

数据库和全局SQL对象的一个汇集,以及他们的公用状态和动态元数据。有时被引用为cluster

LightDB中,术语cluster有时也用来指一个实例。(不要将这个术语与SQL命令CLUSTER混淆。)

Database server

See Instance.

Data directory

server文件系统上的基本目录,包含与database instance相关联的所有数据文件和子目录 (除了tablespaces和可选的WAL)。 环境变量LTDATA通常用于引用数据目录。

cluster的存储空间包括数据目录以及一些额外的表空间。

更多信息,参见 Section 52.1

Data page

用于存储关系数据的基本结构。所有的页面大小相同。数据页往往存储在磁盘上,每个数据页都存储在一个特定的文件中,并且可以被读取到shared buffers,在那里它们可以被修改,变为dirty的。 它们写入磁盘时变得干净。新页面,最初只存在于内存中,在写入之前也是脏的。

Datum

SQL数据类型的一个值的内部表示方式。

Delete

从给定tablerelation中删除rowsSQL命令。

更多信息,参见 DELETE

Durability

保证一旦transactioncommitted,即使在系统故障或崩溃后变更仍然存在。这是ACID的特性之一。

Epoch

See Transaction ID.

Extension

可以安装在instance上的附加包,以获得额外特性。

更多信息,参见 Section 38.17

File segment

存储给定relation的数据的一种物理文件。 文件段的大小受配置值的限制(通常为1G比特),所以如果一个关系超过这个大小,它就被分割成多个段。

更多信息,参见 Section 52.1

(不要将这个术语与相似的WAL segment混淆)。

Foreign data wrapper

表示本地database中不包含的数据的一种方式,使其看起来就像在本地table(s)中一样。 使用外部数据封装器,可以定义外部foreign serverforeign tables

更多信息,参见 CREATE FOREIGN DATA WRAPPER

Foreign key

一种定义在table中的一个或多个columns上的constraint类型, 它需要这些columns中的值标识另一个表中的零或一row(或者,偶尔是相同的)。

Foreign server

foreign tables的命名的集合,它们都使用相同的foreign data wrapper,并具有其他共同的配置值。

更多信息,参见 CREATE SERVER

Foreign table (relation)

一种relation,看起来拥有与常规table相似的rowscolumns, 但将通过它的foreign data wrapper转发对数据的请求, 并将返回根据foreign table定义的结构化的result sets

更更多信息,参见CREATE FOREIGN TABLE

Fork

在被存储的关系中的每个单独分段文件集。main fork是实际数据驻留的地方。 对于元数据还存在两个次要分支:free space mapvisibility mapUnlogged relations也有一个init fork

Free space map (fork)

一种存储结构,用于保存关于表的主分支的每个数据页的元数据。 每个页面的空闲空间映射条目存储对于未来元组可用的空闲空间数量,并且是结构化的,可以高效地搜索给定大小的新元组的可用空间。

更多信息,参见 Section 52.3

Function (routine)

一种例程类型,它接收零个或更多参数,返回零个或更多输出值,并被限制在一个事务中运行。 函数被调用作为查询的一部分,例如通过SELECT。某些函数可以返回 sets; 这些被称为set-returning functions

函数还可以用于triggers调用。

更多信息,参见 CREATE FUNCTION

Grant

一个SQL命令,用于允许userrole访问database中的特定对象。

更多信息,参见 GRANT

Heap

包含对于关系的row属性(例如数据)的值。 堆是在关系的main fork中的一个或多个file segments中实现的。

Host

与其他计算机通过网络通信的计算机。这有时被用作server的同义词。 它也用于指运行client processes的计算机。

Index (relation)

包含从table中派生的数据的relation。 它的内部结构支持对原始数据的快速检索和访问。

更多信息,参见 CREATE INDEX

Insert

用于向table中添加新数据的SQL命令。

更多信息,参见 INSERT

Instance

一组使用公共的共享内存区域进行通信的后端进程和辅助进程。 一个 postmaster process进程管理实例;一个实例管理一个database instance及其所有数据库。 只要TCP端口不冲突,许多实例可以在同一台server上运行。

实例处理DBMS的所有关键属性:读和写到文件以及共享内存, 确保ACID特性,connectionsclient processes,特权验证,崩溃恢复,复制等等。

Isolation

在提交之前,事务的效果对concurrent transactions不可见的属性。这是ACID的特性之一。

更多信息,参见 Section 14.2

Join

queries中用于组合来自多个relations的数据的操作和SQL关键字。

Key

一种标识table或其他relation中的row的方法, 通过关系中一个或多个attributes中包含的值。

Lock

允许进程限制或阻止对资源同时进行访问的一种机制。

Log file

日志文件包含关于事件的人类可读的文本行。例如登录失败、长时间运行的查询,等等。

更多信息,参见 Section 23.3

Logged

如果对表的更改被发送到WAL,则认为该tablelogged。 默认情况下,所有常规表都被记日志。可以将表指定为unlogged,在创建时或通过ALTER TABLE命令。

Logger (process)

如果被激活,该进程将有关数据库事件的信息写入当前log file。 当达到某些依赖于时间或卷的标准时,将创建一个新的日志文件。也叫syslogger

更多信息,参见 Section 18.8

Log record

WAL record的古体术语叫法。

Master (server)

See Primary (server).

Materialized

预先计算并存储一些信息的属性,以供以后使用,而不是在运行中计算。

这个术语意思是从视图的查询中导出的数据并与该数据的来源分开存储在磁盘上。

这个术语也用于代指一些多步骤查询,表示执行给定步骤产生的数据存储在内存中(有溢出到磁盘的可能性),这样就可以通过另一个步骤多次读取数据。

Multi-version concurrency control (MVCC)

一种机制,用于允许一些transactions读取和写入相同的行,而不会因一个进程导致其他进程停顿。 在LightDB中,MVCC是通过在tuples被修改时创建副本(versions)来实现的;在可以看到旧版本终止的事务之后,需要删除那些旧版本。

Null

不存在性(non-existence)的概念,是关系数据库理论的中心原则。它表示没有一个确定的值。

Optimizer

See Query planner.

Parallel query

处理执行部分query的能力,以利用具有多个CPU的服务器上的并行进程。

Partition

大的集合中的几个不相交(不重叠)的子集之一。

partitioned table的引用:每个表都包含分区表的部分数据的表之一,称为parent。 分区本身是一个表,所以也可以直接查询;同时,分区有时可以是一个分区表,允许创建层次结构。

query中有关的window function, 分区是一种用户定义的标准,它确定该函数可以考虑query's result set的哪些邻近rows

Partitioned table (relation)

语义上与table,相同的relation,但其存储分布在多个partitions上。

Postmaster (process)

instance的第一个过程。它启动和管理其他辅助进程,并根据需要创建backend processes

更多信息,参见 Section 17.3

Primary key

table或其他relation上定义的unique constraint的一种特殊情况, 它也保证primary key内的所有attributes不会有null值。 顾名思义,每个表只能有一个主键,但也可能有多个惟一的约束,这些约束也不支持空(null-capable)属性。

Primary (server)

当两个或多个databases通过replication链接时, 被认为是权威信息源的server称为primary,也称为master

Procedure (routine)

一种例程。它们的特点是不返回值,并且允许它们执行如COMMITROLLBACK这样的事务语句。它们是通过CALL命令调用的。

更多信息,参见 CREATE PROCEDURE

Query

客户端向backend发送的请求,通常用于返回结果或修改数据库上的数据。

Query planner

LightDB中用于确定(planning)执行queries的最有效方法的部分。 也称为query optimizeroptimizer或简称为planner

Record

See Tuple.

Recycling

See WAL file.

Referential integrity

通过foreign key限制一个relation中的数据的一种方法, 使它在另一个relation中必须有匹配的数据。

Relation

database中所有对象的通用术语,有名称和以特定顺序定义的attributes列表。 Tables,sequences, views,foreign tables, 复合类型和indexes都是关系。

更通用的来说,关系是一组元组;例如,查询的结果也是一个关系。

LightDB中,Classrelation的古老同义词。

Replica (server)

primary数据库配对并维护主数据库部分或全部数据副本的database。 这样做的最主要的原因是允许对该数据进行更大的访问,并在primary服务器不可用时保持数据的可用性。

Replication

将一台server上的数据复制到另一台服务器上的行为称为replica。 这可以采用physical replication的形式,其中一个服务器上的所有文件更改都是逐字复制的,或者是logical replication,其中已定义的数据更改子集使用更高层次的表示来传递。

Result set

SQL命令完成后从backend process传输到clientrelation, 通常是SELECT,但如果指定了RETURNING子句,则可以是INSERTUPDATEDELETE命令。

结果集是一个关系这一事实意味着一个查询可以用于另一个查询的定义,成为一个subquery

Revoke

用于防止指定roles列表对指定database对象集的访问的命令。

更多信息,参见 REVOKE

Role

instance的访问权限的集合。角色本身是可以授予其他角色的特权。 当多个users需要相同的特权时,这样做通常是为了方便或确保完整性。

更多信息,参见 CREATE ROLE

Rollback

撤销自transaction开始以来执行的所有操作的命令。

更多信息,参见 ROLLBACK

Routine

存储在数据库系统中可被调用以执行的一组已定义的指令集合。例程可以用多种编程语言编写。 例程可以是functions(包括返回集的函数和trigger functions)、aggregate functionsprocedures

LightDB自身已经定义了许多例程,但是也可以添加用户定义的例程。

Row

See Tuple.

Savepoint

transaction中步骤序列中的特殊标记。在此时间点之后的数据修改可能会被恢复到保存点的时间。

更多信息,参见 SAVEPOINT

Schema

模式是SQL objects的名称空间,这些对象都驻留在同一个database中。 每个SQL对象必须确切的驻留在一个模式中。

所有系统定义的SQL对象都驻留在模式pg_catalog中。

更通常地,schema术语用于表示给定database或其子集的所有数据描述(table定义、constraints、注释等)。

更多信息,参见 Section 6.9

Segment

See File segment.

Select

用于从database请求数据的SQL命令。 通常,SELECT命令不会以任何方式修改database,但是查询中调用的functions可能会产生修改数据的作用。

更多信息,参见 SELECT

Sequence (relation)

一种用于生成值的关系类型。通常生成的值是连续的非重复的数字。它们通常用于生成替代的primary key值。

Server

运行LightDB实例的计算机。术语server表示实际硬件、容器或virtual machine

这个术语有时用于指实例或主机。

Session

允许客户端和后端进行交互的状态,通过connection通信。

Shared memory

instance的公共进程使用的RAM。 它可以镜像部分database文件,为WAL records提供一个临时区域,并存储其他公共信息。注意,共享内存属于整个实例,而不是单个数据库。

共享内存中最大的部分称为shared buffers,用于镜像组成页面的部分数据文件。 当页面被修改时,它被称为脏页面,直到它被写回文件系统。

更多信息,参见 Section 18.4.1

SQL object

任何可以使用CREATE命令创建的对象。大多数对象都特定于一个数据库,通常称为local objects

大多数本地对象都属于它们所被包含的数据库中的特定schema,比如relations(所有类型)、routines(所有类型)、数据类型等。 同一模式中相同类型的对象的名称是强制性要求唯一的。

也存在不属于模式的局部对象;一些例子是extensionsdata type castsforeign data wrappers。 数据库中相同类型的对象的名称必须是唯一的。

其他对象类型,如rolestablespaces、复制源、逻辑复制的订阅和数据库本身都不是本地SQL对象,因为它们完全存在于任何特定的数据库之外; 它们被称为global objects。在整个数据库集群中这些对象的名称必须是唯一的。

更多信息,参见 Section 21.1

SQL standard

定义SQL语言的一系列文档。

Standby (server)

See Replica (server).

Stats collector (process)

该流程收集关于instance的活动的统计信息。

更多信息,参见 Section 26.2

System catalog

tables的集合,描述了实例的所有SQL objects的结构。 系统目录位于pg_catalog模式中。这些表包含内部表示的数据,并且通常不被认为对用户检查有用; 许多用户友好的views(,也在pg_catalog模式中, 提供了对其中一些信息的更方便的访问,而在模式information_schema(参见 Chapter 34)中存在其他表和视图,它们公开了SQL standard规定的一些相同和额外的信息

更多信息,参见 Section 6.9

Table

具有公共数据结构的tuples集合(相同数量的attributes、以同样的顺序、每个位置具有相同的名称和类型)。表是LightDB中最常见的relation形式。

更多信息,参见 CREATE TABLE(含分布式)

Tablespace

服务器文件系统上的一个已命名位置。所有需要在它们的系统编目中定义上面存储的SQL objects必须属于单个表空间。 最初,一个数据库集群包含一个可用的表空间,它被用作于所有SQL对象的默认表空间,称为pg_default

更多信息,参见 Section 21.6

Temporary table

sessiontransaction的生命周期内存在的Tables,如创建时指定的那样。 其中的数据对其他会话是不可见的,并且不会被logged。临时表经常用于存储多步骤操作的中间数据。

更多信息,参见 CREATE TABLE(含分布式)

TOAST

一种将表行的大型属性分割并存储在辅助表中的机制,该表被称为TOAST table。每个具有大型属性的关系都有自己的TOAST表。

更多信息,参见 Section 52.2

Transaction

必须作为单个atomic命令的命令组合:它们都作为单个单元成功或失败,并且它们的效果对其他sessions是不可见的,直到事务完成,甚至更晚,这取决于隔离级别。

更多信息,参见 Section 14.2

Transaction ID

每个事务在第一次导致数据库修改时所接收到的数字的、唯一的、按顺序分配的标识符。 常缩写为xid。当存储在磁盘上时,xids仅有有32位宽,因此只能生成大约40亿个写事务id; 为了允许系统运行的比那个更长,使用了epochs,也是32位宽。 当计数器达到最大的xid值时,它从3开始(那以下的值被保留了),epoch增加值为1。 在某些上下文中,epoch和xid值一起被视为单个64位值。

更多信息,参见 Section 9.17

Transactions per second (TPS)

每秒执行的平均事务数,在测量运行的所有活动会话中合计。这是被用做衡量实例的性能特性。

Trigger

当某个操作(INSERT,UPDATE, DELETE,TRUNCATE)应用于某个relation时,可以被定义执行的function。 触发器与调用它的语句在同一个transaction中执行,如果函数失败,则调用语句也失败。

更多信息,参见 CREATE TRIGGER

Tuple

按固定顺序排列的attributes集合。 该顺序可以由包含元组的table(或其他relation)定义, 在这种情况下,元组通常被称为一row。它也可以由结果集的结构定义,在这种情况下,它有时被称为record

Unique constraint

一种relation上定义的constraint, 其限制的值允许在一个列或列的组合,以便每个值或值的组合关系中只能出现一次,也就是说,没有其他关系中的行包含值与之相等。

因为null values不被认为是相等的,所以允许在不违反唯一约束的情况下存在多个空值行。

Unlogged

某些relations的性质,即它们的变化没有反映在WAL中。这将禁用这些关系的复制和崩溃恢复。

非日志表的主要用途是存储必须要跨进程共享的临时工作数据。

Temporary tables总是非日志的。

Update

用于修改指定table中可能已经存在的rowsSQL命令。它不能创建或删除行。

更多信息,参见 UPDATE

User

具有LOGIN 特权的role

User mapping

将本地database中的登录凭据转换为由foreign data wrapper定义的远程数据系统中的凭据。

更多信息,参见 CREATE USER MAPPING

Vacuum

从表中删除过时的tuple versions的过程,以及MVCCLightDB实现所需的其他密切相关的处理过程。 这可以通过使用VACUUM命令来启动,但是也可以通过autovacuum进程自动处理。

更多信息,参见Section 23.1

View

SELECT语句定义的relation,但没有自己的存储空间。 每当查询引用视图时,视图的定义就会被替换到查询中,就好像用户输入它作为子查询而不是视图的名称。

更多信息,参见 CREATE VIEW

Visibility map (fork)

一种存储结构,用于保存表的主分支的每个数据页的元数据。 每个页面的可视性映射条目存储两个比特:第一个(all-visible)表示页面中的所有元组对所有事务都可见。 第二个(all-frozen)表示页面中的所有元组都标记为冻结。

WAL

See Write-ahead log.

WAL archiver (process)

一种保存WAL files副本的过程,目的是创建备份或保持当前的replicas

更多信息,参见 Section 24.3

WAL file

又称WAL segmentWAL segment file。为WAL提供存储空间的每个按顺序编号的文件。 这些文件都具有相同的预定义大小,并且是按顺序写入的,当它们在多个同时发生的会话中发生时,会将更改穿插在其中。 如果系统崩溃,则按顺序读取文件,并重现每个更改,以将系统恢复到崩溃前的状态。

checkpoint把每个WAL文件的所有修改写入相应的数据文件后,就可以释放每个WAL文件。 释放文件可以通过删除它,也可以通过更改它的名称以便将来使用,这被称为recycling

更多信息,参见Section 29.5

WAL record

对单个数据更改的低级描述。它包含足够的信息,以便数据更改可以被重新执行(replayed),在系统故障导致更改丢失的情况下。 WAL记录使用不可打印的二进制格式。

更多信息,参见Section 29.5

WAL segment

See WAL file.

WAL writer (process)

WAL recordsshared memory写入WAL files的进程。

更多信息,参见 Section 18.5

Window function (routine)

query中使用的一种function, 用于查询result set的一个partition; 该函数的结果基于在相同分区或框架的rows中找到的值。

所有aggregate functions都可以用作窗口函数,但是窗口函数也可以用来给分区中的每一行排序。也称为analytic functions

更多信息,参见Section 4.5

Write-ahead log

当用户和系统调用操作发生时,跟踪database instance中的更改的日志。 它包含许多顺序写入WAL files的独立WAL records