フォーム読み込み中
2022年12月19日掲載
こんにちは、大原です。
この記事は、ソフトバンク Advent Calendar2022の19日目の記事になります。
Alibaba ClouudのデータベースにLindormというCloud Native Multi-Model Databaseプロダクトサービスが新たに登場しましたので、本記事ではLindormの概要を紹介します。
データベースといえば「Relational Database(RDB)」が真っ先に思い浮かぶでしょう。RDBは整形されたテーブル形式にそれぞれのデータを格納し、データの整合性を保ちながら参照や更新、削除等データの管理をするデータベースです。
しかし、時代の変化に伴い、データモデルは多様化しています。例えば、構造化されたテーブル形式のデータにはRDB、非構造化でJSONオブジェクトのようなデータにはDocumentやWide-columnデータベース、ハッシュテーブルはKey-Valueデータベース、強いリンクを持つ参照系データにはグラフデータベースなどといった具合です。1つのアプリケーションに異なるデータモデルがあるとして、それぞれの異なるデータベースに格納し、運用するのは、コストや開発、運用労力の観点からちょっと骨が折れます。
それを解決するためにMulti-Model Databaseというデータベース技術が注目を集めています。Multi-Model Databaseは複数のデータモデルを1つの統合処理基盤でサポートするように設計されたデータベース管理システムです。
このMulti-Model Databaseで Alibaba Cloudから、ApsaraDB for HBase、そしてLindormというプロダクトサービスをリリースしています。今回はアリババグループ事業を大きく支える Lindorm に焦点を当てつつ紹介します。
Multi-Model Databaseは複数のデータモデルをサポートするデータベースです。このデータベースを紹介する前に背景を少し説明します。
現在、Web、IoT、産業、金融、製造業、SNS、ゲーム、地図、etc、様々な分野において、Relational Databaseに適さないデータモデルを持つデータ処理基盤が求められるようになっています。例えば、次の図のIoT基盤を例に見てみましょう。
IoT基盤であれば、APM(Application Performance Management:システムの性能を監視、管理)も付帯されています。そこから発生するデータを大きく分類すると「メタデータ」「運用データ」「デバイスの関係」、そこから因数分解すると、メタデータはテーブル形式なのでRelational Database、運用データはトラッキング・ログ・メトリクスの3種類があり、トラッキングは主キーがあるけどデータの流れ、レコードによってはフィールドの長さが異なるためWide-Column、ログはDocument形式かJSON形式、メトリクスは時系列、デバイス関係はkafkaで取得し、kafka内のストリーム処理エンジン(ksqlDB)へ、それぞれ集約し、OLTP(OnLine Transaction Processing)データベースとして参照や更新処理等、データの運用をします。
そのあと、OLAP(Online Analytical Processing)、データ分析のためにApache Hiveやら、Apache Spark、Elasticsearchなどにデータを渡して分析をします。このフローだとそれぞれの目的に応じたデータベースプロダクトサービスを配置するため、「開発範囲の増加」「オペレーティングコストの増加」「アクセス効率の低下」「リソースコストの肥大化」といった大きな4つの問題が発生します。これを解決するものが、Multi-model Databaseです。
Multi-Model Databaseであれば、先述の構成がどのように解決するか説明します。
Multi-Model Databaseは、1つのプラットフォームで、メタデータをRelational Databaseとして格納、運用データのトラッキングやログはWide-column、メトリクスは時系列、デバイスの関係はkafka Consumer(ストリーミングとして取得)しながら、OLTPデータベースとして参照や更新処理等、データの運用ができます。
OLAP、データ分析の面でもメリットがあります。Multi-Model Databaseには検索機能が付帯されてるため検索出来ることや、データ分析基盤へシームレスにExportすることができます。Multi-Model DatabaseはArangoDB、OrientDB、Couchbaseなどがあり、それぞれのデータベースサービスごとによって色々な解決方法があります。
クラウド上のマルチモデルデータベースとはどんな価値があるのでしょうか。著者の折衷案として次の通りにざっくりまとめてみました。
運用の複雑さからの解放
異なるデータベースを併用運用することによる、運用の複雑化・煩雑化を排除
データの柔軟性
データモデリング(正規化や設計、RDBに格納するためのクレンジングやETL処理など)の労力から解放
データの一貫性
アプリ側から時系列、Key-Value、ドキュメントなど異なるデータを格納後、このデータを一貫した状態で管理
高可用性
複数の異種システム全体が正常に動作し続けるよう、地理的高可用性構成やリージョン/Zone単位で分散
トランザクション処理
複数の異種システムにまたがってトランザクション処理は困難だったものを、マルチモデルデータベースで対処
Low Cost
スケーリングユーザーのワークロードに応じて、コンピューティングの処理能力やストレージの拡張等自動スケーリングを提供
開発速度の向上
ビジネスや開発スタイルの変化に即応し、多様多種なデータモデルにも学習コスト不要で柔軟に対応
Alibaba Cloudからもクラウド上のMulti-Model DatabaseのLindormが登場しています。本記事ではLindormを中心に説明します。
Lindormは、インターネット、モノのインターネット、自動車インターネット、産業用インターネットなどのために設計、最適化された統合処理を持つクラウドベースのMulti-Model データベースです。
ワイドカラム、時系列、テキスト、オブジェクト、ストリーム、空間など様々なデータの統合アクセスと統合処理をサポートし、各種オープンソース標準インタフェースと互換性があり、サードパーティのエコシステムユーティリティのシームレスな統合を実現します。
Lindormは小売、ログ、監視、請求、広告、ゲーム、ソーシャルネットワーク、車両管理、およびその他幅広いシナリオに適したデータベースであり、アリババグループのコアビジネスをサポートする重要なデータベースの1つです。
Alibaba Cloud Lindormは最近国際サイトにリリースしたばかりですが、実はアリババグループの様々な小売等エコシステムと深いかかわりを持ちながら、プロダクトサービスとして10年以上の歴史を持っています。どのような歴史をもつか、説明します。
アリババグループの1つであるTaobaoという巨大ECサイトで、顧客ユーザーの増加や事業の成長に伴い、OracleやMySQLなどのリレーショナルデータベースでは対応しきれない程に大量のデータかつ様々なデータモデルを扱う背景から、Alibabaは2010年からオープンソースのApache HBaseを使い始めるようになりました。
アリババグループが大規模分散データベースとしてApache HBaseを選定した理由は、GoogleでApache HBaseと同じアーキテクチャであるBigTableは、Googleの検索サービス、Chat、Maps、Gmail、Spreadsheets、Youtubeなどで幅広い実績があり、FacebookでもApache HBaseによる豊富な実績があるためです。ちなみにそのBigTableは現在Google Cloud BigTableとして商用利用することができます。
当初AlibabaはApache HBaseをベースとしたアーキテクチャで実装しましたが、TaobaoではPOSや購買履歴のほか、メッセージ機能、トラッキングログ、IoTデータ、検索機能、、などオープンソースのApache HBaseだけでは満たせないシナリオが幾つかあり、パフォーマンスが厳しいなどいくつか困難に遭遇していました。解決策として、AlibabaはオープンソースのApache HBaseコアコミッター9名によって編成されたチームで、Apache HBaseからMulti-Model DatabaseのLindormを独自開発、2011年3月にLindorm 1.0版をTaobaoへリリースしました。以降、TaobaoはLindormをコアアーキテクチャとして2022年現在でも運用しています。
TaobaoにLindorm 1.0 リリース後、Taobaoの事業成長・拡大化につれてAlibabaはLindormの新機能開発や最適化等改修を10年近く重ねていました。その過程で、LindormはApache HBase の7倍以上のパフォーマンスでデータの読み込み/書き込み処理、1,000を超える大規模クラスタ対応化、処理ピーク時は5,000万リクエスト/秒(RPS)を捌けるなど、オリジナルのApache HBaseを上回るMulti-Model Databaseとしてサービス完成度を高めていったのです。Lindormの読み込み処理・書き込み処理はOracle Databaseを上回るレベルに至っています。
2019年8月にAlibaba Cloud 中国サイトでフルマネージドサービスのApsaraDB for HBaseサービスに Lindormのクラウドサービスとして Performance-enhanced Edition バージョン (Lindorm) をリリース。保険、リテール、IoT、製造業、金融、ゲーム、オフィス、広告、オンライン教育、ソーシャルメディアなど50を超える企業利用者を集めつつ、顧客等フィードバック収集や機能拡充・最適化等開発のサイクルを重ねて、今年2022年9月に国際サイトでLindormがリリースされました。
Lindormは現在、アリババグループエコシステムを支えるCloud-Native Multi-Model Databaseとして、幅広い領域で存在感を放っています。
Alibaba Cloud Lindormはリリースして10年以上および50を超える様々な企業による利用実績を持つCloud-Native Multi-Model Databaseです。本章では、Alibaba Cloud Lindormを利用するにあたり、押さえておきたい基本事項、サービス特徴を説明します。
Lindormは「ワイドカラム」「Key-Value」「時系列」「検索」のデータモデルを扱うことができるうえ、「分散ファイルシステム」「Apache Sparkら分散コンピューティング」「ストリーミング」の構成を併せて持ちます。これらは、Lindormクラスター生成時に選択されたエンジンの種類によって、どのようなサービス展開ができるかが決まります。
エンジンの種類 | Lindorm Wide Table Engine | Lindorm TSDB | Lindorm Search | Lindorm DFS | Lindorm Compute Engine | Lindorm streaming engine | |
---|---|---|---|---|---|---|---|
データベースの種類 | ワイドカラム | Key-Value | 時系列 | 検索 | - | - | - |
データモデル/構成 | 各行に対し任意の列を設定
| 半構造時系列テーブル | フルテキスト インデックス、集計コンピューティング、複雑な多次元クエリ | データ ディレクトリとデータ ファイル を管理するLindorm専用の分散ファイルシステム | データ分析用のクラスタコンピューティングフレームワーク。Compute NodeはAlibaba Cloud Serverless Kubernetes (ASK) で実行 | データをストリーミングでLindormストレー(LindormTable、LindormTSDB)へ書き込み | |
データ取得方法 | SQL、Apache HBase API、Cassandra Query Language (CQL) 、Amazon S3 API、JDBC | SQL、TSDB HTTP API、TSDB for InfluxDBプロトコル、JDBC | SQL、Apache Solr API、Webベースのクエリ、JDBC | HDFS Shell、HDFS FUSE、HDFS API 、HDFS クライアント | SQL、Apache Spark、Apache Spark API、JDBC | SQL、Apache Kafka API | |
互換性 | Apache HBase、Apache Phoenix (SQL)、Apache Cassandra | Time series database(TSDB) | Apache Solr | HDFS | Apache Spark | Apache Kafka | |
シナリオ | メタデータ、注文、請求書、プロファイル、ソーシャル ネットワーキング情報、フィード、ログ、JSONなど | 計測データ、監視データ、デバイスの稼働データ、IoT、IIoT(Industrial Internet of Things、産業用IoT)、アプリケーションパフォーマンス監視(APM)など | 商品に関する情報検索、物流シナリオで注文追跡情報検索、交通監視シナリオで車両に関する情報検索など | 動画や画像など非構造体、半構造体ファイルなど | データ生成、対話型分析、機械学習、グラフ コンピューティングなど | IoTデータ処理、アプリケーションログ処理、物流経年分析、旅行データ処理など |
LindormはCloud-Native Multi-Model Databaseとして、Apache HBase、Cassandra、TSDB、Apache Solr、Apache Spark、Apache Kafkaなどのエンジンを統合した、ハイブリッド構成で搭載しています。
そのため、1つのデータベースでRDB、Key-Value、Wide-column、時系列などの様々なデータモデルに対し、SQLクエリでOLTPデータ運用、インタラクティブ分析、機械学習などのシナリオを満たすことができます。例えば、JSONデータがデータソースだった場合、LindormはCassandoraのCQI APIというコマンドインターフェースを備えているのでCQI APIによりJSONファイルをワイドカラム形式のワイドテーブルへ変換し格納します。
そのあと、JSONに対するテキスト全文検索を行う際にはElasticsearchより高速かつカスタマイズがしやすいApache SolrエンジンによるLindorm Searchindexで全文検索ができます。
Lindormの計算エンジンはオープンソースのApache SparkをLindorm向けに改良したLinSparkを搭載しており、オープンソースのSparkのUI/SDK/API/プログラミングインターフェースを完全にサポートしながら、Lindormストレージエンジンの機能を深く統合しつつ分散コンピューティング処理を効率的に実行します。
Apache Spark(LinSpark)により、入ってきたデータに対しPythonもしくはScala、SQLで大量のデータをメモリ内もしくはバッチで迅速に処理しながら計算処理、ETL、分析、機械学習などが行えます。
ストレージはHDFS(Hadoop Distributed File System、分散ファイルシステム)をAlibabaがLindorm向けに改良したLindorm DFSを実装。これにより、往来のHDFSよりリソース効率が10倍以上向上し、往来のリレーショナルデータベースのストレージスペースに対しLindorm DFSとして80%近く高圧縮されるため、コスト削減ができます。
Lindormの特徴は次の通りです。
Lindormのコアアーキテクチャは次の通りです。
Lindormはタイムラインを使ってデータを格納していきます。その過程にて、Lindorm独自アルゴリズムにより、直ぐに使うデータはHot Dataへ自動的に昇格、使う予定があるかわからないものはWarn Data、使う予定が少ないものはCold Dataへ自動で降格します。自動的なデータの階層化構成により、ユーザーは何も意識することなくCold Dataは80%のコスト削減、Hot Dataは15%のアクセス性能向上といったパフォーマンスを享受できます。
LindormはオープンソースのApache HBase コアコミッター9名以上によって開発されたプロダクトサービスなので、その分パフォーマンスはApache HBaseを上回ります。
例えば、LindormとApache HBaseと同じスペックで20億レコードによるスループット比較では、Lindormのほうが読み取り処理が3倍近く早く、書き込み処理は3倍以上高速です。同じく20億レコードでR99(リクエストの99%は10ms以内に帰ってくる)を実現しており、Apache HBaseの数倍のコストパフォーマンスを得られます。
Lindormはサーバレスモードもあり、使った分だけ課金する構成もできます。
LindormはCassandraのアーキテクチャも備えており、Cross-Zone展開をサポートしています。複数のZoneにLindormインスタンスをデプロイすることにより、障害等有事の際でもLTS(Lindorm Tunnel Service:データ同期サービス)により、100ms以内の素早い復旧を実現するため、高可用性構成を確保できます。
Lindormは、Lindorm SQLによって、計算エンジン、Lindorm ワイドカラムエンジン、検索エンジンそれぞれにクエリ投与しながら、運用データベース(※)およびOLAPデータ分析を実現します。
※Lindormは強い整合性と結果整合性をサポートするため、トランザクションを持つOLTPデータベースよりサービングという表現で運用データベースになります。
Lindorm 時系列エンジンにてSQLでAR、ARMA、ARIMAなどの統計モデルを使った異常検知や変化点検知、トレンド検出、クラスタリングなどの機械学習機能があり、SQLだけで機械学習を実現することができます。
例えば、IoTやAPI、ログ、メトリクスなどのデータをLindormへリアルタイム格納しながら毎秒おきに教師あり機械学習(Deep Learning)でリアルタイム予測といった、シンプルな構成ができます。
<参考>
AZFT次世代データベース技術研究所はAlibaba Cloud Lindorm時系列エンジンによりタイミング予測で成果を得られた事例
https://azft.alibaba.com/newspage/?id=150
Lindormに書き換えることで、大量データの書き込み処理、ETL、分析の大幅短縮化、ストレージコストの大幅削減化により、TCOと運用コストの削減を提供
Lindormは自動車インターネットにおける運転軌跡、車両の状態、位置情報などの重要なデータを毎秒おきに保存し、リアルタイムでETLしながらデータ処理や分析、他アプリケーションへのデータ連携を実現。
Lindormは1つのプラットフォームでデータ運用、データ分析、データ処理、バッチ処理、機械学習、ストレージとしての保存など幅広い領域で活用できるため、非常に低コストながら開発や連携における柔軟性を併せて持つため、開発者の負荷を大きく軽減します。
そのほか、Lindormによる事例はHelpページなど幅広く搭載していますので、よかったらこちらも参考にしてください。
<参考>
・業界事例(中国語ですが、Google翻訳などで参考にいただけますと幸いです)
https://help.aliyun.com/document_detail/207916.html
・インターネット広告
https://developer.aliyun.com/article/782172
・リアルタイムマーケティング
https://developer.aliyun.com/article/791440
・ソリューション
https://www.alibabacloud.com/help/en/lindorm/latest/solution
Apache HBaseと、ApsaraDB for HBase、Lindormは後者2つがAlibaba Cloudプロダクトサービスという時点でかなり大きく異なります。
先述通り、オープンソースのApache HBaseを、Apache HBaseコアコミッター達によってクラウドサービス向けにフルマネージドサービスとしてリリースしたのがApsaraDB for HBase、そこからアリババグループ向けにMulti-Model Databaseとして機能的にLindormテスト展開したのがApsaraDB for HBase Performance-enhanced Edition、Lindormとしてプロダクトサービスの機が熟し、商用リリースしたのがLindormです。
そのため、ApsaraDB for HBase Performance-enhanced EditionとLindormは機能的にあまり大差ないですが、Lindormだけ時系列エンジンが搭載しており、その影響でLindormのみLindorm MLという機械学習機能が付帯されています。
Apache HBase | ApsaraDB for HBase Performance-enhanced Edition | Alibaba Cloud Lindorm | |
---|---|---|---|
データモデル | Wide-column | 列指向テーブル | 列指向テーブル |
クエリ方法 | HBase API。 SQLクエリを使用する場合は、Apache Phoenixをデプロイする必要あり | Apache Phoenixアーキテクチャをベースとした、SQLクエリを実装。どのモードでもSQLクエリやAPIが投与可能。 | Apache Phoenixアーキテクチャをベースとした、SQLクエリを実装。どのモードでもSQLクエリやAPIが投与可能。 |
データ型 | Byte型のみサポート | 構造体、半構造体、非構造体を含め様々なデータ型をサポート | 構造体、半構造体、非構造体を含め様々なデータ型をサポート |
インデックス | グローバル・セカンダリ・インデックス(GSI)をサポートするために外部コンポーネントが必要 | 任意のフィールドにIndex、およびグローバル・セカンダリ・インデックス(GSI)を付けることが可能 | 任意のフィールドにIndex、およびグローバル・セカンダリ・インデックス(GSI)を付けることが可能 |
整合性 | 強い整合性のみサポート | 強い整合性と結果整合性などをサポート | 強い整合性と結果整合性などをサポート |
コンピューティングの分離 | コンピューティングとストレージ一体型 | コンピューティングとストレージを完全分離した構成で、個別に自動スケーリングを提供 | コンピューティングとストレージを完全分離した構成で、個別に自動スケーリングを提供 |
Hot dataとCold Data | サポートなし | Hot dataとCold Dataをサポートしており、Apache HBaseの80%高圧縮を提供 | Hot dataとCold Dataをサポートしており、Apache HBaseの80%高圧縮を提供 |
高可用性 | フェイルオーバーやマルチリージョン、ゾーンなどはサポートなし | フェイルオーバーやマルチリージョン、ゾーンをサポート | フェイルオーバーやマルチリージョン、ゾーンをサポート |
Lindorm ML | × | ×(時系列エンジンが無い為) | 時系列エンジンにて使用可能 |
データ同期および増分レプリケーション | サポートなし(サードパーティツールを使用する必要あり) | Lindorm Tunnel Service (LTS) を使って同期および増分レプリケーション | Lindorm Tunnel Service (LTS) を使って同期および増分レプリケーション |
Azure Cosmos DBとLindormはどちらも優れたCloud-Native Multi-Model Databaseですが、文化や考え方も若干異なります。
LindormはHBase、Cassandra、Solr、Spark、Phoenix、HDFS、Kafkaなど様々なエンジンを融合した独自アーキテクチャなので、様々なエンジンを使ったサービスの横串展開ができます。一方、Cosmos DBはデータベース作成後、配下にコンテナが生成され、そこでRedis、HBase、Cassandra、MongoDB、Neo4jなどデータベースの種類を選定することで、コンテナ配下のアイテムで使えるデータベースが利用できます。
Cosmos DBは階層化構造でそれぞれのデータベースを利用する仕組みなので、様々なエンジンを使ったサービスの横串展開する際は、コンテナレイヤーレベルでデータを橋渡しする必要があります。
Alibaba Cloud Lindorm | Azure Cosmos DB | |
---|---|---|
Type | 列指向テーブル | Key-Value |
検索 | LindormSearchエンジンがあり、構造体、半構造体、非構造体の検索が行える。 | Azure Cognitive Searchとの併用が必要 |
Index | 任意のフィールドにIndex、およびグローバル・セカンダリ・インデックス (GSI)を付けることが可能。 | 全てのプロパティにIndexを付けることが可能。 |
整合性 | ・強い整合性 | ・厳密 |
スケーラビリティ | 〇 | 〇 |
ロック | 楽観的、悲観的なロックが可能 | 楽観的、悲観的なロックが可能 |
Backup | OSSやS3などに定期的な自動増分・フルバックアップが可能 | 定期的なフルバックアップが可能 |
クエリ | Apache Phoenixアーキテクチャをベースとした、SQLクエリを実装。どのモードでもSQLクエリやAPIが投与可能。 | 選定したモードに応じて、SQLクエリやAPIが投与可能。 |
レプリケーション | 分散マルチレプリカ アーキテクチャにより、Active-Activeマルチレプリケーション | グローバル マスター マスター レプリケーション |
本サービスは2022年11月15日時点でほとんどのリージョンで利用することができます。
シングルゾーンによるデプロイは、日本を含めたほとんどのリージョンにてサービス提供しています。
マルチゾーンによるデプロイは、シンガポール、インドネシア、深圳、香港、杭州、上海、北京、河北省リージョンにて利用できます。
Lindormは要件に応じて「Lindorm」「Lindorm Standalone」「Lindorm Tunnel Service」のいずれかを選定できます。
Lindorm | Lindorm Standard | Lindorm Tunnel Service | ||
---|---|---|---|---|
説明 | メインシリーズ | スタンドアロン環境 | トンネルサービス(LTS) | |
シリーズごとサポート状況 | Wide-column | 〇 | 〇 | |
時系列 | 〇 | 〇 | ||
検索 | 〇 | 〇 | ||
ファイル | 〇 | 〇 | ||
計算 | 〇 | 〇 | ||
ストリーミング | 〇 | |||
ストレージの | Standard | 〇 | ||
Capacity | 〇 | |||
Local SSD | 〇 | |||
Local HDD | 〇 | |||
Ultra Disk | 〇 | |||
シナリオ | 中規模、 大企業向け | 小規模向け、 | データ移行、 |
Lindorm(最小スペック:4core CPU 16GB Memory) | |||
---|---|---|---|
SubScription | Single-zone Deployment | $191.33/Month~ | |
Multi-zone Deployment | $3229.21/Month~ | ※最低 Wide Table 4Nodes / Log 4Nodesから | |
Pay-As-You-Go | Single-zone Deployment | $0.363 /Hour~ | |
Multi-zone Deployment | $7.225 /Hour~ | ※最低 Wide Table 4Nodes / Log 4Nodesから |
※エンジンの種類によっては最低限必要とするNode台数があるため、詳しくはヘルプを参照のうえ選定ください。
Lindorm Standalone(最小スペック:2core CPU 8GB Memory) | |
---|---|
SubScription | $38.23/Month~ |
Pay-As-You-Go | $0.079 /Hour~ |
Lindorm Tunnel Service(最小スペック:4core CPU 16GB Memory) | ||
---|---|---|
SubScription | $234.47/Month~ | ※最低3Nodeから |
Pay-As-You-Go | $0.489 /Hour~ | ※最低3Nodeから |
LindormはApache HBase/Cassandra/Spark/Solr/HDFSベースの接続インターフェースを持っていることや、Active-Active Multi-zone構成、Lindorm MLという機械学習機能が付帯されています。いくつか検証しましたので、後日別記事にて紹介する予定です。
Lindormは10年以上もアリババグループを支えたCloud-Native Multi-Model Databaseです。Apache HBase、もしくはCassandra、Apache Solrが初めての人でも、Lindormは非常にシンプルなSDK / APIで操作することもできますし、Apache HBase、もしくはCassandra、Apache SolrにはないSQLベースで操作をすることもできます。
Web三層とデータ分析基盤をこれから考えている人にも、Lindorm1台でデプロイし双方運用、データを定期的にS3へバックアップという構成もできます。
それほどにLindormはMulti-Model Databaseとしても完成度が高いため、気になる方はお試し利用してみるといいでしょう。
条件に該当するページがございません