NoSQLの世界
5
0
0
全文
(2) 解説. NoSQL の世界. 分類 KVS. 列指向. ドキュメント指向 グラフ指向. プロダクト Amazon SimpleDB Amazon Dynamo Azure Table Storage Tokyo Cabinet/Tyrant Voldemort Dynomite KAI Oracle Berkeley DB Membase Roma kumofs Flare Google Bigtable Apache Cassandra HBase Hypertable Apache CouchDB MongoDB Neo4J HyperGraphDB. 説明 Amazon Web Services のストレージサービス Amazon が自社サービスで利用.非公開 Windows Azure のストレージサービス mixi が自社サービスで利用.LGPL Amazon Dynamo のオープンソース実装.Apache License 2.0 Amazon Dynamo のオープンソース実装.独自ライセンス Amazon Dynamo のオープンソース実装.goo ホームで採用 Oracle が提供するプロダクト memcached 互換のプロダクト.Apache License 2.0 楽天が自社サービスで利用.GPLv3 えとらぼが自社サービスで公開.Apache License 2.0 GREE が自社サービスで利用.GPLv2 Google が自社サービスで利用.非公開 Bigtable のデータモデル +Dynamo の分散技術.Apach License 2.0 Hadoop に Bigtable に近い機能を提供.Apache License 2.0 Bigtable 互換のオープンソース実装.GPLv2 Erlang による実装.Apache License 2.0 C++ による実装.10gen によるサポートあり.AGPLv3 Java による実装.組込み型.AGPLv3 Java による実装.組込み型.内部で BerkeleyDB を利用.LGPL. 表 -1 NoSQL プロダクト一覧. ったデータモデルも存在するが,前述した NoSQL. るわけではない.プロダクトやデータモデルにもよ. の特徴を備えていないものもあり,NoSQL に含め. るが,NoSQL の多くは ACID トランザクションを. るかどうかは今でも議論が分かれている.. 持たない.そのため,厳密なトランザクションを必. ここで紹介したデータモデルやプロダクトは執筆. 要とするシステム(金銭の移動,受発注処理など)に. 時点のものであり,今後もますますその種類は増え. は不向きとされる.また RDB のように複雑なデー. ていくだろう.. タ操作は行えないため,NoSQL に格納したデータ を多角的に分析/集計することも難しい.. NoSQL の適用分野. そもそも,NoSQL は RDB を置き換えるもので はない.それぞれの長所/短所,メリット/デメリ ットを把握した上で,対象のシステムに合わせて適. NoSQL はすでにさまざまなシステムで利用され. 材適所,場合によっては併用して利用するものであ. ている.. る.先述した事例の多くも,主に大量データを扱い. たとえば,Google の Bigtable は Google の分散. ながら検索性能を高めるために,RDB を補完する. ストレージ・システムを支える重要な技術であり,. 形で NoSQL を採用している.. Google 検索はもちろん,YouTube/Google Maps/. では,NoSQL の中でも今,最も注目されてい. Google App Engine などでも利用されている.数. るデータモデルはご存知だろうか? KVS である.. PB(ペタバイト)にも達するデータを数万~数十万. 先述した事例もすべて,KVS あるいは KVS をベ. のサーバに分散格納しており,他社には真似できな. ースとした列指向の NoSQL に分類される.KVS. い圧倒的なスケーラビリティと高可用性を実現して. は,「Key(キー)」と「Value(値)」のペアでデータ. いる.国内でも,mixi の Tokyo Tyrant,GREE の. を保持するシンプルなデータモデルであり,シンプ. Flare,楽天の ROMA のように,インターネット. ルであるがゆえに拡張性/可用性が高く,運用コス. 関連企業を中心にそれぞれ独自の NoSQL を開発し,. トも低い点などが注目されている.. 積極的に採用を進めている.. NoSQL に対する理解を深めるために,次章では. ただし,すべてのシステムに NoSQL が適用でき. 列指向に分類される Cassandra を紹介する.. 1328 情報処理 Vol.51 No.10 Oct. 2010.
(3) Apache Cassandra の紹介 Cassandra は元々 Facebook 社で開発されていた プロダクトで,2008 年に OSS として公開,2009. Node0. Node1. Node2. 127.0.0.1. 127.0.0.2. 127.0.0.3. 図 -1 Cassandra のノード構成例. 年に Apache ファウンデーションに寄贈され,2010 年に Apache のトッププロジェクトに昇格した.執. • ThriftAddress / ThriftPort. 筆時点では,Facebook のほかに Digg や Twitter で. クライアントと通信するための自ノードの IP ア. も採用されている.Google Bigtable のような列指. ドレス/ポート. 向のデータモデルと,Amazon Dynamo の分散の仕 組みを合わせ持った NoSQL として,特に注目され. テスト時などに複数のマシンの用意が大変な場合は,. ているプロダクトである.先述した「NoSQL の多. ローカル環境で複数ノードを立てることも可能であ. くが備えている特徴」のほとんどを備えている上に,. る.詳細は筆者のブログ (0.7 をベースとした内. すべて Java で実装されているためあらゆる環境で. 容のため,設定ファイルの記述などは適宜置き換え. 実行可能であり,クライアントとの通信も Thrift. る必要がある)で公開しているので,そちらをご参. というフレームワークで主要な言語はすべてサポー. 照いただきたい.. 4). トされている. Cassandra を利用する場合のセットアップ方法は, 以下の通りである. ダウンロードは The Apache Cassandra Project. Apache Cassandra で NoSQL 体験. 3). から行う.執筆時点での最新バージョンは 0.6.3 で. この章では,Cassandra を通じて NoSQL を体験. ある.JVM がインストールされた環境であれば,. していただく.Cassandra の特徴を理解するために,. バイナリ版を展開後,ログやデータの保存先を設. まず図 -1 の構成で複数ノードを準備する.ここで. 定すればすぐに起動できる.詳細は Cassandra の. は,Node0/Node1 は双方向で認識し合っているが,. 公式サイトの「Getting Started」を参照していただ. Node1/Node2 は片方向(Node2 → Node1)からのみ. きたい.. 認識している.. 分散環境を構築する場合は,複数のマシン上に. 初 め に,Node0 と Node1 を 起 動 す る.Node0/. Cassandra を用意(1 つずつをノードと呼ぶ)し,環. Node1 はお互い認識し合っているため,この時点で. 境に合わせて各ノードの設定ファイルに以下の項目. Node0/Node1 のクラスタが構築される.. を設定する.. 続いて,Node0 に対してデータを挿入する.ここ では,Cassandra に内包されている CLI ツールを. • Seed. 利用する.. 自分以外のノードのホスト名または IP アドレス を,少なくとも 1 つ追加(すべてのノードを追加 しなくても,Gossip プロトコルにより最終的に すべてのノードがお互いに認識される) • ListenAddress / StoragePort 他のノードと通信するための自ノードの IP アド レス/ポート. 情報処理 Vol.51 No.10 Oct. 2010. 1329.
(4) 解説. NoSQL の世界. Keyspace Keyspace1. ColumnFamily Standard1. Key matsukaz hoge. Column. Value. name. matsukaz. blog. http://d.hatena.ne.jp/matsukaz/. name. hoge. age. 20. 表 -2 挿入されたデータ(イメージ). cassandra> set Keyspace1.. か存在しないため,データを保持しているノードが. Standard1['matsukaz']['name'] =. 停止してしまうとデータが消滅してしまう.そこで,. 'matsukaz'. 以下の項目が重要となる.. cassandra> set Keyspace1. Standard1['matsukaz']['blog'] = 'http://d.hatena.ne.jp/matsukaz/' cassandra> set Keyspace1. Standard1['hoge']['name'] = 'hoge'. • データの冗長性:同じデータをいくつのノードに 重複保持させるか.デフォルトは 1. • データの分割ルール:各ノードにデータを分ける 際の分割ルール.デフォルトはランダム.. cassandra> set Keyspace1. Standard1['hoge']['age'] = '20'. 上記の設定を適切に行えば,データが消滅する リスクを大幅に軽減できる.手軽に水平スケーラ. 上記の操作を行うと,Node0 に対して表 -2 の多. ビリティの確保と単一障害点の回避ができる点も,. 次元ハッシュのようなデータ構造でデータが挿入. Cassandra の大きな特徴と言える.. される. このように,Cassandra では RDB のテーブルと は根本的に異なる,列指向と呼ばれるデータモデル が利用されている.KVS よりもリッチなデータモ. NoSQL の世界 ∼システム開発に訪れる変化とは?∼. デルを提供しながら,明示的なスキーマを必要と. 前述した通り,NoSQL は RDB に置き換わる「銀. せず,動的にデータ構造の追加/削除ができる点. の弾丸」ではない.まず対象システムの要件を洗. が,列指向に分類される NoSQL の大きな特徴であ. い出し,RDB で実現できない要件なのかどうかで. る.ただし,同じ列指向の NoSQL であっても,プ. NoSQL の利用を判断する.NoSQL を利用すると. ロダクトによってデータモデルが異なる点(名称/. 判断した場合は,要件や CAP 定理(一貫性/可用. 階層/API など)は注意が必要である.. 性/分割耐性の 3 つの要素は同時に満たすことは. ここで Node1 に対して検索してみると,Node0. できないという定理)で重視する要素をポイントに,. と 同 じ 結 果 が 取 得 で き る.Node0/Node1 の ク ラ. データモデルやプロダクト,利用範囲(RDB との併. ス タ が 構 築 さ れ て い る た め で あ る. ま た, こ の. 用など)を検討する.. 状 態 で Node2 を 起 動 す る と,Gossip プ ロ ト コ ル. またシステム設計時も,以下の点を考慮する必要. と 呼 ば れ る 仕 組 み を 利 用 す る こ と で, 自 動 的 に. がある.. Node1 → Node0 の順に Node2 のノード情報が伝播 され,Node0/Node1/Node2 のクラスタが構築され. • スキーマ設計:データモデルに合わせた設計.. る.以降は,どのノードに対して検索しても,同じ. • CRUD 分析:RDB にはない,CAP 定理や BASE. 結果が取得できる. ただし,このままではデータが一部のノードにし. 1330 情報処理 Vol.51 No.10 Oct. 2010. トランザクションといった概念. • セキュリティ:RDB のプロダクトに比べて不十.
(5) 分なものが多く,扱うデータによって対策が必要. • バックアップ:データの保持形式に合わせたバッ. 最後に,こちらから NoSQL の利用方法を2点提 案したい.. クアップ方法.単一障害点がないプロダクトはバ ックアップしないという判断も. • 障害対応:多くのプロダクトは RDB とはリカバ リ方法が異なる. • 性能見積もり:スケールアウトでリニアに性能向. (1) Hadoop などを利用した分散処理時(データ分 析/ログ解析/データ収集など)のストレー ジとして 大量データを扱う場合にメリットを活かしやすい.. 上するプロダクトが多く,データ量などによる従. バックエンドでの利用のため,要求されるサービス. 来の性能見積もりとは異なる.. レベルは比較的低く,稼働中のシステムに対する影 響も少ない.. そもそもフォーマットから作らなければならない 設計書もあり,システム設計に与える影響は非常に. (2) 更新頻度が低い参照系データのストレージ として. 大きい.実装やテストについても,RDB と同様の. memcached などのキャッシュの仕組みが一般化. やり方はできないため,事前に検証が必要である.. しつつあるが,NoSQL を利用するだけで十分な性. ここまで挙げてきたポイントをすべて考慮す. 能を提供できる可能性がある.機能や利用方法を限. ることは難しい.プロダクト自体も未成熟な今,. 定することで,導入コストやリスクを低減できる.. NoSQL を正式採用するには時期尚早かもしれない. しかし,NoSQL を利用するメリットも確実にあ. 今後 NoSQL が広く利用されるようになれば,さ. る.まずはデータモデルとプロダクトの特徴を押さ. らなる利用方法も考えられるだろう.. えよう.そして,社内システムやバックエンドシス. NoSQL はバズワードのようにも考えられている. テムなどの限られた環境で利用してみてはいかがだ. が,そこには確かなデータモデルとさまざまなスト. ろうか? システム開発に必要なスキーマ設計や. レージ技術や分散技術が取り入れられている.今後. CRUD 分析,運用で必要なバックアップ方法など,. のシステム開発には,RDB と NoSQL,それぞれ. どのようなストレージであっても最低限必要なポイ. の良さを活かしたシステム構成が求められるように. ントを押さえておけば,スモールスタートで利用す. なるはずだ.. ることは可能である.そして徐々に利用範囲を広げ ることで,ノウハウの蓄積とともに上記で挙げたポ イントも考慮できるようになるだろう.. 参考文献,引用元 1) Publickey -「NoSQL」は「Not Only SQL」である,と定着する か?,http://www.publickey1.jp/blog/09/nosqlnot_only_sql. html 2) NoSQL Databases,http://nosql-database.org/ 3) http://cassandra.apache.org 4) http://d.hatena.ne.jp/matsukaz/ (平成 22 年 7 月 31 日受付). 松下雅和(正会員)[email protected] 2001 年早稲田大学社会科学部卒業.中堅 SIer を経て,2005 年に (株)オープンストリーム入社.現在に至る.. 情報処理 Vol.51 No.10 Oct. 2010. 1331.
(6)
関連したドキュメント
この設定では、管理サーバ(Control Center)自体に更新された Windows 用の Dr.Web Agent のコンポ ーネントがダウンロードされませんので、当該 Control Center で管理される全ての Dr.Web
ひかりTV会員 提携 ISP が自社のインターネット接続サービス の会員に対して提供する本サービスを含めたひ
第 1 項において Amazon ギフト券への交換の申請があったときは、当社は、対象
サーバー費用は、Amazon Web Services, Inc.が提供しているAmazon Web Servicesのサーバー利用料とな
Scival Topic Prominence
'BOM for Windows Ver.8.0 インストールマニュアル'では、BOM for Windows
必要な情報をすぐ探せない ▶ 部品単位でのリンク参照が冊子横断で可能 二次利用、活用に制約がある ▶
「系統情報の公開」に関する留意事項