3、 SQL:這裡是指完整的SQL/SP,即ANSI 2000或其超集。以Greenplum為例,GreenplumSQL計算能力強,開發效率高,性能高,這是它最大的優勢。其他優勢包括語言通用性強,學習成本低,維護簡單、有一定的移植可能性。當然,它還有個絕招:支援存儲過程,可以進行複雜的計算,是以可以友善地從大資料中獲得商業價值。示例如下:
CREATE OR REPLACE functionview.merge_emp()
returns void as $$
BEGIN
truncate view.updated_record;
insert into view.updated_record selecty.* from view.emp_edw x right outer join emp_srcy on x.empid=y.empid where x.empid is not null;
update view.emp_edw setdeptno=y.deptno,sal=y.sal from view.updated_record y where view.emp_edw.empid=y.empid;
insert into emp_edw select y.* fromemp_edw x right outer join emp_src y on x.empid=y.empidwhere x.empid is null;
end;
$$ language 'plpgsql';
類似的MPP架構的資料庫還有Teradata、Vertical 、Oracle、IBM等,它們的文法特征大多相似。缺點也有相似性。它們的購買成本和後續維護成本極高。其中自稱廉價的Greenplum實則價格不菲,它按資料規模收費,被稱為披着BigData外皮的BigMoney。其他缺點包括:難以調試、文法不相容、擴容時停機時間長、難以進行多資料源的計算等。
4、類SQL:這是指具有JDBC/ODBC等輸出接口,但僅是标準SQL的子集的一類腳本語言。這裡以Hive QL為例。開發友善的同時可以廉價橫向擴容,這是Hive QL最大的優勢。它具有SQL的文法特征,是以學習成本低,開發效率高,維護簡單。另外Hive是Hadoop的元件,開源是它的一大優勢。示例如下:
SELECT e.* FROM (
SELECTname, salary, deductions["Federal Taxes"] as ded,
salary* (1 – deductions["Federal Taxes"]) as salary_minus_fed_taxes
FROMemployees
)e
WHEREround(e.salary_minus_fed_taxes) > 70000;
Hive QL的缺點是不支援存儲過程,是以難以進行複雜計算,也就難以真正提供有價值的計算結果。稍複雜的計算它需要求助于MapReduce,開發效率很低。性能差,有門檻時間也是個緻命弱點,比如配置設定任務,或執行多表關聯計算、行間計算、多級子查詢、有序分組計算等算法時。是以很難實作實時的Hadoop大資料應用。
也有其他産品支援類SQL,比如MongoDB,但比Hive尚有差距。
大資料計算的方法不外乎API 、Script、SQL、類SQL這四類,希望它們更進一步,出現更多成本低廉、計算能力強的實用産品。