Sybase IQ体系结构
1. SybaseIQ体系结构 SybaseIQ数据库包括服务器进程、数据库空间和服务器文件,其中数据库空间指:元数据存储catalog store,IQ主数据存储iq store,临时数据存储temporary store。如下图所示。
1.1.
数据库服务器 Sybase IQ 数据库服务器(Server)是运行在一台主机上的操作系统进程,是 Sybase IQ 数据库系统的核心,用户连接到Sybase IQ服务器访问Sybase IQ 数据库中的数据。单台的硬件服务器下,SybaseIQ采用“一个服务器一个数据库”的架构,在Multiplex架构下,属于“多个服务器一个数据库”。一台硬件服务器可以安装多个SybaseIQ数据库,不推荐在一个服务器上安装多个数据库。
1.1.1.
Sybase ASA和SybaseIQ Sybase ASA (Adaptive Server Anywhere)是独立于SybaseIQ的另一个按行存储的关系型数据库,是Sybase信息移动解决方案的一个核心产品,主要用于移动设备数据库,属于小型数据库产品。SybaseIQ的数据库元数据管理采用了ASA引擎,Sybase ASA负责SybaseIQ的元数据的存储管理,数据库连接调度库,查询解析,系统安全和组件集成服务(Component Integration Services)。基于SybaseIQ的程序开发与基于Sybase ASA的程序类似。
1.1.2.
CIS用户接口 基于Sybase数据库产品直接的数据库互连访问,可以通过其产品内嵌的CIS功能实现,不需要额外产品支持,通过Open Client方式实现远程数据库的数据加载和isql方式的数据库访问,需要配置open client接口文件。UNIX和Linux方式文件存放在用户的主目录,文件名为inte易做图ces,Windows下文件名为sql.ini。以下文件是一个CIS接口配置文件样板,配置了两个服务器,其中服务器asiqdemo,IP为158.77.123.168端口为2638 ;服务器test,IP为158.77.123.244端口为2688:[asiqdemo]
master=TCP,158.77.123.168,2638
query=TCP,158.77.123.168,2638[test]
master=TCP,158.77.123.244,2688
query=TCP,158.77.123.244,2688
1.2.
数据库构成 1.2.1.
数据库空间 SybaseIQ以数据库空间方式将应用级别在多个磁盘上分布式存储用户数据,一个数据库空间可能是一个操作系统文件或者一个磁盘的原始分区。数据库空间中同时存储用户数据或者用于用户启动、恢复、备份和事务管理的内部数据结构。
SybaseIQ数据库建立成功后,将缺省建立如下几个数据库文件
<数据库名>.db是元数据库空间,包含描述数据库的系统表和存储过程,按照Sybase另一个数据库ASA标准描述,数据库空间名是SYSTEM。
<数据库名>.iq 是IQ存储,存储SybaseIQ的数据表和索引, IQ存储的第一个数据库空间名是IQ_SYSTEM_MAIN。
<数据库名>.iqtmp 是初始化的临时存储,包含查询生成的临时表,临时存储的第一个数据库空间名是IQ_SYSTEM_TEMP。
Multiplex架构的查询服务器上的用户还可以建立本地存储空间,它的用途与主数据存储类似,但是只能被建立它的查询服务器使用。用户可以在数据库建立期间建立所有的数据库空间,也可以在数据库建立后添加数据库空间。
其中元数据存储必须以文件形式存在,IQ存储、临时存储和本地存储可以是文件或者裸设备形式。
元数据存储
每个数据库对应一个元数据表空间,只能放在文件系统上,文件名形如“<数据库名>.db”,这个文件随数据库对象增加动态增长,包括所有需要管理的IQ 数据库信息,系统表元数据存储,系统和用户的存储过程。元数据空间的逻辑名是 SYSTEM。
元数据存储采用Sybase按行存储的数据库Sybase ASA,其数据库页面通常是4K (4096 byte),其页面大小在建立数据库时指定。
通常元数据存储中包括如下系统表,完整的系统表列表可以参考SybaseIQ的产品手册:
SYSIQCOLUMN:数据库中的所有表和视图的字段信息;
SYSIQFILE:数据库操作系统文件列表;
SYSIQINDEX:数据库的索引信息;
SYSIQTABLE:数据库中的所有表和视图信息;
这些系统表数据可以通过
DBISQL客户端或者 Sybase Central浏览。
IQ存储
SybaseIQ的数据以压缩的索引方式存储在磁盘上的数据 ,也包括SybaseIQ的事务日志,采用(free list)方式管理分配空间,free list指明已经分配给IQ存储的磁盘页面。IQ存储是一种预分配的空间,它也可以通过预先计划的形式进行空间扩充。当数据库首次建立时,将建立一个数据库空间。每个数据库只有一个IQ存储(IQ STORE),但是可以包括多个数据库空间(dbspaces),数据库空间可以是裸设备或者文件系统,IQ存储的第一个数据库空间逻辑名称为 IQ_SYSTEM_MAIN。
在规划数据库空间时,IQ存储的总空间可以按照源数据的75%规划。其数据存储的空间耗费与数据类型、数据重复值,以及IQ索引的类型和数量有关。
多个IQ存储的数据库空间,会提升系统性能,IQ存储数据库空间的个数与CPU有关,一般要求 3+CPU数量(内核个数)/10,对于Multiplex环境CPU数量是指所有服务器的CPU数量的总和。IQ存储的数据库空间可以在系统运行后,由具有DBA权限的用户添加,对于单点的SybaseIQ可以采用命令行方式或者Sybase Central方式添加,对于Multiplex方式的SybaseIQ,必须通过Sybase Central方式添加。
IQ存储的数据库层面的空间分配按照IQ页面分配,IQ页面大小在数据库建立时由用户通过建立数据库的语句指定。数据库建立后,其IQ页面大小不允许修改。IQ页面大小可以是64KB,128KB,256KB或者512KB。
推荐的IQ PAGE SIZE大小是数据库中最大表宽的两倍。数据必须是2的倍数,数据从65536到524288。
64KB (IQ PAGE SIZE 65536):最大表的记录数10亿条,单个表大小大小不超过8TB。 对应32位系统64KB IQ page size性能最好。
128KB (IQ PAGE SIZE 131072)对于64-位平台的数据库最大表记录条数超过10亿条记录不超过40亿条记录,单表大小可超过8TB 。128KB 是缺省的IQ page size。
256KB (IQ PAGE SIZE 262144) 对于64-位平台的数据库最大表记录条数超过40亿条记录,单表大小可超过8TB 。
临时存储
在数据加载和数据查询时需要使用临时存储。在数据加载和数据删除时,临时存储用来建立和修改字段上的HG索引和优化的FP索引。数据查询时,临时存储用来进行数据排序,以及分组和表连接处理。数据库建立时,会建立一个初始化的临时存储的数据库空间,临时存储的第一个数据库空间的逻辑名是IQ_SYSTEM_TEMP。临时存储可以是文件系统方式或者裸设备方式,其文件系统方式的扩展名一般是.iqtmp,裸设备方式时,也建议建立类似命名规则的符号连接。
多个的临时存储的数据库空间,会提升系统性能,一般要求临时存储的空间是IQ存储的20%,个数与CPU有关系,一般要求 3+CPU数量(内核个数)/10。临时存储的数据库空间可以在系统运行后,由DBA添加,对于单点的SybaseIQ可以采用命令行方式或者Sybase Central方式添加,对于Multiplex方式的SybaseIQ,必须通过Sybase Central方式添加临时存储的数据库空间。
1.2.2.
数据库文件 服务器消息日志(IQ Message Log)
每个Sybase IQ服务器对应一个IQ信息日志文件,此文件只能存放在文件系统上,是可以显示的文本文件,SybaseIQ消息日志文件包括:错误信息,状态信息,插入、删除信息,执行计划等。
数据库建立成功正常启动后,第一个连接的用户建立此文件。其缺省文件名是“<数据库名>.iqmsg”。
元数据库事务日志(Catalog Store Transaction Log)
SybaseIQ元数据存储就是一个Sybase ASA数据库,用于存储SybaseIQ的元数据,是一个传统的按行存储的OLTP数据库。元数据库事务日志文件名形如“<数据库名>.log”,用于元数据事务管理,,实现元数据事务的回滚或者前滚。文件是二进制格式。是一个由SybaseDBMS管理的一个缓慢增长的文件(可能会到百兆)。
对此文件的清理必须通过数据库命令,不可以直接作操作系统层面文件清理。
IQ服务器日志(IQ Server Logs)
Sybase IQ服务器在每次启动时创建一个服务器日志文件存放启动信息,服务器日志文件存放于目录$ASDIR/logfiles。
对于Windows下:
IQ_startup_nt.log只记录服务器启动参数
server_name.00n.srvlog:n是服务器启动的次数。其它的服务器信息送到NT 控制台窗口。这些信息能通过数据库启动配置文件.cfg中的配置选项 -o 选项保存到指定文件上
对于Unix和Linux平台服务器,每次服务器启动时会产生两个日志文件:
IQ_Server_name.00n.stderr 和 IQ_Server_name.00n.srvlog 其中n 指服务器的启动次数。
IQ_Server_name.00n.srvlog 在数据库服务器启动时建立,显示其启动时间,检查点,服务器错误信息,数据库表加载、删除提示信息。
文件IQ_Server_name.00n.stderr会在数据库的每次启动时建立一个新文件,记载服务器启动日志和某些特定参数。
1.2.3.
数据库构成图 下图是一个多机架构的SybaseIQ的构成示意图,一个数据库有一个或者多个实例,每一个实例有自己的元数据存储(mydb.db)、临时存储(mydb.iqtmp)、元数据事务日志(mydb.log)、服务器消息日志(mydb.iqmsg),一个写服务器实例和多个查询服务器实例共享一个IQ存储(mydb.iq)