ACIDジレンマ:ClickHouseが不十分でSingleStoreが優れている理由

最新のデータ プラットフォームを構築する際には、適切なデータベース エンジンを選択することが重要です。

ACIDジレンマ:ClickHouseが不十分でSingleStoreが優れている理由

ClickHouse は分析ワークロードに選択されることもありますが、ACID 準拠がないため、一貫性、信頼性、トランザクションの整合性が求められるユースケースでは特に大きな制限が生じます。

一方、SingleStoreは、OLAPとOLTPの両方のワークロードをサポートする統合アーキテクチャを提供し、整合性を損なうことなく高速化を実現します。このブログでは、ClickHouseの根本的な限界を掘り下げ、SingleStoreがリアルタイムアプリケーションにとってよりスマートで将来を見据えた代替手段である理由を探ります。

SingleStoreとClickhouseの違いを理解する

SingleStoreは、リアルタイム分析とAIを実現するデータベースです。使い慣れたSQLツールとMySQLワイヤプロトコルとの互換性により、専用のデータベースが不要になり、データベースアーキテクチャが簡素化されます。

SingleStore は、JSON、時系列、地理空間、全文検索などの複数のデータ タイプを処理できるように構築されており、統合されたトランザクション (OLTP) と分析 (OLAP) の基盤上で高速なデータ取り込みを実現します。

ClickHouseとは何ですか?

ClickHouseは、Yandexによって開発され、ClickHouse, Inc.によってメンテナンスされているリアルタイムデータウェアハウスおよびオープンソースデータベースです。主に分析用に構築された高性能な列指向データベースを採用しています。大規模データセットに対する非常に高速なクエリパフォーマンスで知られています。ClickHouseは、垂直分割、ベクトル化されたクエリ実行、高度な圧縮技術を活用しており、ログ分析、可観測性、時系列ワークロードに最適なソリューションとなっています。

SingleStoreとClickHouseの主な違い

項目

SingleStore

ClickHouse

主な焦点

統合(OLTP + OLAP)ワークロード

高性能分析(OLAP)ワークロード

ストレージモデル

OLTP と OLAP の両方に対応するユニバーサル列ストア

分析クエリに最適化された列指向ストレージ

クエリ実行エンジン

コンピュートプッシュダウンを備えた分散SQLエンジン

ベクトル化された実行と圧縮を備えた MPP エンジン

トランザクション

SingleStoreは完全なACIDトランザクションをサポートします

ACIDトランザクションを完全にサポートしていない

データの取り込み

Kafka、S3、Iceberg 形式、JSON などの複数のソースに対する組み込みパイプライン サポートによるリアルタイム取り込み

通常はバッチ挿入による高い取り込み率

データの更新

トランザクションの標準SQL DML(INSERT、UPDATE、DELETE)をサポート

サポートは限定的。追加のみまたは一括更新に最適

ワークロードの柔軟性

1つのシステムで混合ワークロード(運用 + 分析)を処理

主に分析や読み取り中心のワークロード向けに最適化されています

スケーラビリティ

水平および垂直のオンラインスケーリング

ノードを追加することで水平スケーリングが可能になり、大規模な分析に優れています。

圧縮

高圧縮率(60~70%)

圧縮をサポート

シャーディング

自動

マニュアル

データ変換

パイプラインを使用した変換の組み込みサポート

組み込みの構文や機能はありません

ユースケースの適合

リアルタイム分析、混合ワークロードの統合、データインフラストラクチャの簡素化

分析クエリ

ベクトルデータ型

成熟した

新しい

JSONサポート

完全に統合されたJSONデータ型と関数

JSONデータを処理するためのオブジェクトデータ型と関連関数

CDC出力

CDC出力機能内蔵

組み込まれていない

WASM

任意の言語でUDF/TVFを作成し、サンドボックス環境で実行してセキュリティを強化できます。

サポートなし

SingleStoreとClickHouseの設定方法

SingleStore

  • オンプレミス:SingleStoreをダウンロードしてインストールするには、こちらの手順に従ってください。
  • クラウド:無料で始めましょう。こちらのリンクから、お好みのクラウド(AWS/GCP/Azure)でクラスターを起動しましょう。

ClickHouse

  • オンプレミス:リンクの指示に従ってClickHouseをダウンロードしてインストールしてください。リンクはこちら

SingleStoreとClickHouseの設定

ClickHouse

  • インストールタイプ: クラウド (地域: オハイオ)
  • ClickHouse サーバーバージョン: 24.8
  • サイズ: 48 vCPU、192 GiB までスケールアップ (6 vCPU、24 GiB から)
  • エンジン: MergeTree

SingleStore

  • インストールタイプ: クラウド (地域: オハイオ)
  • シングルストアバージョン: 8.7.1
  • サイズ: S-1、8vCPU、64 GiB、パーティション: 32
  • テーブルタイプ: 列ストア

トランザクションの信頼性のためのACID

ACID保証は、OLTPでもOLAPでも、あらゆるデータプラットフォームにとって不可欠です。信頼性と一貫性のあるトランザクションを保証し、競合のない同時データアクセスをサポートし、クラッシュ後のデータ損失を防ぐことができるからです。ClickHouseは高速な分析クエリを提供しますが、行レベルの更新に対して完全なACIDトランザクションを実装しているわけではありません。

対照的に、SingleStoreは強力なACIDコンプライアンスを備え、読み取り/書き込み混合分析ワークロードにおいて他のデータベースよりも優れたパフォーマンスを発揮するため、現代の高同時実行ユースケースに最適な選択肢となります。そのため、多くのチームがClickHouseのような部分的なソリューションから移行し、クラス最高のパフォーマンスと完全なトランザクション整合性を備えたSingleStoreを採用しています。

明確で証拠に基づいた比較を行うために、両方のデータベースを ACID テストにかけてみましょう。

SingleStore

Clickhouse

ACIDテストパラメータ

Atomicity(原子性)

原子性は、トランザクションが「すべてかゼロか」(すべての操作が成功するか、どれも成功しないか)であることを保証するため重要です。これにより、部分的な変更によるデータ破損を防止できます。アリスからボブへの単純な資金移動を行い、途中で意図的にエラーを発生させることで、トランザクション全体がロールバックされます。SingleStoreがこのテストに合格したことは明らかですが、ClickHouse CloudとSelf Managedではサポートされていません。

SingleStore の Atomicity

ClickHouseのAtomicity

Consistency(一貫性)

一貫性は、あらゆるトランザクションが制約を遵守しながら、データベースをある有効な状態から別の有効な状態へと移行することを保証します。SingleStore制約によって無効なデータのコミットが防止されていることが明確にわかります。ClickHouseはトランザクションをサポートしておらず、一意キー制約とチェック制約も適用されません。

SingleStore のConsistency

ClickHouseのConsistency

Isolation(分離性)

分離性は、同時実行中のトランザクションが互いの中間状態に干渉しないことを保証します。典型的なテストとしては、2つの別々のセッション(トランザクションAとトランザクションB)を開き、異なる分離レベルにおいて、トランザクションAでコミットされていない変更がトランザクションBで参照可能(またはブロックされる)かどうかを確認します。

SingleStore でのIsolation

ClickHouseのIsolation

ClickHouse では、OLTP データベースのような行レベルのロックをサポートしていないため、分離性には限界があります。コミットされず、他のセッションから参照できないままの複数ステートメントのトランザクションを同時に実行することはできません。

ClickHouse は、データが挿入されるとコミットされ表示されるというより単純なモデルを適用するため、一般的な「ダーティリード/非反復リード/ファントムリード」分離レベルテストを提供しません。

Durability(耐久性)

耐久性により、トランザクションが一度コミットされると、(システムがクラッシュしたり再起動したりした場合でも)コミットされたまま維持されることが保証されます。

SingleStore のDurability

SingleStore は、定期的にディスクに保存されるトランザクションログを保持します。耐久性は、「同期耐久性」または「非同期耐久性」の基盤となる構成によって異なります。

完全な永続性コミットには「sync」(同期耐久性)設定を使用できます。これにより、コミットを確認する前にトランザクションログがフラッシュされます。SingleStore は、トランザクションにおける複数ステートメントの永続性をサポートします。

ClickHouseのDurability

ClickHouse は、単一ステートメントの耐久性保証を提供します。

ACID は基本的にトランザクションの保証に関するものなので、トランザクションの概念 (コミットとロールバックを含む) を公開しない ClickHouse のようなデータベースは、通常、ACID 準拠とは見なされません。

ClickHouseのようなデータベースが、これらの単一文のアトミック操作をサポートし、かつそれらの操作の一貫性、独立性、そして永続性を確保している場合、厳密に言えば、単一文のトランザクションにおけるACIDと言えるでしょう。しかし、このようなデータベースを「完全にACIDに準拠したシステム」と呼ぶことは稀です。

上記の評価と強力なトランザクション保証の重要性を踏まえ、ClickHouseの重要な限界を特定しました。それは、完全なACID準拠のデータベースではないということです。ClickHouseは分析ワークロードでは優れたパフォーマンスを提供しますが、マルチステートメントトランザクション、ロールバック、厳密な一貫性保証といった完全なトランザクション機能をサポートしていません。

強力なデータ整合性、一貫性、そして運用の柔軟性に対するニーズに応えるには、ACIDコンプライアンスを完全にサポートするリアルタイム分析データベースであるSingleStoreへの移行をお勧めします。SingleStoreは、高性能分析と完全なトランザクションサポートを組み合わせ、複雑なワークロード全体にわたって信頼性の高いデータの一貫性とアトミック性を確保します。

今すぐ無料で始めましょう。


Share