データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

Apache Cassandraとは?特徴・アーキテクチャ・導入手順をわかりやすく解説

本記事では、非リレーショナルデータベース(NoSQL)であるApache Cassandra™について概説します。Cassandraを構成するコンポーネントや、データベースがどのように動作しデータを管理するのかを理解できるよう、特徴からアーキテクチャ、実際の導入手順までを順を追って解説します。

はじめに

スケーラビリティと高可用性が求められる環境で、パフォーマンスを損なうことなく日々の運用データを管理したい組織にとって、Cassandraは大きなメリットをもたらします。Cassandraは耐障害性と線形スケーラビリティで知られており、あらゆるハードウェアやクラウドインフラストラクチャに対応できるため、ミッションクリティカルなデータを扱うための理想的なプラットフォームといえます。

Cassandraは複数の地理的ロケーション間でのレプリケーションをサポートしており、ユーザーへの低レイテンシを実現しながら、ある地域で障害が発生してもデータベースシステム全体には影響が及ばないという保証を提供します。

Cassandraは、オープンソースの分散型かつ非中央集権型(デセントラライズド)のデータベース(ストレージシステム)です。世界中に分散した大量の構造化データの管理に利用でき、単一障害点のない高可用性サービスを提供するNoSQLデータベースです。

Cassandraの基本情報

Cassandraの歴史と製品に関する主なポイントは以下のとおりです。

  • Apache CassandraはもともとFacebookで開発され、その後Apacheのトップレベルプロジェクトになりました。リレーショナルデータベース管理システム(RDBMS)とは大きく異なる設計思想を持っています。

  • カラム指向(列指向)のデータベースです。

  • Dynamoスタイルのレプリケーションモデルを採用し、単一障害点を持たず、より強力なカラムファミリー型のデータモデルを備えています。

  • Facebook、GitHub、GoDaddy、Instagram、Cisco、Rackspace、eBay、Twitter、Netflixなど、世界を代表する大手企業で採用されています。

Cassandraの主な特徴

Cassandraには以下のような特徴があります。

  • エラスティックなスケーラビリティ: 高い拡張性を持ち、必要に応じてハードウェアを柔軟に追加できます。

  • 常時稼働アーキテクチャ: 単一障害点がなく、ビジネスクリティカルなアプリケーションに対して継続的な可用性を提供します。

  • 高速な線形スケール性能: 線形にスケールするため、クラスタ内のノード数を増やすほどスループットが向上します。

  • トランザクションサポート: 原子性(Atomicity)、一貫性(Consistency)、分離性(Isolation)、耐久性(Durability)といったACID特性をサポートします。

  • 高速な書き込み: 低価格な汎用コモディティハードウェア上で動作するよう設計されています。

  • 容易なデータ分散: 複数のデータセンターにまたがってデータをレプリケートでき、必要な場所へ柔軟にデータを配置できます。

アーキテクチャ

以下の図はCassandraのアーキテクチャを示したものです。

Apache Cassandraとは?特徴・アーキテクチャ・導入手順をわかりやすく解説

画像出典:Cassandra Community Webinar

Cassandraアーキテクチャの主要コンポーネントは以下のとおりです。

  • ノード(Node): データが格納される場所です。

  • データセンター(Data center): 関連するノードの集合体です。

  • コミットログ(Commit log): Cassandraにおけるクラッシュリカバリの仕組みです。すべての書き込み操作はコミットログに記録されます。

  • クラスター(Cluster): 1つ以上のデータセンターを含む構成要素です。

  • メモリテーブル(Mem-table): メモリ上に保持されるデータ構造です。データはコミットログに書き込まれた後、メモリテーブルに書き込まれます。1つのカラムファミリーに対して複数のメモリテーブルが存在することもあります。

  • SSTable: メモリテーブルの内容が閾値に達すると、データがこのディスクファイルへフラッシュされます。

  • Bloomフィルタ: ある要素が集合に属しているかどうかを素早く判定する非決定的アルゴリズムです。Bloomフィルタは特殊な種類のキャッシュであり、すべてのクエリ実行後にアクセスされます。

  • コンパクション(Compaction): 蓄積された大規模なデータファイルをマージして空き領域を確保するプロセスです。コンパクションでは、データがマージ・インデックス化・ソートされ、新しいSSTableとして格納されます。これにより、必要なシーク操作の回数も削減されます。

インストール手順

Cassandraデータベースをインストールするには、以下の手順を実行します。

  1. Cassandra用のユーザーを作成します。

  2. クラスタ内のすべてのノードに対してSSHを設定します。

  3. Javaをインストールします。

  4. ~/.bashrcファイルにPATHJAVA_HOMEを設定します。

  5. 以下のコマンドでCassandraをダウンロードし、展開します。

wget https://archive.apache.org/dist/cassandra/2.1.2/apache-cassandra-2.1.2-bin.tar.gz
tar -xvzf apache-cassandra-2.1.2-bin.tar.gz

Cassandraデータベースを設定するには、/etc/cassandra/conf/cassandra.yamlファイル内の以下の最低限のパラメータを変更します。

  • cluster_name: ClientName_CC_Lifecycle_Project の形式で指定します。環境(Lifecycle)には DevTestProd などが入ります。

  • data_file_directories: /css_data/data — データベースのデータファイルを保存するディレクトリです。

  • commitlog_directory: /css_data/commitlog

  • saved_caches_directory: /css_data/saved_caches

  • authenticator: PasswordAuthenticator — このパラメータにより、データベースでのパスワード認証が有効になります。

  • max_heap_size: max_heap_size="1G"

  • heap_newsize: heap_newsize="250M"

以下のコマンドを実行してデータベースを起動します。

cassandra

以下のコマンドでデータベースのステータスを確認できます。

nodetool status

注意: 上記の手順でCassandraをインストールすることは可能ですが、データベースを本番環境で最適に動作させるには、用途に応じた追加のチューニング設定が必要です。

まとめ

ビッグデータのワークロードを処理するには、大規模にスケール可能なNoSQLデータベースの採用が推奨されます。市場にはビッグデータシステムの要件を満たす多数のNoSQLデータベースが存在しますが、Apache Cassandraは線形にスケールする性能とエンタープライズクラスの主要機能を備えており、他のデータベースとは一線を画す存在です。

ご意見やご質問がある場合は、フィードバックタブからお気軽にお寄せください。

  1. Redis Sentinel入門:自動フェイルオーバーで高可用性(HA)を実現する方法

    Redis Sentinelは、Redisにシンプルかつ自動的な高可用性(HA)ソリューションを提供するコンポーネントです。MongoDBのレプリカセットにおける選挙(election)の仕組みに馴染みがある方なら、その概念はそれほど難しくありません。基本構成としては、1台のマスターが複数台(N台)のスレーブへレプリケーションを行い、そこにSentinelデーモンを配置します。Sentinelはアプリケーションサーバー上、またはRedisが稼働しているサーバー上で起動でき、常時マスターの健全性を監視します。あるSentinelがマスターの無応答を検出すると、他のSentinelへ向けてSDOW

  2. Google Fi(旧Project Fi)とは?仕組み・料金・メリット・デメリットを徹底解説

    モバイル通信市場はすでに飽和状態にあり、それでも「本当にお得なプラン」に出会うのは簡単ではありません。実際、携帯電話キャリアは評判が良くないことが多く、それには理由があります。「無制限」と謳いながら実質的に制限のあるデータプラン、高騰し続けるデータ料金、縮小される容量上限など、ユーザーを悩ませる問題が絶えないからです。データプランに大金を費やすだけでなく、エリアカバー率の高いキャリアを選ぶ手間も発生します。数ある選択肢の中に、さらに加わったのがGoogleの「Project Fi(現Google Fi)」です。 Google Project Fiとは? Project Fiは、Googleが提