利用可能なエンジン
| エンジン | 説明 | 最適な用途 |
|---|---|---|
auto | 操作ごとに最適なエンジンを自動的に選択 | 一般用途 (デフォルト) |
chdb | すべての操作を ClickHouse SQL 経由で実行 | 大規模データセット、集計 |
pandas | すべての操作を pandas 経由で実行 | 互換性テスト、pandas 固有の機能 |
エンジンの設定
グローバル設定
現在のエンジンを確認する
自動モード
auto モード (デフォルト) では、DataStore は各操作に最適なエンジンを選択します。
chDB で実行される操作
- SQL 互換のフィルタリング (
filter(),where()) - カラムの選択 (
select()) - ソート (
sort(),orderby()) - グループ化と集約 (
groupby().agg()) - 結合 (
join(),merge()) - 重複除去 (
distinct(),drop_duplicates()) - 件数制限 (
limit(),head(),tail())
pandas で実行される処理
- カスタムの
apply関数 (apply(custom_func)) - カスタム集計を行う複雑なピボットテーブル
- SQL では表現できない処理
- 入力がすでに pandas の DataFrame である場合
例
chDB Mode
使用するケース
- 大規模なデータセット (数百万行) の処理
- 負荷の高い集計ワークロード
- SQL の最適化を最大限に活用したい場合
- すべての操作で一貫した動作が求められる場合
パフォーマンス特性
| 操作の種類 | パフォーマンス |
|---|---|
| GroupBy/集約 | 非常に高い (最大20倍高速) |
| 複雑なフィルタリング | 非常に高い |
| ソート | とても高い |
| 単純な単一フィルタ | 高い (わずかなオーバーヘッドあり) |
制限事項
- カスタム Python 関数はサポートされないことがあります
- pandas 固有の一部機能では変換が必要です
pandas モード
使用する場面
- pandas との互換性をテストする場合
- pandas 固有の機能を使う場合
- pandas 関連の問題をデバッグする場合
- データがすでに pandas 形式になっている場合
パフォーマンス特性
| 操作の種類 | パフォーマンス |
|---|---|
| 単純な単一操作 | 良好 |
| カスタム関数 | 非常に優秀 |
| 複雑な集計 | chDB より低速 |
| 大規模データセット | メモリ使用量が大きい |
Cross-DataStore エンジン
例
エンジンの選択ロジック
自動モードの決定木
関数レベルのオーバーライド
性能比較
| 操作 | pandas (ms) | chdb (ms) | 高速化率 |
|---|---|---|---|
| GroupBy カウント | 347 | 17 | 19.93x |
| 複合操作 | 1,535 | 234 | 6.56x |
| 複雑なパイプライン | 2,047 | 380 | 5.39x |
| Filter+Sort+Head | 1,537 | 350 | 4.40x |
| GroupBy 集計 | 406 | 141 | 2.88x |
| 単一フィルター | 276 | 526 | 0.52x |
- chDB は集計や複雑なパイプラインで特に高い性能を発揮します
- シンプルな単一操作では pandas のほうがやや高速です
- 両方の利点を活かすには
autoモードを使用してください