PieCloudDB データベース: クラウド ネイティブな分散仮想データ ウェアハウスの誕生の旅

PieCloudDB Database は、Hangzhou OpenPie Technology Development Co., Ltd. (OpenPie) の主力製品であり、クラウドネイティブな分散仮想データ ウェアハウスです。PieCloudDB は、さまざまな革新的なテクノロジーを通じて、物理データ ウェアハウスをクラウドネイティブ データ コンピューティング プラットフォームに統合します。PieCloudDB は、仮想データ ウェアハウスを動的に作成し、オンデマンドで柔軟に計算できるため、データ アイランドを分割し、大規模なモデルに必要なデータと計算をサポートできます。 

PieCloudDB は 2022 年 10 月 24 日にバージョン 1.0 をリリースし、コンピューティングとストレージの分離、エラスティック コンピューティングとエラスティック ストレージの実現、コンピューティングとストレージの両方のオンデマンド支払いの実現、マルチテナント分離の実現を実現しました。2023 年 3 月 14 日、Tuosupai は PieCloudDB のクラウドオンクラウド バージョンを正式にリリースしました。クラウドオンクラウド バージョンは現在 Alibaba Cloud 上に構築されており、間もなく他のクラウド プラットフォームにも拡張される予定です。クラウドオンクラウドバージョンは、ユーザーの多様なデータ分析ニーズを満たし、パブリッククラウドデータウェアハウスサービスのベストプラクティスを創出します。  

PieCloudDB には現在、次の 4 つの製品バージョンがあります。 

  • クラウドオンクラウド (CoC) バージョン (無料トライアル) 
  • コミュニティ版 (無料ダウンロード) 
  • エンタープライズ版 
  • オールインワンバージョン 

PieCloudDB クラウドオンクラウド バージョンは、企業向けに強固な仮想データ ウェアハウスを構築し、クラウド リソースの最適な構成により無限のデータ コンピューティングの可能性を実現します。PieCloudDB Enterprise Edition と Community Edition は、クラウド データ ウェアハウスに基づくまったく新しいデジタル ソリューションを企業に提供し、企業がデータ資産を中核とする競争障壁を確立できるように支援し、運用と保守のコストを削減し、当事者 A の開発時間を節約します。 

PieCloudDB Tuoshupai R&D チームがクラウド ネイティブを主なトラックとして選択した理由は、主にさまざまな考慮事項によるものです。まず第一に、従来の MPP データベースの顧客環境には、データ アイランドという共通の問題点が存在することがよくあります。お客様の実稼働環境には MPP データベース クラスターが多すぎるため、データ フェデレーションやその他の処理方法を使用した場合でも、データの整合性の問題が発生し、ストレージ スペースがある程度無駄になる可能性があります。第二に、データは新たな生産要素として、より大きな価値を生み出すために循環する必要があります。これらの問題点を解決するために、PieCloudDB は、ストレージとコンピューティングの分離アーキテクチャを実装することで、データを共有ストレージ (S3、HDFS、NAS) に保存し、メタデータ情報を共有 NoSQL データベース FoundationDB に保存し、ストレージ リソースとコンピューティング リソースの統合を実現します。スケーリングにより、高いパフォーマンスを維持しながらより柔軟な拡張と縮小が可能になり、ユーザーはコストを削減し、効率を向上させることができます。 

PieCloudDB の誕生を振り返ってみましょう。PieCloudDB は PostgreSQL を再構築して、ストレージと計算の分離を実現します。データベースの最下層から再設計・開発をしなかったのは、スポーツカーの製造がホイールそのものを生産しないのと同じように、いわゆる「技術産業」が専門性を持っており、より速く走るために下のホイールを調整するためです。そしてより安定したものに私たちは焦点を当てています。データベースの基礎となるコンポーネントは車輪のようなもので、PieCloudDB は PostgreSQL に基づいて多くの変換と最適化を行って、分散とストレージと計算の分離を実現し、PostgreSQL の継続的な革新機能とリソースを最大限に活用しています。 Tuoshupai の R&D チームのイノベーション能力により、分散、OLAP、クラウド ネイティブのシナリオに対して多数の極端な最適化が行われ、このクラウド ネイティブの仮想データ ウェアハウス PieCloudDB が実現されました。 

1. PieCloudDBの誕生 

主に、メタデータ管理、データストレージ、データアクセス高速化、配布という 4 つの側面から PieCloudDB を設計および構築します。 

1.1 メタデータ管理 

データアイランドを打破するために、PieCloudDB はストレージとコンピューティングの分離スキームを設計しました。この設計スキームでは、ユーザーは複数の仮想データ ウェアハウスをアクティブにして同じデータを操作できるため、ある仮想データ ウェアハウスがデータを更新している間に別の仮想データ ウェアハウスがデータを読み取ることが発生する可能性があります。複数の仮想データ ウェアハウス (マルチ コーディネーター) の場合にデータの一貫性を確保するために、ユーザー データと仮想データ ウェアハウスからメタデータを分離するメタデータ サービスを設計しました。メタデータ サービスを使用すると、同じ組織内の異なるテナントのメタデータを共有して、分散トランザクションと分散ロックを実装できます。 

PieCloudDB のメタデータ サービスは FoundationDB に基づいて実装されており、PieCloudDB は FoundationDB のシリアル化されたトランザクションを使用して軽量ロック機能をシミュレートし、分散ロックを実装することでデータの一貫性を確保します。 

PieCloudDB のメタデータは FoundationDB に保存されているため、各ディストリビューターは FoundationDB のメタデータを読み取ることになり、FoundationDB にある程度の負荷がかかります。したがって、PieCloudDB のメタデータ管理では、キャッシュ設計と変更されないメタデータの事前永続ストレージを通じて、NoSQL データベースへのアクセスを削減します。

1.2 データストレージとJANMの誕生 

PostgreSQL の HEAP は OLTP 行ストレージ エンジンであるため、分析シナリオ (OLAP) には適していません。したがって、PieCloudDB を OLAP クラウドネイティブ データベースに組み込むには、OLAP とクラウド向けに多くの最適化と改善が必要です。ネイティブシナリオ。 

PieCloudDB は、クラウドネイティブの仮想データ ウェアハウスとして、ストレージ エンジンの設計時に、クラウド プラットフォームをサポートしながら、高パフォーマンスのクエリもサポートする低コストのオブジェクト ストレージを考慮する必要があり、実装プロセス中に、PieCloudDB は S3 ストレージと互換性がある必要があります。効率的なアクセスパフォーマンスを確保します。S3などのオブジェクトストレージは使いやすく、価格が安いというメリットがありますが、アクセス時のネットワーク遅延が比較的大きく、ファイルのランダムアクセス性能が低いというデメリットがあります。 

こうした S3 の特性を狙って、PieCloudDB は独自のストレージ エンジン Jane Mo (JANM) を作成しました。Jianmo という名前は、「Bamboo Slips and Ink Book」に由来しており、縦に並んだ竹片が水平につながって竹片を形成しており、PieCloudDB の行と列の混合ストレージのストレージ モードを鮮やかに示しています。Jianmo の独自の設計は、S3 の利点を活かすだけでなく、アクセス遅延やランダムな読み取りと書き込みの欠点もいくつかの対策によって克服できます。Jianmo はデータベースのストレージ エンジンとして、S3 ファイル内のすべてのデータの MVCC 可視性の一貫性を保証します。クエリの売上を向上させるために、Jianmo は多くの最適化措置を講じています。たとえば、収集された統計データは KV ストレージに個別に保存され、クエリ中のデータ スキッピングの実装に使用されます。また、クエリなどの集計計算のための事前集計などのクエリの最適化も行われます。 SUM と COUNT として。さらに、Jianmo は、TDE (透過的データ暗号化)、データ圧縮、大きなサイズの列のサポート、メモリ アロー フォーマット、キャッシュ フレンドリー性などの機能も実装しています。Jianmo のデータ ブロック サイズは 16M に設定されており、多数の小さなファイルの生成とメタデータ管理の難しさの増加を回避し、UPDATE/DELETE の実行時に生成されるファイルのランダムな読み取りおよび書き込み操作を効果的に回避できます。 

さらに、最新のハードウェアのパフォーマンスを最大限に活用するために、PieCloudDB のストレージ エンジンの設計は、最新の CPU および GPU キャッシュ アクセスの設計も考慮しており、SIMD、SIMT、並列コンピューティングをサポートするためにデータの局所性をさらに最適化しています。 

ストレージ エンジンの選択プロセス中に、研究開発チームは Parquet などのオープンソース ストレージ形式も調査しました。最終的にチームは、主に次の理由から、Parquet などのオープンソース ストレージ形式を直接使用するのではなく、独自のストレージ形式を作成することにしました。 

  • スキーマを保存する必要がない: Parquet などの多くのストレージ形式には独自のスキーマがありますが、PieCloudDB ではスキーマのストレージ要件が少なくなります。 
  • ネイティブ Postgres 対応ストレージ形式:保存されたデータを読み取る際の追加の逆シリアル化作業を回避できます。
  • 柔軟かつ制御可能: TOAST と同様の機能を実装する場合、制約がなくなり、操作性が向上し、より柔軟かつ制御可能になります。 

Parquet などのオープンソース ストレージ形式は直接使用されませんが、ユーザーのデータ ストレージ形式の柔軟性を確保するために、PieCloudDB は、Foreign Data Wrapper 機能を介してこれらのストレージ形式へのアクセスをサポートしています。 

1.3 データアクセスの高速化 

PieCloudDB のストレージ エンジン Jianmo は、S3 などのオブジェクト ストレージをサポートしています。S3 ストレージ自体には帯域幅遅延などの制限があるため、ランダム書き込みには適していません。これらのボトルネックに対して、PieCloudDB はデータ アクセス速度を向上させるために多くの最適化を行い、ストレージがクエリ実行プロセスのボトルネックでなくなるようにしました。 

  • キャッシュ:キャッシュの使用は、データ アクセスを高速化するための一般的な手段です。PieCloudDB はローカル キャッシュを実装しており、より効率的な分散キャッシュも計画されています。さらに、PieCloudDB は、「コールド」、「ウォーム」、「ホット」の階層管理も実装しています。 
  • 一貫したハッシュ キャッシュ ファイル: PieCloudDB はローカル キャッシュを実装しているため、キャッシュされたデータがノード間で読み取られる可能性があります。クロスノード キャッシュの読み取りと書き込みを回避するために、PieCloudDB はキャッシュ ヒット率を向上させるために一貫したハッシュ ストレージ キャッシュ ファイルを実装しています。 
  • データ スキッピング:より良いクエリ パフォーマンスを達成するために、PieCloudDB は多くのクエリ最適化機能を実行しました。データ スキッピング (ブロック スキッピング) は、事前に計算されたデータ統計を追跡して、データ ブロックに必要なデータがあるかどうかを判断し、スキップすることができます。 all データを必要とするデータ ブロック。 
  • S3 アクセスの一般的な最適化:並列化、先読み、非同期、MPP エンジン「スチール」など。 

1.4 分散型 PieCloudDB 

PieCloudDB は分散エンジンを実装します。メタデータはコーディネーター上の FoundationDB にのみアクセスするため、FoundationDB へのアクセス数が減り、FoundationDB への過度の圧力が回避されます。エグゼキュータ データは主にディストリビュータによって正確かつ効率的に送信され、ディストリビュータのために多くの最適化が行われています。 

これら 4 つのステップを完了すると、PieCloudDB が誕生しました。次に、PieCloudDB の安定性を維持しながらクエリ パフォーマンスを向上できるようにするために、メタデータ管理システムのパフォーマンスの最適化を継続し、集計プッシュダウン、事前計算、ブロック スキップなどの機能をサポートしました。また、大量データの変更と強化、事前バックアップ機能、VACUUMの強化、統計データの自動収集と更新などの最適化を完了しました。 

2. 道が遮られていて長いですが、道は近づいています 

PieCloudDB はまだ成長しており、次のステップでは、引き続き PieCloudDB コアを磨き、メタデータ ストレージ、ユーザー ストレージ、コンピューティング エンジンを反復処理し、オプティマイザーを OLAP シナリオにより適したものにしていきます。 

  • メタデータストレージ

メタデータのストレージに関しては、まずキャッシュを徹底的に最適化し、さらに効率的なキャッシュ システムにより FoundationDB へのアクセスを大幅に削減します。次に、メタデータが状態から切り離されるため、信頼性の高いストレージを必要としない状態を FoundationDB に保存する必要がなくなります。一定量のリファクタリングを繰り返すことで、抽象化がより分離され、複雑さが軽減され、安定性が向上します。 

  • ユーザーデータストレージ 

ユーザーデータストレージについては、コンピューティングニーズの優先順位に応じて辞書ページ、ブルームフィルターなどの機能が追加され、分散キャッシュとスケジューリングの観点から最適化されます。 

  • コンピューティングエンジン 

コンピューティング エンジンは、PieCloudDB の次のイテレーションの焦点となります。まず、SIMD エグゼキュータとさまざまな計算の最適化を完了する予定です。次に、マルチコア CPU の計算能力を最大限に発揮し、CPU 使用率を向上させ、単一ノードのパフォーマンスを最大限に活用するパイプライン エンジンを完成させ、コストをさらに削減し、効率を向上させます。3 番目のステップでは、コンピューティング エンジンのリソース スケジューリングの分離を完了し、PieCloudDB を「オペレーティング システム」およびデータ コンピューティングの基礎にし、これが PieCloudDB の長期的な目標になります。

PieCloudDB はこうして誕生しました。ぜひ公式 Web サイトにアクセスして、PieCloudDB クラウドオンクラウド バージョンを試してみてください。また、技術コミュニティに参加し、私たちと手を携えて歩むことを楽しみにしています。

おすすめ

転載: blog.csdn.net/OpenPie/article/details/131227183