Apache Pinot、オープンソースの OLAP データ ウェアハウス

アパッチ ピノ

Apache Pinot は、リアルタイム分散 OLAP データ ウェアハウスです。

Apache Pinotは、拡張性、低遅延、リアルタイム分析を実現するために設計された、リアルタイム分散型OLAPストレージソリューションです。

Pinotは、バッチデータソース(HDFS、S3、Azure Data Lake、Google Cloud Storageなど)だけでなく、ストリーミングソース(Kafkaなど)からもデータを取り込むことができます。Pinotは水平スケーリングに対応しているため、必要に応じてより大規模なデータセットや高いクエリレートにも対応できます。

Apache Pinotについて

Pinotプロジェクトは元々LinkedInによって開発され、2015年に共同開発のためにApache Foundationに移管されました。このストレージは、新しいデータが絶えず追加される環境での動作を想定して設計されており、最小限かつ予測可能なレイテンシを実現するように設計されているため、リアルタイムのクエリ処理に使用できます。

他のほとんどのデータウェアハウスやOLAPデータウェアハウジングソリューションと同様に、PinotはSQLライクなクエリ言語をサポートしており、選択、集計、フィルタリング、グループ化、ソート、その他のデータクエリを実行できます。

Apache Pinotは水平スケーラビリティを提供し、ソフトウェアおよびハードウェア障害に対する耐障害性と生存性を実現します。レプリケーションとバックアッププロセスは、データストアに追加されたデータのデータ処理サイクルに直接統合されています。このアプローチはアーキテクチャを大幅に簡素化する一方で、データの追加からクエリによる利用可能になるまでに遅延が生じるという欠点があります。

データは列指向データベース内のテーブルに格納され、さまざまな圧縮方式と、1つのフィールドに複数の値を格納する機能がサポートされています。Pinotは、さまざまなインデックス技術(順序付きインデックス、ビットマップインデックス、転置インデックス、StarTreeインデックス、ブルームフィルタ、範囲インデックス、テキスト検索インデックス(Lucence/FST)、JSONインデックス、地理空間インデックス)を利用できるプラグイン可能なインデックスシステムを提供します。

Apache Pinot の際立った特徴は次のとおりです。

  • 列指向– ランレングスや固定ビット長などのさまざまな圧縮スキームを備えた列指向のデータベース。
  • プラグイン可能なインデックス作成: プラガブルインデックステクノロジー、ソートインデックス、ビットマップインデックス、逆インデックス。
  • クエリの最適化- クエリとセグメントのメタデータに基づいてクエリ/実行プランを最適化する機能。
  • ストリームとバッチの取り込み: Hadoop ストリームのほぼリアルタイムの取り込みとバッチ取り込み。
  • クエリ: SQLベースのクエリ実行エンジン。
  • リアルタイムでの取り込み中のアップサート: 一貫性を保ちながら大規模にデータを更新する
  • 複数の値フィールド: 複数値フィールドのサポートにより、フィールドをカンマ区切り値としてクエリできるようになります。
  • Kubernetes 上のクラウドネイティブ: Helm chart は、Kubernetes で管理しやすい、水平方向にスケーラブルでフォールト トレラントなクラスター化デプロイメントを提供します。

Apache Pinot の新しいバージョン

特筆すべきは、Apache Pinotのバージョン1.0が最近リリースされたことです。これは基本的に、コードベースの安定化とコミュニティの要望(300件以上のコメントが考慮されました)を反映させるための多くの作業をまとめたものです。

さらに、新しいマルチステージクエリエンジンがその潜在能力を最大限に発揮し、テーブル結合(JOIN)をサポートできるようになったことも特筆すべき点です。当初使用されていたエンジンは、単純なフィルタリングや集計操作では優れたパフォーマンスを発揮しましたが、クエリ実行時間の予測可能性を確保するため、テーブル結合操作はサポートしていませんでした。

新しいエンジンには、複雑なクエリを処理するための中間ステージが含まれており、そのSQLセマンティクスはANSI SQLに近くなっています。さらに、新バージョンではJSONデータの処理をネイティブでサポートし、「NULL」値をサポートし、Apache Spark 3.xと統合され、Upsertモードでのテーブルの実装が改善されています(セグメント圧縮の追加と削除操作のサポート)。

最後に、さらに詳しく知りたい場合は、このプロジェクトのコードはJavaで記述されており、Apacheライセンスの下で配布されていることを知っておくと良いでしょう。新しいバージョンの詳細については、以下のリンクをご覧ください。


Googleで優先ソースとして追加する