ASE15.7 推出了以下特性,以减少对存储的需求:
• 压缩
ASE 15.7 可以对活动的数据集进行数据库内压缩。无论普通关系型数据还是非结构化数据(大对象或LOB)都可以被压缩。初期的内部基准测试表明,压缩比可以轻松达到 50-80%。
同时,ASE 15.7采用了一系列压缩策略来实现高压缩比,包括在单一行内进行压缩,以便将固定长度列内空格/零压缩掉。在页面块层面,既包含针对页词典,也包含针对页面索引的压缩策略。重复的数据条目和数据集被单一的引用所取代,从而减少了大量重复数据。数据可以在数据库、表格或分区级别进行压缩,允许客户对活动和非活动的数据分别设置压缩选项。
ASE 15.7 支持数据库中 LOB 压缩。由于 LOB 可以非常大(高达2GB),压缩可节省大量空间。此外,ASE 15.7还支持 FastLZ 和 ZLib 压缩技术,这二者是无损压缩算法。前者的CPU使用率更低、处理时间更短,而后者可获得更高的压缩比。
客户可灵活选择数据库、表格或是列上的 LOB 压缩。
• 行内 LOB
现代软件越来越需要管理与处理非结构化数据。这种数据被作为 LOB 列进行存储(例如文本、图像、unitext、XML 等)。LOB 大小不一,从数比特到数 GB 都有。ASE 通过分配单独的存储区块,从母数据行中指向它们,从而优化LOB 存储。这对于处理更大的 LOB 而言非常有效。ASE 15.7 现已强化了这一功能,还支持行内 LOB,以应对 LOB 较小且牢靠地契合在母数据行内。
这带来两个好处:优化的小型 LOB 空间分配带来存储空间的节省,并且通过减少额外的I/O开销,来提高小型 LOB 的读取速度。
ASE 可无缝从行内 LOB 向行外 LOB 存储迁移(或反之)。对于因更新而导致的 LOB 大小上的变化,永远保持优化存储。
• 非物化的非空列无需进行数据拷贝
在过去,向现有的表格追加非空列需要对数据进行完整拷贝,这在遇到非常庞大的表格时尤其不方便。ASE 15.7 现在可以创建非物化的非空列。这意味着无需真正执行数据拷贝(复制数据需要占用大量临时空间,等于原有的表格大小),即可新建列。这既节约了空间,也节省了时间。
• 事务日志压缩
事务日志常会因为以下几个原因变得非常庞大:扩大处理完整日志的情形,支持可能需要大量空间的一次性操作,甚或是由于在容量规划时估计值过高。而ASE 15.7 可以压缩事务日志。
看点二:应用程序开发效率提升
ASE 15.7 提供了为数众多的增强功能,用来提高应用程序的开发效率。
• 更简单并且更高效的 LOB 读取与运算
除了支持前面讨论过的行内 LOB 之外,ASE 15.7 还推出了 LOB 定位器的概念。LOB 定位器实际上就是一个句柄(指针),指向缓存在 ASE 服务器内存中的 LOB。客户端应用程序可以将定位器作为主机变量和参数标记来发送和接收。当客户端应用程序需要读取、搜索或更新 LOB 时,它通过 LOB 定位器与与服务器进行通信,而不是发送和接收真正的 LOB。这极大地减少了客户端与服务器之间的网络流量,还减少了对于客户端内存的需求。
它提供了一系列适用于 LOB 的 T-SQL 指令。这些指令可以方便轻松地对 LOB (LOB 的截断和串联,提取 LOB 中子字符串等等)进行运算。ODBC 客户端可以运用这些 T-SQL 指令来操作 LOB。jConnect JDBC 驱动程序支持用Blob、Clob、NClob 等级访问定位器。
• 针对并发和隔离级别的更大灵活性
LOB 现在还能作为已存储流程的参数进行传输。这给在存储的流程内部操控 LOB 提供了更大的灵活性,并且为开发人员减少了代码的复杂程度。
• SQL 表现力增强
ASE 15.7 还提供了一系列 T-SQL 更新,可实现更大的 SQL 表现力和对于并发及隔离级别的语义的控制力。这其中包括:
支持 MERGE 语句,可从源表格(表格、视图派生表)将行传输到目标表格;
SELECT FOR UPDATE 可实现锁定选定的行,以便日后更新;
对所有隔离级别,支持在游标关闭活动事务时释放游标读取锁;
各种嵌套SELECT语句的增强;
支持在链式事物模式下运行所有系统过程和特定DDL语句。
• 支持脚本语言驱动程序
ASE 15.7 给程序开发人员带来的另一个好处是通过Sybase所提供与支持的脚本语言驱动程序,如 python、PHP 以及 perl。对于大量熟悉这些语言的开发者来说,就能轻松利用这项特性。