支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Cassandraとは?詳しく解説さ

Cassandraとは?

Cassandraとは正式名称をApache Cassandra(アパッチ カサンドラ)と呼びオープンソースのデータベース管理システムとして有名です。 NoSQLの代表的なサービスとして有名であり、元々はFacebook社によって開発されたサービスとなります。 ここでは、Cassandraについて詳しく解説させていただきますので、興味のある方は是非参考にしてみてください。

Cassandraの歴史

Cassandraの歴史について解説させていただきます。 Cassandraは2008年にFacebook社によって開発がスタートしました。 Cassandraの開発のそもそもの目的はFacebook社のサービスである「Facebook」におけるInbox Search機能向上にありました。 2008年にFacebook社がOOSとして公開した事を歴史とのスタートとして、2009年にはApache Incubatorプロジェクトとなり、2010年にはトップレベルプロジェクトに昇格しました。 2015年にはApache Cassandra 2.2がリリースされJSONへの対応を完了し、JSONフォーマットでのデータの読み書きを実現しました。 2021年の8月には6年ぶりのメジャーバージョンアップを行い「Apache Cassandra 4.0」を正式にリリース致しました。 「Apache Cassandra 4.0」においてはJava11のサポート、仮想テーブルの実装、監視ログを始めとして複数の機能の追加と改善が実施されました。 以上が簡単ではありますがCassandraの歴史の説明となります。

CAP定理とNoSQLについて

Cassandraを理解するために必要な内容としてCAP定理とNoSQLを説明させていただきます。 CAP定理はインクトミ社(1996年創業、検索エンジンの開発)の創業者とカリフォルニア大学バークレー校の計算機科学の教授の肩書を持つエリック・ブリュワーが2000年に提唱したものとなります。 すでにご説明させていただいたように、CassandraはNoSQLを代表するサービスの一つです。 CAP定理とは「Consistency(一貫性)」「Availability(可用性)」「Availability(可用性)」の頭文字をとったもので、分散システムにおいて3つの要素のうち2つしか満たすことはできず、すべてを満たすシステムは難しいという理論となります。 CAP定理においては、従来のリレーショナルデータベースにおいては「Consistency(一貫性)」「Availability(可用性)」を担保しておりますが 、「Availability(可用性)」を犠牲にしているという考え方が成立します。 一方でNoSQLでは「Availability(可用性)」「Availability(可用性)」を担保する分「Consistency(一貫性)」失っているという考え方が成立します。 NoSQLを代表するCassandraもこのCAP定理における課題と密接な関係があることは言うまでもありません。 「Apache Cassandra 4.0」においては「Availability(可用性)」の強化としてストリーミングの改善が行われました。 これにより「Availability(可用性)」に関する問題の解決を図ったと言えますが、 CAP定理の課題はあらゆる分散システム二おいて成立するため、今後の技術的な発展と共に注目を浴びている点でもあります。 以上がCAP定理とNoSQLについての説明となります。

Cassandraの特徴について

Cassandraの特徴について説明させていただきます。 Cassandraの特徴の一点目がパフォーマンスが高いという点となります。 Cassandraは高速なデータの書き込みを特に重視しており、そのために Log-structured merge-tree(LSM tree)というアルゴリズムを導入していることが特徴の一つです。 Cassandraの特徴の二点目がマスターレスであるという点となります。 一つのノードに対してトラブルが発生しても別のノードでカバーし処理を実行することが可能です。 また、スケールアップが容易なため高パフォーマンスを実現することも可能となります。 Cassandraの特徴の三点目が操作が比較的容易という点となります。 Cassandraでは、独自のクエリ言語であるCassandra Query Language(CQL)を利用することになりますが、 こちらはSQLの知識があるエンジニアであれば理解することは難しくなく、操作を行うハードルは 低いといえるでしょう。 Cassandraの人気が高い理由としてユーザーが既製のハードウェアを使用して、 ダウンタイムなしでデータベースを動的に拡張できるということも大きなポイントとなります。 もちろん拡張するだけでなく縮小することも簡単に実行できます。 多くのユーザーはOracleやMySQLデータベースに慣れているかと思いますが、それらを拡張するには、 CPUパワー、RAM、またはより高速なディスクを追加する必要があるため、コスト面の負担が高くなることは間違いありません。 一方でCassandraを使用すると、管理できるデータの量を簡単に拡張することが可能であり、大きなメリットと言えるでしょう。 これはノードに基づいていることがその理由であり、Cassandraはより低いコモディティハードウェアを使用して水平方向にスケーリングします。 容量を2倍にする、またはスループットを2倍にするには、ノード数を2倍すれば解決できます。さらに容量が必要であれば追加すればそれらの問題は解決します。 この線形スケーラビリティは、基本的に無期限に適用され、この機能はCassandraの強みであると同時に人気の理由でもあります。 また、Cassandraではデータ自体が自動的に配布されることでパーティションを使用して高いパフォーマンスを実現することが可能です。 各ノードは特定のトークンのセットを所有しており、Cassandraはこれらのトークンの範囲に基づいてクラスター全体にデータを分散します。 パーティションキーは、ノード間でデータを分散する役割を果たし、データの局所性を判断するために重要なポイントとなります。 また、データがクラスターに挿入されるときに最初のステップは、パーティションキーにハッシュ関数を適用することです。 出力においてはどのノードがデータを取得するかを決定するために使用されます。 レプリケーションにより、信頼性とフォールトトレランスが保証されますデータが到着するとデータベースのコーディネーターが特定のパーティションに割り当てる役割を引き受けます。 Cassandraの技術的な面についてもう少し掘り下げて説明させていただきます。 Cassandraは1つのデータを複数の(レプリカ)ノードに複製できるため、信頼性とフォールトトレランスが保証されます。 Cassandraは、データベースに存在するデータのコピー数を表すレプリケーションファクター(RF)の概念をサポートしています。 データは1つのレプリカにのみ複製されています(RF = 1)。これをレプリケーション係数2(RF = 2)まで上げると、 データは2番目のレプリカにも保存する必要があり各ノードは、プライマリ範囲に加えて、トークンのセカンダリ範囲を担当するようになります。 レプリケーション係数が3の場合、その特定のトークン範囲をカバーする3つのノード(レプリカ)が存在し、データはさらに別のノードに格納されます。 Cassandraの分散性により、弾力性とパフォーマンスが向上します。これは、同じデータに対して複数のレプリカがある場合に実際に役立ち 例えばノードがダウンした場合、ハードドライブに障害が発生した場合、AWSがインスタンスをリセットした場合など、何かしらのトラブルが発生した場合にシステムが自己回復するのに役立ちます。 レプリケーションが実行されデータが失われないことが保証されます。データのリクエストが発生した場合、レプリカの1つがダウンした場合でも、他の2つはリクエストを満たすために引き続き使用することが 可能となります。 また、ダウンしたレプリカが復旧すると、自動的に欠落しているものを発見し他の2つのレプリカに追いつきます。 それだけでなく複数のレプリカを使用することでパフォーマンス上のメリットも享受することが可能です。 単一のインスタンスに限定されないため、操作用のデータを提供するためにアクセスできる3つのノード(レプリカ)があり、それらの間で負荷分散して最高のパフォーマンスを実現できます。 Cassandraは、そのデータを世界中のデータセンターに自動的に複製することでそのパフォーマンスを担保します。 例えば米国西海岸のCassandraノードにデータを書き込んだ場合、そのデータはアジアとヨーロッパのノードのデータセンターで自動的に利用可能になります。 このようなクラウドサービスの技術を活用することにより世界中のユーザーに対して高いパフォーマンスを提供することが可能になります。 以上が簡単ではありますがCassandraの特徴と技術的な説明となります。

Apache Cassandra4.0について

Apache Cassandra4.0について説明させていただきます。 Apache Cassandra4.0は2021年にリリースされ、実に6年ぶりのメジャーバージョンアップとなりました。 改善されたポイントについて詳しく解説させていただきますので、参考にしていただけますと幸いです。

パフォーマンス

Apache Cassandra4.0では速度と拡張性を改善しました。 拡張オペレーション時のデータのストリームが5倍高速になり、読み取りと書き込みについては最大25%改善するなどパフォーマンスを大幅に改善することが可能となりました。

Java8とJava11

Apache Cassandra4.0ではJava8および11をサポートしました。 JDK 11は実験的機能であり、運用環境での利用は推奨しないと公式サイトでは 伝えておりますので、エンジニアの方は注意する必要があります。

仮想テーブル

Apache Cassandra4.0の一つの特徴が仮想テーブルとなります。 仮想テーブルの機能として「CQLを介してメトリックを公開する」「AML構成情報を公開する」などがあげられます。

監視ログ

Apache Cassandra4.0に追加された新機能の一つが監視ログとなります。 監視ログ機能の追加により、ユーザー操作を捕捉することや「Virtual Tables」を用いてCQLで簡単に読み出すことが可能となりました。 いくつか特徴を記載させていただきますと、「監査ログを保存するために追加のデータベース容量は不要」「ログを保存するためのクエリツールは不要」 「データベース操作の待機時間は影響を受けないため、パフォーマンスへの影響がない」「ヒープメモリの使用量は重み付きキューによって制限され、設定可能な最大重みがロギングスレッドの前に配置される」「ディスク使用率は構成可能なサイズによって制限され、制限に達すると古いログセグメントが削除される」 「MXツールを使用して、有効化、無効化、またはリセットが可能」などとなります。

Cassandraの導入事例

Cassandraの導入事例について説明させていただきます。 ワークスアプリケーションズ社はERPパッケージソフトの開発・販売・サポートを手掛けるパッケージベンダー企業です。 ワークスアプリケーションズ社は次世代ERPシステム「HUE」において 従来のリレーショナルデータベースでなくNoSQLのCassandraを導入しました。 ワークスアプリケーションズ社は社内システムを Cassandraで運用していたこともあり、そのパフォーマンスを高く評価したという点が導入を決定する判断材料の一つだったようです。 次世代ERPシステム「HUE」ではユーザーのリアクションに対して常に100ミリ秒以下で画面を返すという 目標を掲げ、その実現のために圧倒的な処理速度をもつCassandraの導入に至ったという経緯を持ちます。 画面の処理速度はユーザーの操作性や利便性を高め、ユーザーの満足度や製品の評価に直結する部分であるため 非常に重要なポイントであることは間違いありません。その一方で大量のデータ処理をどのようなアーキテクチャで対応するのかという点は サービスを提供する企業において常に課題となる点です。 ワークスアプリケーションズ社はCassandraを導入するにあたりスモールスタートが可能である点や 分散処理構成において単一障害点(Single Point of Failure)がない点、マスターノードがなく、その上で可用性に重点を置いている点 などのアーキテクチャを高く評価して導入を行いました。 ワークスアプリケーションズ社のCassandra導入後のメリットとしては、信頼性が高い点やパフォーマンスの高さをあげており 様々な改善を行うことでさらにサービス品質の向上に繋がることは間違いないでしょう。 以上がCassandraの導入事例の説明となります。

CassandraとMicrosoft

CassandraとMicrosoftについて、2021年においてサービスを提携する ニュースがありましたので紹介させていただきます。 Microsoft AzureはApache CassandraのAzure Managedインスタンスの提供開始という内容を 2021年の3月のMicrosoft Igniteカンファレンスにて発表を行いました。 Azureのセキュリティとコンプライアンス環境においてCassandraの最新バージョンとの互換性も維持されながら サービスを利用することが可能となります。 従来であればAzure上で Cassandraを利用するためには、Cassandra、MongoDB、SQL、Gremlin APIをサポートする スケーラビリティの高いデータベースサービスであるCosmos DBを利用するか オンプレミス上で行う必要がありました。 今回のサービスによりAzure上でe Cassandraがサポートされより利便性が高まったと言えるでしょう。 また、2021年の11月にはAzure Cosmos DB Cassandra APIにおいてGlowrootのサポートが開始されました。 Glowroot は、アプリケーションのパフォーマンスを最適化および監視するために使用されるアプリケーションパフォーマンス管理ツールであり Azure Cosmos DB Cassandra APIを支援します。

まとめ

いかがでしたでしょうか? Cassandraについて詳しく解説させていただきましたので、是非参考にしていただけましたら幸いです。