Cassandraについて~その特徴と簡易インストール編~|【技業LOG】技術者が紹介するNTTPCのテクノロジー|【公式】NTTPCご利用中のWebブラウザではJavaScriptが無効化されております。本Webサイトのすべての機能をご利用いただくために、JavaScriptを有効化した上でご覧ください。祥一TweetはじめにIoTやデータサイエンス等でデータ解析の話をするときに、データを保存する方法として既存のリレーショナルDBに加えてNoSQLの話を聞くようになってきました。Cassandraについて紹介します。Facebook社のエンジニアによって開発されました。プロジェクトとなり、成長を続け2017年2月にバージョン3.10がリリースされました。テーブルにデータを格納しCQLというSQLのようなクエリ言語を利用してデータのやりとりをすることができるため、直観的にはリレーショナルDBを使っているかのように操作ができます。Cassandraは、複数台でクラスターを組んで分散DBを作成し、スケールアウトすることが容易にできる構造になっています。処理性能も構成するノード数に比例します。そのためサーバー管理者としては、比較的安価にスケーラビリティを確保できます。性能処理のベンチマークについては次のサイトに掲載されているので参照してください。参照:DataStax社ベンチマークhttp://www.datastax.com/apache-cassandra-leads-nosql-benchmarkここからは主な特長毎に紹介します。技術を受けた造りでネットワーク分断性と可用性に強い構成に焦点をあてており、システムとして処理能力が足りなくなるとサーバー台数を追加させてスケールアウトしやすい構造になっています。そのため複数あるサーバーのそれぞれを起動するだけで自動的にクラスターを組むことができるようにCassandraでは次のような仕組みを取り入れています。※6]■Partitioningデータをクラスター内で各ノードに分散配布する仕組みです。Hashingによりクラスター内の各ノードにトークンを配布しそのトークンに紐づくデータを各ノードに分散して収納しますまたレプリケーションで作成したデータも異なるノードに自動配置します。Protocolクラスター内の各ノード間の通信プロトコルです。クラスター内のノード間の通信は基本的にはP2P通信です。Protocolを使い各ノードは、他のノードと読み書きする情報の交換や各ノードの状態等の情報を取得し判断しますこれらの仕組みによりCassandraでクラスターを組むためには、同じクラスター名とseed_node*のIPアドレスを設定ファイル(cassandra.yaml)に書き込んでCassandraを起動するだけで自動的にクラスターが組まれます。データ保存Cassandraでのデータ保存は、主にmemtableというメモリー上の空間とSSTableというディスク上の領域を利用します。データの書き込み時は、最初にmemtableに書き込みますが、ここが一杯になった時はmemtableの全ての内容をSSTableへ書き込みます。読み出し時は、まずmemtableを参照し、ここにない場合はSSTableから該当データを取り出します。Cassandraでのデータ削除時は、実際には削除はされずtombstoneという印がつきます。一定期間経過後にcompactionというSSTableをまとめて整理する作業を行う時に削除されます。クラスター内でのデータ整合性クラスター内でのデータ読み書きと各ノードが保持するデータの整合性についてです。Cassandraでは外部システムからクラスターで保持しているDBへの読み書きの問い合わせのある場合は問い合わせを受け取ったノードがcoordinatorという役割を負い、クラスター内の該当するノードへデータの読み書きの問い合わせを行います。基づいてどのノードへ接続するのか動きが変わります。詳細な設定値等は次のサイトに記述があるのでご参照ください。Levelが「ONE」なっている時は、coordinatorになったノードから直近一つのノードにのみ接続がありますが「ALL」に設定されている時は、関連するすべてのノードへ接続し該当の処理が終わるまでDBシステムとしての処理は終わりません。Consistencyという概念で出来上がっています。Levelを上げるなど柔軟に設定することができます。冗長性Cassandraは、クラスター内の全てのノードが同等の役割を持ち自律して動作します。同じデータが同一のノードに重なることなくデータのレプリケーションが行われるため単一障害点(SPOF)もなく継続して運用することができます。Handoffの機構によって受け取ったサーバーで一時的に保存し、障害をおこしたサーバーが復旧後に該当サーバーへその情報を流し込み最新情報にアップデートします。Repairの機構で読み取り時に他のノードと比較して古い情報の場合アップデートを行う機構がついており各サーバー内でのデータの状態をできる限り最新に保ちます。他にnodetoolなどの管理ツールを用いて手動で他のサーバーとの誤差を修正することやバックアップの管理をすることができます。store型(KVS)のテーブル(table)に登録する形式でデータの位置を行と列で指定して操作できます。テーブルは複数作れますが、テーブル間のリレーションはありません。複数作成したテーブルは、キースペース(keyspace)という単位でまとめます。NoSQLのデータベースでは、最初にデータのテーブル等の構成情報を定義するschemaを作る必要がないものが一般的ですがCassandraはデータの投入前に最初にテーブルとキースペースの定義をschemaとして作成する必要があります。それらの操作は、CQLといわれるSQLに似たつくりのクエリ言語で操作できます。等のコマンドでデータ操作できるためリレーショナルDBを知っていると違いや利用について想像がつきやすいと思います。CassandraのインストールCassandraについて動作の概要がわかったところでCassandraのインストールです。今回は、圧縮ファイルからインストールをして簡易なデータを投入するところまで実施します。起動を目的にしているためログファイルやデータベースのデータなどもすべて圧縮ファイルを解凍したディレクトリ内にファイルが収まります。指定することでCassandraのディレクトリにアクセスできます。ついて各サーバにおいて以下を変更します。起動がスムーズになるように起動スクリプトを作ります。なっているとクラスターの完成です。あるデータを次の手順で投入します。テーブルの作成は、(表1)の各項目名を英語に変換しました。指定して作成しました。rows)cqlsh>まとめCassandraについて概要と簡易的なインストールについて紹介しました。Cassandraは、スケールアウトと可用性に重点を置いた分散システムとしてつくられているため容易に強力なDBシステムをつくることができます。Levelの調整をしたりなどする必要があるため導入には十分な検討が必要です。商用展開においては、サーバーの物理ディスクの分散や各サーバーへの接続するネットワークの可用性等も考慮する必要があります。クラスターを組む場合、Cassandraを入れるサーバーが複数必要となります。検証等では、サーバーを確保することは難しいことが多いですが、仮想化されたシステムを利用すると便利になります。今回は圧縮ファイルを利用したインストールでしたが、Dockerでもイメージを提供しているため簡単に同一ホスト内でクラスターを組むことができます。[※7]またWebARENAのVPSクラウドなどでは、プライベートセグメントのネットワークで複数のVPSをグループ化して運用することができたりVPSのクローンを作る機能もあったりするため今回紹介しました圧縮ファイルでのインストールにおいても比較的容易にスケールアウトを行う検証を行うことができます。これらの仮想化機能を使うことでサーバー運用における生産性向上にも大きく貢献してくれると思います。(プライバシーポリシー)情報セキュリティ基本方針サイトポリシーサイトマップ本ホームページに記載する会社名、商品名、ブランド名などは、各社の商号、登録商標、または商標です。Reserved.PageTop。