HTAPを進化させたHSAPアルゴリズムとは？

こんにちは、寺尾です。

この記事は、[Alibaba Cloud アドベントカレンダー](https://qiita.com/advent-calendar/2020/alibabacloud) 12日目の記事です。

最近はデータ分析やデータ基盤について勉強を進めています。つまり、この分野では初学者な訳ですが、Alibaba Cloudが新たにリリースをしいたHologresで活用されている **「HSAP」** アルゴリズムについて知ったので、初学者目線で紹介をしたいと思います。

# HSAPが誕生する流れ

初学者なりに、順番に話をしていきたいと思います。（不正確なところがあればコメントください）

## まずはRDBMSがあった

まず、これまでふれてきたデータに関するプロダクトというと、リレーショナルデータベース（RDBMS)があげられます。このデータベース（MySQL、PostgreSQL、Oracleなど）については僕も20年くらい親しんできました。（語弊を含むかも知れませんが、）データベースは、データのレコード（行）に不整合が発生しないようにトランザクション（MySQLで有ればBIGINからCOMMITまで）処理を行い、最新のデータを適切に管理・更新できるシステムのことでした。最新のデータのみを保存することで結果としてOLAPよりもデータ量は小さくなります。

データ分析について学ぶまでは、僕にとってのデータベースはこれだけの世界でした。しかし、これらのRDBMSなデータベースは、 **「OLTP」** とよばれデータベースの一端でした。

![スライド1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70132/c6e96e85-e8f3-e843-13fc-597acfd619f9.jpeg)

## OLAP

データ分析を学ぶと、 **「OLAP」**という種類のデータ処理を知りました。単語としては知っていましたが、言ったどのような違いがあるのかを明確には分かっていませんでした。今でもまだぼんやりとしていますが、OLAPの特徴はトランザクション処理をあきらめ、大量のデータの集計や分析の性能に特化した設計やチューニングをしたものです。OLTPとくらべて数百倍や、数千倍またはそれ以上のレベルでデータ量が大量になります。

僕にとってのデータベースは、OLTPに加えて、OLAPが増えました。

![スライド2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70132/f1c4402a-29ab-6376-f704-a7ae8bcec992.jpeg)



## HTAP

このように、「OLTP」と「OLAP」のように2つの分類に分けていると言うことは、**この2つを両立させることがとても困難だったからです**。しかし、データを扱う人の中には、常にこの2つが分離していることには不満があったようです。この2つを両立させようという動きがありました。

それが、**「HTAP」**（Hybrid Transaction Analytical Processing） です。トランザクションを有効にしながらも、膨大なデータを超大規模に並列処理をすることで実現しました。膨大なデータの分析ができ、更新や削除を可能にしつつデータの整合性保つという事を両立させるアプローチです。現在のデータ分析の現場ではHTAPがとても多く利用されているようです。

僕のデータベースに、HTAPというアプローチが加わりました。

![スライド3.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70132/79a7076b-0c03-caa2-c484-5b52c3970ca8.jpeg)



# HSAP登場

しかし、OLTPでは速度が出ないのでトランザクションを棄ててOLAPになったことが分かるように、トランザクションを再度導入すると速度が低下や、制限が増えることは目に見えて分かると思います。その予想はおそらく当たりで、商用でも使われている多くの環境であっても、更新や削除の利用が有料であったり、利用すると非常に負荷が高く無りほかの処理が出来ないっといった制限が付いているようです。

Alibabaはこの課題に取り組んで、1つの解にたどり着きました。それが**「HSAP」**でした。

僕のデータベースに、HTAPというアプローチが加わりました。

![スライド4.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70132/9346df6f-7955-f67e-ec0b-b946b499fe90.jpeg)



HTAPはきめ細やかなトランザクションが出来る事が強みでした。このことはリアルタイムデータ分析では大きな強みとして発揮されます。しかし、多くのデータ分析では、リアルタイム分析では使わない過去の積み重なった大量のデータを処理することが非常に多いのです。非常に細かなトランザクションを大量に処理することでオーバーヘッドが大きくなってしまう問題を、トランザクションを排除しServingに置き換えることで、HTAPの弱点をおぎなう事が出来ました。これを**「HSAP」(Hybrid Serving/Analytical Processing)**と名付けました。

![HTAP-HSAP-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70132/92e78797-d705-c4df-702c-04649c30cd25.png)


トランザクションをあきらめることで、データ分析の効率を桁違いに高めることに成功し、その上で、更新や削除を実行することが出来るのはHSAPの強みの1つです。

では、HTAPが適用できてきたすべてのシーンをHSAPに置き換えることが出来るのでしょうか？という問いには、まだ「No」であるようです。Alibabaのブログにも、「HTAPとHTSPはお互いに補完し合いながら、データベースとビッグデータのフィールドをリードしていくと考えている」とありました。

# HSAPを利用できる処理系

クラウドネイティブな商用プロダクトをあげると、HTAPは、GCP BigQueryやAWS Redshift等で利用されています。HSAPは、Alibaba CloudのHologresでのみ利用されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70132/d3b1d5cf-2237-8605-bde5-b791e7165c24.png)

こう書くと全く実績の無いアーキテクチャでは無いか？と思われるかも知れませんが、AlibabaはECの会社でデータ分析は自社で活用をされているものを、一般向けにプロダクトとして出し居てくるという背景があります。

Alibabaが年に1回行う世界最大級のECショッピングフェスティバルがあるのですが、そのなかのデータ分析でもHSAPを利用し、更にそれを改善しているそうで、Alibaba内部で実績があるので、品質も高いのではないでしょうか。

# まとめ

今日は、HTAPを進化させた**HSAPアルゴリズム**について紹介しました。

実際はHSAPというのがスゴイという話から、遡る形で勉強しましたが、この記事では理解しやすいように全体像から話を構成しています。

- OLTP/OLAP というデータ処理の分類がある
- HTAPという、OLTPとOLAPの良いとこ取りをしたアーキテクチャがある
- HTAPをさらに進化させた「HSAP」アーキテクチャをAlibabaが開発した
- HSAPが利用できる処理系は、Alibaba Cloud Hologresのみ

HSAPは、OLTPの検索・更新・削除も行え、OLAPの分析性能も格段に向上した、現時点ではかなり理想に近いアーキテクチャでは無いかと思います。

HSAPを採用したHologresの特徴や動作は動画で見て貰うのが一番速いと思うので動画を作りました。今回紹介をしたUpdate/Deleteなどが出来る様子も紹介をしています。是非こちらも見てみてください。

https://www.youtube.com/watch?v=KXjMzaWQRY0

まだ初学者なので、ある一面のみを取り上げているかも知れませんし、間違ったところも有るかもしれませんが、HSAPについて知るきっかけになったら嬉しいです。

また、データ分析・データ基盤について一緒に学びたいという人大募集しています。僕もまだまだこれからなので是非一緒に勉強しましょう。是非コメントやTwitterでメッセージください。

HSAPを触ってみたいという方は、以下の記事を参考にしてください。Hologresの使い方が丁寧に紹介されています。

https://www.sbcloud.co.jp/document/developer/hologres


アリババのエンジニアが執筆したブログにはより詳しい説明がされていますので、こちらも参考にしてみてください。

[What Is the Next Stop for Big Data? Hybrid Serving/Analytical Processing (HSAP)](https://alibaba-cloud.medium.com/what-is-the-next-stop-for-big-data-hybrid-serving-analytical-processing-hsap-7efac259dee5)

では、次の人にバトンタッチします。