この記事では、まずRDBの概要を確認し、NoSQLデータベースが誕生した背景に軽く触れたうえで、NoSQLで使用されるデータモデルの概要を説明します。そして、米国Couchbase社が開発したドキュメント指向型のNoSQLデータベース、Couchbase Serverについてご紹介します。
RDBの概要
最も多くの基幹システムや情報システムなどで利用しているデータベース、リレーショナルデータベース(以後RDBを利用)は、データを複数の表で管理するためにデータの正規化(重複データの排除)を行います。
次に、ある列の共通データに着目し複数の表と関連付けし、複雑なデータの関連性を扱えるようにします。
RDBのデータを操作するには、SQL言語(以後、SQLを利用)を利用します。SQLはデータの定義、データ操作(検索、変更、追加、削除)、表と表の結合処理を行うことができます。
RDBはアトミックなデータ変更を保証するため、トランザクションを利用しデータの一貫性を保証します。
NoSQLデータベースの誕生
2006年頃からネットワークの高速化・大容量化の利用によりインターネットの利用が広がり「Twitter」をはじめとしたソーシャルネットワークサービス「SNS」が普及しました。
2011年頃からスマートフォンの普及が進み、今では、幅広い世代の多くのユーザがビジネスにプライベートに利用しています。
普及に伴い多種多様なデータ形式に対応したデータ管理とデータ操作、日々、早いスピードで増え続ける膨大なデータサイズに対してRDBの機能では対応ができないデータをビックデータと呼ぶようになり、ビックデータに対応したRDBに代わるデータベースの開発と研究が進みNoSQLデータベースが誕生しました。
NoSQLデータベースのデータモデル
NoSQLデータベースは、膨大なデータを管理するデータ分散アーキテクチャを採用しています。また迅速な応答性と多様なデータ形式に対応すべく、以下のような4つのデータモデルを使用しています。
ここでは、以下の4つのデータモデルについて概要を説明します。
- 「キー/バリュ型」
- 「カラム指向型」
- 「ドキュメント指向型」
- 「グラフ型」
1.キー/バリュ型のデータモデル
「キー」と「バリュ」をセットにしたデータモデルです。キーは、ドキュメントを識別するための一意の値です。バリュはバイナリデータ、ドキュメント(JSONデータ形式)データを管理します。
データ検索は、キー値を使うため、簡単な問い合わせで、バリュを検索できます。データサイズが小さいため、データをメモリ上で管理するため、迅速にデータ応答とデータ操作を提供します。
しかし、キー/バリュ型は、キー値を基にした簡単なデータ検索に特化しているため。データの集計、データの結合はアプリケーション側で対応します。
データ分散処理に対して、キー値を基にデータはソート済みのため、セグメント単位に分割しデータを管理します。
2.カラム指向型のデータモデル
カラム指向型は「キー/バリュ型」のモデルを拡張したデータモデルです。「キー/バリュ」のデータを1つのカラム(列、このブログでは以降、列を使用します)列毎に情報が格納されます。
このモデルは、「行ID」毎に管理している各列を時系列順に、又は、列名でソートし、時系列のデータ収集、指定した「行ID」に属するすべての列情報や指定した列から情報を取り出したデータの集計処理に適しています。
3.ドキュメント指向型のデータモデル
ドキュメント指向型のデータモデルは、一意のキー値でJSON形式のドキュメントを管理します。
ドキュメントに対してデータ操作(検索、追加、削除、変更)ができるデータ操作言語を提供します。
一意のキー値を使い複数のサーバにデータを分散管理する仕組みを提供します。
ドキュメント指向型のデータモデルは、Webサービスのデータベースとして多く利用されています。
4.グラフ型のデータモデル
データとデータの関連性を基に関連性を表現するデータベースです。
各グループ内のデータには制約(参照整合性)が無いため、各グループ内のデータを相互に結合した情報を作ることができます。データの関連性はグラフ(ネットワーク状)に表現します。
グラグ型は、JOINが多発するような複雑なクエリを迅速に処理するには適しています
関連性を表現するために、以下の情報をデータベースとして管理します。
- ノード:関係性の頂点
- リレーションシップ:ノード間の関係性と方向性
- プロパティ:ノードの属性とリレーションシップの属性を管理
Couchbase Serverの紹介
米国Couchbase社が開発した「Couchbase Server」はJSON形式のドキュメントに対応したオブジェクト指向モデルのNoSQLデータベースです。
「Couchbase Server」は、PayPal, Linkdin, AT&T, AMADEUS, ebay, TESCO, Ameriacan Express, Comcast, UNITED, verizonなど様々な業界のリーダー企業をはじめ、世界中の大手企業から新進気鋭のベンチャー企業まで多様な業種・システムで採用されています。
機能概要
Couchbase Serverの機能概要についてご紹介します。
- Couchbase Serverは、膨大なデータをサービスと呼ぶ専用プロセスがクラスタ内の各サーバ上で稼働しデータを管理します。
- リソースの追加は運用を停止せずにクラスタ内にサービス追加ができるフレームワークを用意しています。このフレームワークを利用し多様なトポロジに対応することができます。
- 最適に管理されたRAM(メモリ)からデータを読み取り、サブミリ秒のデータ応答を実現します。
- JSON形式のドキュメントを操作するためにN1QL(ニッケル)を用意しています。N1QLはJSONデータ形式のドキュメントを扱えるようにSQLの機能を拡張したデータ操作言語です。
- Couchbase Server 6.5から複数のドキュメントにアトミックなデータ変更ができるトランザクションを提供します。これにより同時実行時のデータの不整合を防ぐことができます。
- ユーザの不正アクセス、改ざんを防ぐ、ユーザ認証と権限、データの暗号化を含めたセキュリティ対策に対応しています。
- クラスタ統合管理「CouchbaseのWebコンソール」はクラスタ作成から運用管理、データ操作、サーバリソースなどのモニタリングなど一元管理を行うことができます。
- クラスタ全体のデータをバックアップするcbbackupそしてcbrestoreを使い、柔軟なバックアップリストアを提供しています。
- データベースのデータ活用したデータ分析(オンライン分析)や日本語のドキュメントに対応した全文検索を提供しています。
- データ変更を基に予め登録したアプリケーションの実行ができる機能やスケジューリング機能を使い、アプリケーションを定期的に実行することができる機能を提供しています。
稼働環境
Couchbase Serverはオンプレミスから仮想基盤、クラウド環境、コンテナ・オーケストレーションに対応、各OSついては、最新のバージョンに対応しています。
1.対応OS
- Amazon Linux 2
- Amazon Linux AMI 2017.09 2018.03
- CentOS 7.x 8.x
- Debian 9.x
- Oracle Linux 7.x 8.
- Red Hat Enterprise Linux(RHEL)7.x 8.x
※Couchbase Server 6.6からRHEL8.2に対応 - SUSE Linux Enterprise Server 12.x 15.x
- Ubuntu 18.04
- WindowsServer 2016 2019
- MAC 10.13 10.14に対応(開発用途)
2.仮想基盤とコンテナ・オーケストレーション
仮想基盤および、コンテナ・オーケストレーションに対応しています。
- KVM
- VMware
- Docker
- Kubernetes
- Red Hat OpenShift
3.クラウド環境
クラウド環境は以下のクラウドサービスに対応しています。
- AWS(アマゾンウェブサービス)
- Microsoft Azure
- Google Cloud Platform(GCP)
※ご利用前に、以下のURLを確認してください。
https://docs.couchbase.com/server/current/install/install-platforms.html
https://docs.couchbase.com/server/current/cloud/couchbase-cloud-deployment.html
開発ツールの提供
Webアプリケーション開発で利用する主な開発言語に対応したSDKを提供しています。
- Java
- C
- Scala
- Node.js
- PHP
- python
- .NET
- Go
まとめ
Webサービスでは様々な用途でJSON形式のドキュメントが利用されています。RDBもJSON形式を利用することが出来るようになりつつあります。Couchbase Serverは、以下のような魅力ある機能を提供しています。是非一度、Couchbase Serverに触れてみてください。
- 運用を止めないアーキテクチャ
Couchbase Serverはデータベースのスケーラビリティに対して運用を止めること無くスケールアウトが可能な機能を持ってます。
さらに、サーバ障害でも運用を継続できるクラスタ機能はWebサービスには欠かせない最大の利点です。 - 多様なWebサービスに対応
Webアプリケーション開発エンジニアは、慣れたSQLを利用しJSON形式のドキュメントを操作することは、開発効率を高める効果があります。
さらに、アトミックなデータ変更を保証するトランザクション機能を利用することで、データの一貫性を保証することが可能になりました。 - 新たなサービスを創出
蓄積したデータからのデータ分析の機能を使い、近未来の予測、異変の検知など多様な情報を基に、新たなサービスを作り出し、新たなビジネスチャンスを得ることができます。