現代のアプリケーションは、Java、JavaScript、Python、C#などのオブジェクト指向言語で開発されます。これらの言語では、データ構造をデータとコード(属性とメソッド)を含む「オブジェクト」として扱います。このようなデータの扱い方はRDBとは大きく異なるために、データベースとアプリケーションプログラミングの間でインピーダンスミスマッチが発生します。
これを回避する策に「ORM(Object-Relational Mapping:オブジェクト関係マッピング)」があります。しかし残念ながらこの手法では、オブジェクト内のデータの興味深い部分を保持できません。データを取り出してバラバラにしてしまう上、処理のオーバーヘッドが増える課題も残ります。
一方のNoSQLデータベースは、構造が柔軟なためにこのような問題が発生しません。データベース内のデータに合わせたモデリングができ、業務的な観点から論理的に表現することもできます。
従来のリレーショナルアーキテクチャでこれを行うならば、パフォーマンスが損なわれ、またコードのバグが増える可能性もあります。今日望まれるスピーディなアプリケーション開発サイクルでは、ユーザーはインタラクティブ(対話式)かつ対応性の高いやりとりを求めています。リレーショナルモデルはこれにもうまく適応できません。
だから開発者は、リレーショナルモデルのミスマッチの回避策を探す代わりに、より具体的でパフォーマンスが高速なNoSQLデータベースのような新しいモデルを受け入れ始めているのです。
ここまでの説明で、RDBが抱えている課題、そして現代のデータ問題の解決に、従来のテクノロジーだけを使い続けるのは無理があるということを分かっていただけたでしょうか。こうした問題に対する新しいアプローチがNoSQLデータベースです。
次回は、NoSQLデータベースはどのような問題を具体的に解決しようとしたのか。そのアプローチやベストプラクティスを解説したいと思います。
マークロジック株式会社日本法人代表。ソフトウェア開発ならびにwebテクノロジーに関して25年以上の経験を持ち、さまざまなエンジニアリング、コンサルティング、管理職などの要職を歴任。前職はSilicon Graphics、E*TRADE Financial、Blue Martini Software(日本法人代表取締役)など。カーネギーメロン大学卒(コンピュータサイエンス専攻)
Copyright © ITmedia, Inc. All Rights Reserved.