并行对于现代的大数据的处理平台是极其关键的,同样的,SAP HANA亦不例外,从某种程度上来说,正是无所不用其极的并行及其基于内存的计算模式使得SAP HANA的计算性能达到现象级。
相对于Hadoop,在SAP HANA中实现并行编程是比较容易的,SAP HANA的并行对Developer来说是透明的,只需遵循一定的规则,数据库会自动的实现并行。
其中有两条规则至关重要:
1. store procedure须是read only的,即不能有增删改查的语句
2. 各语句之间要尽量的相互独立
举个简单例子:
DROP PROCEDURE proc_parall;
CREATE PROCEDURE proc_parall
LANGUAGE READS SQL DATA AS
BEGIN
tmp1 = SELECT DAY, COUNT(*) AS NUM FROM day_table GROUP BY DAY;
tmp2 = SELECT DAY, COUNT(*) AS NUM FROM other_table GROUP BY DAY;
SELECT TOP 10 * FROM :tmp1;
SELECT TOP 10 * FROM :tmp2;
END;
在上例中tmp1, tmp2由于用到的表是不同的,因此编译器会将这两个语句并行,当然,为了更显示的表示上述语句的独立性,可以将上述store procedure写成两个,即:
DROP PROCEDURE part1;
CREATE PROCEDURE part1
LANGUAGE READS SQL DATA