2010/09/02

NoSQLについて知るべき10の事柄

 このブログは技術的に深い内容をお伝えするのではなく、Big Dataにすでに直面しているが気が付いていない、気が付いているがその解決の糸口を探している・・・、という方々に読んでいただければと考えています。すでにBig Dataの問題に直面している方々は、ノン・リレーショナル、NoSQL、KVSといったリレーショナル・データベースではない解決方法について、よく理解されていると思います。 

 しかし、Big Dataの問題に直面しながらも、NoSQLの課題のみに囚われているという方もいるのではないでしょうか(とはいえ、そういう方々がこのブログを発見することは無いと思いますが)。私たちも、つねにNoSQLには課題があるが、Big Dataの時代にはリレーショナル・データベースではできないことができる。これを組み合わせて利用する時代になるとお伝えしています。 つい先日、”10 things you should know about NoSQL databases"というブログ記事を発見しました。 とても良くまとまっていますので、以下に日本語でご紹介することにします。

 (以下、翻訳)
  リレーショナル・データベースモデルは、数十年に亘り、優勢でした。しかし、NoSQLとして知られる、新しいタイプのデータベースが、企業において注目を集めています。ここでは、その長所と短所の概要を述べてみます。 この四半世紀の間、リレーショナル・データベース(RDBMS)はデータベース管理の最有力なモデルでした。しかし、最近では、ノン・リレーショナル、「クラウド」、または「NoSQL」データベースが、データベースマネジメントにおける代替モデルとして、マインドシェア(顧客の心の中における特定ブランドの占有率)を高めています。この記事において、私たちは、これらのノン・リレーショナル NoSQLデータベースの10の重要な点を見てみます。すなわち、トップ5の優位点と、トップ5のチャレンジです。 

NoSQLの5つの優位点 

1:柔軟な拡張性
  数年間に亘り、データベース管理者は、「スケールアウト」 - 負荷が増大するに伴い複数のホストにまたがりデータベースを分散する – ことよりも、むしろ「スケールアップ」 - データベースの負荷が増大するに伴い、より大きなサーバーを購入すること – に頼ってきました。しかし、トランザクションレートや可用性への要求が高まり、データベースがクラウドや仮想空間に移行するに伴い、汎用ハードウェアによるスケールアウトの経済的優位性は文句の言えないものとなってきました。 RDBMSは汎用クラスター上において容易にスケールアウトはできないですが、NoSQLの新種のデータベースは新しいノードの利点を、明らかに活かすように設計されています。そして、それらは、通常、低コストの汎用ハードウェアを念頭に置いて設計されています。 

2: Big data
   トランザクションレートが過去十年間の認識を超えて成長するにつれ、格納されているデータの量もまた膨大に増加してきました。オライリーは、これを「データの産業革命」と賢く呼んできました。RDBMSの容量はこれらの増加に合わせて増えてはいますが、トランザクションレートと同様に、単一のRDBMSで実質上管理できるデータ量の制約は、いくつかの企業で耐え難いものとなってきています。今日では、HadoopのようなNoSQLで取り扱える「big data」の量は、最大のRDBMSで取り扱える量を超えています。

 3:さようならDBAs (また会いましょう?) 
  数年間に亘るRDBMSベンダーにより主張されてきた多くの管理面での改善にもかかわらず、ハイエンドのRDBMSシステムは、高価であり、高度に訓練されたDBAs(データベース管理者)の支援によってだけ維持できます。DBAは、設計、設置とハイエンドRDBMSシステムの継続的なチューニングに密接に関わっています。 NoSQLデータベースは、一般的に、より少ない管理 ― 理論的には、自動修復、データ分散、そして、より少ない管理とチューニング要件 ― を根本から満たすように設計されています。実際のところ、DBAの死という噂は少し誇張されすぎているでしょう。誰かは常にミッションクリティカルなデータストアのパフォーマンスや可用性について責務を負うのでしょう。

 4:経済性 
  NoSQL データベースは典型的に、爆発的なデータとトランザクション量を管理するために安い汎用サーバーのクラスターを用います。その一方で、RDBMSは高価で専有型のサーバーやストレージシステムに頼る傾向があります。その結果、より安い価格でより多くのデータを格納し処理することにより、NoSQLにおけるギガバイトあたりのコストやトランザクション/秒は、多くの場合、RDBMSのコストよりも低くなりえます。

 5:柔軟なデータモデル
  マネジメント変更は、大規模に稼働するRDBMSにとって、かなりの頭痛の種です。RDBMSのデータモデルに対するわずかな変更でさえ、注意深く管理されなければなりませんし、ダウンタイムやサービスレベル低下が起こりえます。 NoSQL データベースは、― すなわち、実在さえしない ー データモデルの制約をはるかに緩やかなものとしています。NoSQLのKey Value storeとドキュメントデータベースは、アプリケーションを、データ構成部分のなかで、それが望むどのような構造にも仮想的に格納することを許しています。もっとも厳格に定義されるBig TableベースのNoSQLデータベース(Cassandra、HBase)でさえ、多すぎる混乱もなしに新しいコラムが作られることを概して許しています。 その結果、アプリケーションの変更やデータベーススキーマの変更は、ひとつの複雑な変更の単位として管理される必要が無くなります。理論的には、仮にアプリケーションがデータの整合性の管理に失敗する場合には、明らかに望ましくない副作用がありうるものの、このことは、アプリケーションをより速くさせるでしょう。


 NoSQLの5つのチャレンジ 


  NoSQLデータベースへの期待は、多くの熱狂を生み出してきました。しかし、それらがエンタープライズの主流と言われるようになる前に、克服するべきいくつかの障害があります。

 1:成熟性
  RDBMSシステムは昔からあります。NoSQL擁護派は、その進んだ年齢は退行のサインと主張するでしょう。しかし、多くのCIO達にとって、RDBMSの成熟度は安心を与えています。大部分において、RDBMSシステムは安定的で、リッチな機能があります。比較して、多くのNoSQL代替は、多くの主要機能がこれから実装されるプロダクション前の状態にあります。 技術的な最先端に生きることは、多くの開発者にとってエキサイティングなことですが、企業は相当に警戒してそれに接近するべきです。 

2:サポート
   企業は、仮に主要システムに障害が起きた場合に、タイムリーで有能なサポートを得ることができるという安心を望みます。 対照的に、多くのNoSQLシステムはオープンソースプロジェクトであり、通常、それぞれのNoSQLデータベースに対してサポートを提供するひとつかふたつの企業があるものの、これらの企業は、たいてい、オラクル、マイクロソフトやIBMのようなグローバル展開や、サポートのリソース、信頼性の無い小さなスタートアップ企業です。

 3:分析とビジネスインテリジェンス
  NoSQLデータベースは、最近のWeb2.0アプリケーションのスケール要求に合うよう進化してきています。結果として、それらの機能セットのほとんどは、これらのアプリケーションの要求に基づいています。しかし、あるアプリケーションのデータは、典型的なWebアプリケーションの挿入-読み出し-更新-削除というサイクルを超えたビジネスに価値があります。これらの効率性と競合性、そしてビジネスインテリジェンス(BI)を改善する企業データベースにある企業の鉱山情報は、すべての中堅、大企業にとっての主要なIT課題です。 NoSQLデータベースはアドフォッククエリや分析への容易性はほとんど提供しません。単純なクエリでさえ、かなりのプログラミング専門性を必要としますし、普通に利用されるBIツールはNoSQLへの接続性を提供しません。 やや助かるのは、HIVEやPIGといったHadoopクラスター、またはおそらく結果的に他のNoSQLデータベースにあるデータへの簡単なアクセスを提供するようなソリューションが現れてきたことです。 

4:管理
  NoSQLにとっての設計ゴールは、全く管理しないソリューションを提供することかもしれません。しかし、最近の現実はそのゴールに全くもって足りていません。今日のNoSQLはインストールするために多くのスキルや維持するために多くの努力を要します。 

5:専門性
   RDBMSのコンセプトやプログラミングを熟知した開発者は、世界中、そしてあらゆるビジネス領域に文字どおり数百万います。対照的に、ほとんどすべてのNoSQL開発者は、学習モードです。この状況は、時間とともに自然と解決するでしょう。しかし、いまのところ、NoSQL専門家よりも、経験豊かなRDBMSプログラマーや管理者を見つけることのほうが、はるかに簡単です。 

結論
  NoSQLデータベースは、ますますデータベースのランドスケープの重要な部分になりつつあります。そして、適切に利用されたときには、本物の利益をもたらすことができます。しかしながら、企業はこれらのデータベースにある合理的な制約と課題を完全に認識するという慎重さを持って進むべきでしょう。(以上、翻訳)

  いかがでしたでしょうか。前半の優位点はNoSQLの擁護派の方々の声が大きくなるにつれ、これからさらに目立つようになる主張だろうと思います。一方の、チャレンジの部分は、そのとおりと思う部分もありますし、その課題をクリアしようとしているとお伝えしたい気持ちもありますが、このようなフェアな視点が大事だと思い、ご紹介いたしました。ご参考になれば幸いです。