I. 簡単な紹介TensorBase は、Rust を使用して実装された最新のリアルタイムのオープンソース データ ウェアハウスです。 2. 特徴- すべて Rust で作られています。TensorBase は、毎日の試行で数十テラバイトのデータ注入による厳格なテストを経て、特に中小企業向けの実際のユーザー シナリオに合わせて最適化された、Rust コミュニティで最も先進的で本番環境対応の汎用データ ウェアハウス プロジェクトになったと主張しています。
- すぐに使用できます。TensorBaseは、データの挿入やインポートからクエリまで、データウェアハウスのワークフロー全体を既にサポートしており、高い初期完成度を実証しています。ユーザーは、TensorBaseのリリースページから関連するLinuxバイナリをダウンロードして試用できます。(Windows 10 WSL2も現時点では使用可能です。)
- ClickHouseプロトコルと互換性があります。ClickHouseはC++で記述されたデータウェアハウスです。TensorBaseは、Rustを用いて高性能なClickHouse SQL方言パーサーとTCP通信プロトコルスタックをゼロから実装しています。ClickHouse TCPクライアントはTensorBaseにシームレスに接続できます。
- パフォーマンスは最優先事項です。TensorBaseは、新しいソフトウェアとシステム設計を通じて、最新ハードウェアの潜在能力を最大限に引き出すことを目指しています。TensorBaseは初めて、コアコードベースに「F4」を実装しました。これは、コピーフリー、ロックフリー、非同期フリー、そして動的オブジェクトディスパッチフリー(動的オブジェクトディスパッチなし)を意味します。予備的なパフォーマンス評価では、14億7000万行のニューヨークタクシーデータセットにおいて、TensorBaseは単純なクエリパフォーマンスにおいてClickHouseを上回ることが示されています。
- 複雑さを簡素化する。現在のビッグデータシステムは非常に複雑で、操作が非常に複雑です。最もシンプルなシステムを実行するだけでも、多数の難解なパラメータを設定したり、サードパーティ製の依存関係を多数インストールしたりする必要があります。
- ユーザーにとって、TensorBase は、既に実現されているすぐに使用できる機能に加えて、運用および保守管理者に依存するのではなく、実行時にシステムが自律的に実行されることを期待しています。
- TensorBaseは、開発者にとって、貢献への参入障壁を下げることを目指しています。プロジェクト全体のアーキテクチャはシンプルかつ効率的(詳細は後述)に設計されており、外部依存関係は最小限に抑えられています。また、完全な再コンパイル(cargo cleanからcarrier buildまで)は、1台のマシンで1分未満で完了します。(ビッグデータシステムやC++データベースの完全なビルド時間は、多くの場合、数時間かかります。)
- 未来をつなぐ。TensorBaseはApache ArrowとDataFusionをコアから刷新し、Arrow形式のクエリ、分析、転送をシームレスにサポートします。Arrow形式は、ビッグデータ交換のためのミドルウェア形式としてますます広く採用されており、複数のデータベースとビッグデータエコシステムプラットフォームでサポートされています。TensorBaseはArrowとエンジン互換性があり、クラウドネイティブとクラウドニュートラルの両方のシナリオでデータウェアハウスエクスペリエンスを同時にサポートし、ストレージニュートラルなデータレイクサービスを提供します。
III. 建築- ベースサーバー
- TensorBase サービスインターフェース層は、データ書き込みやクエリエントリポイントなどのデータインターフェースサービスを提供します。TensorBase は、世界初のC++非対応 ClickHouse TCP プロトコルサービススタックを革新的に実装し、ClickHouse クライアント (clickhouse-client コマンドライン) からの直接接続とネイティブプロトコル言語ドライバをサポートします。同時に、Base Server は世界初の非同期中立型 Rust 高性能サーバーです。改良された Actix イベントループをベースにした Base Server は、サービス実装において非同期処理を完全に回避し、優れたデバッグ性を提供すると同時に、tokio のデフォルトの非同期式層をベースにした実装を大幅に上回るパフォーマンスを実現します。将来の実装では、tokio 非対応のネットワーク I/O 層実装も組み込まれる可能性があります。
- ベースメタ/ランタイム/ストレージ
- TensorBase は、メタデータ層、ランタイム層、ストレージ層で構成されています。ストレージ層では、TensorBase は従来の列指向ストレージ手法を使用しません。最も重要なのは、反重力設計である LSM を使用しないことです。現在オープンソース データベースやビッグ データ プラットフォームで普及している LSM ツリー (ログ構造マージ ツリー) データ構造は使用していません。代わりに、パーティション ツリーと呼ばれるデータ構造を使用し、データはパーティション ファイルに直接書き込まれます。これにより、LSM 構造の後続の圧縮オーバーヘッドを回避しながら、追加専用の書き込みパフォーマンスを維持します。最新の Linux カーネルのサポートと独創的な書き込み設計により、ユーザー空間カーネルの読み取り/書き込みリンク (ロックフリー) にロックを一切使用せず、高並行性ネットワーク サービス層が提供する機能を最大限に活用し、超高速データ書き込みサービスを実現しています。
- ベースエンジン
- TensorBaseのエンジン層は、Apache ArrowとDataFusionの改良版を活用し、基盤となるストレージをArrow形式に巧みに適応させることで、ゼロコピーのデータクエリを実現しています。もちろん、現在のアダプティブストレージ戦略は開発中の準最適なソリューションに過ぎません。TensorBaseはストレージ層の改良を継続し、より最新の最適化を提供していきます。同時に、TensorBaseはストレージ層をさらに最適化することで、Arrow/DataFusionコミュニティがクエリエンジンのパフォーマンス向上を支援し、コミュニティと共に成長していくことを目指します。
- 他の
- TensorBase には、次のような基本コンポーネントもいくつかあります。
- 汎用ツールライブラリである base。
- lang、言語層(現在は主に ClickHouse 互換の解析およびプレゼンテーション層を実装しています)。
- 式ベースのJITエンジンであるLightJITは、将来的には高性能かつセキュアなユーザー定義関数(UDF)レイヤーに拡張可能です。TensorBaseは、その高性能な基盤コンポーネントをさらに開発し、オープンソース化することで、Rustコミュニティに独自の高性能かつ再利用可能なインフラストラクチャを提供します。
アーキテクチャ図の破線はまだ実装されていないことに注意してください。これは、全体的なアーキテクチャのブループリントです。
|