データベースのスケーラビリティをどうやって向上させるか

2011年6月22日

これまでPublickeyではデータベースのスケーラビリティに関するさまざまなトピックを取り上げてきました。クラウド時代にはスケーラブルなデータベースのニーズがこれまでになく高まっているためです。

この記事では、これまで取り上げてきたデータベースのスケーラビリティに関する技術を少しまとめて紹介しようと思います。

従来のリレーショナルを拡張

従来のリレーショナルデータベースに対して、技術的工夫を凝らすことでスケーラブルなデータベースを実現しようというアプローチにも、さまざまなものがあります。

データベース研究者の大御所、マイケル・ストーンブレイカー氏は、リレーショナルデータベースは決して遅くないと主張。リレーショナルデータベースが遅い原因はロック、ラッチ、リソース管理にあるとして、それらを極力排除した「VoltDB」を開発しています。

Twitterのフレームワーク「Gizzard」は、MySQLをバックエンドにシャーディング(Sharding)を行い、1つのデータベースをハッシュなどを使って複数の部分に分けて分散して格納し、さらにデータのレプリケーションを行うことで耐障害性を向上させています。

MySQLのストレージエンジンをクラウド対応にすることでスケーラブルにした、というのが、Amazonクラウド上でデータベースサービスを提供する「Xeround」です。

SSDに最適化したリレーショナルデータベースをスクラッチから開発することで性能向上を実現しようというのが「RethinkDB」

ソフトウェアとハードウェアを密に統合することを徹底的に追求したのが、オラクルの「Exadata」。最新CPU、大容量メモリ、Flashストレージ、Infinibandなど、あらゆる富豪的アプローチのかたまりです。オラクルの中の人からは「実質、インデックスを付ける必要がないほど速い」との発言を聞いたことも。

インメモリデータベース

ハードウェアの性能向上をリレーショナルデータベースの性能向上に活かす点で、最近注目されているのが、データをメモリ上に保持するインメモリデータベースです。Publickeyで最初に取り上げたのは、オラクルの「TimesTen」でした。

オラクルにはインメモリデータベース的な分散オブジェクトキャッシュとも呼ばれる「Coherence」もあります(追記:Coherenceはインメモリグリッドに分類すべきだったようです)。

最近、インメモリデータベースとして登場したのが、SAPの「HANA」。HANAはインメモリ技術だけでなく、カラム型データベースやデータ圧縮なども組み合わせています。

そのほかインメモリデータベースには、IBMの「solidDB」オープンソースの「Redis」などもあります。

メモリキャッシュ、インメモリデータグリッド

データベースの手前に巨大なキャッシュを置くことで性能向上を実現する手法もよく使われています。

Facebookは、Memcachedを用いてデータベースのデータを積極的にキャッシュに置くことで、大規模なスケーラビリティを実現。

しかもMemcachedには300テラバイトものデータを置いているとのこと。

最近になって登場しているのがインメモリグリッドと呼ばれる分野の製品。VMwareが買収したGemStoneが、そのインメモリデータグリッドの1つ。

レッドハットもこの分野の製品を「JBoss Enterprise Data Grid」として最近発表しました。データベース製品を持たない2社が同様の戦略を採用している点が興味深いですね。

カラム型データベース

大規模データ分析の分野で最近頭角を現しているのが、カラム型データベース技術(カラムナデータベース、列指向データベース)。

カラム型データベースの代表はサイベースの「SybaseIQ」。前述のSAPの「HANA」もカラム型データベース。ヒューレット・パッカードが買収した「Vertica」もカラム型データベースで、ヒューレット・パッカードはいまVerticaのアプライアンスを開発中です。おそらくオラクルのExadataに対抗するようなものになるのではないでしょうか。

NoSQL

クラウドのような分散アーキテクチャに対応したスケーラブルなデータベースが、NoSQLと呼ばれる分野のデータベースで次々に登場し始めました。

グーグルの「BigTable」、アマゾンの「SimpleDB」などがよく知られています。

オープンソースで開発されている「Cassandra」も、NoSQLを代表するソフトウェアです。

広い意味でのNoSQLとしては、Hadoop、HBaseも非常に注目されているソフトウェアです。

リレーショナルデータベースにNoSQL的な機能を組み込んでスケーラビリティを実現しようという実装もあります。

難しくなる「どんなデータベースを選ぶべきか」

データベースというのは、一度システムが稼働し始めると途中で変更することが非常に困難なコンポーネントです。それゆえに、そのシステムにとってどのようなデータベースがもっともふさわしいのか、設計時に慎重に検討する必要があります。

かつて、データベースの選択といえばほぼリレーショナルデータベース一択で、あとはインデックスとチューニングとハードウェア性能で頑張るしかなかったのですが、ここで見てきたようにデータベースの選択肢はここ数年で飛躍的に拡大しました。選択肢が増えたことでシステム設計の自由度が高まった面もありますが、一方で本当に適切なデータベースを選ぶのが難しい時代になってきたのかもしれません。

このエントリーをはてなブックマークに追加
Bookmark this on Delicious

タグ : NoSQL , カラム型データベース , リレーショナルデータベース

≫次の記事
Firefox 5が前バージョンからわずか3カ月で登場。ソフトウェアは小刻みに進化するものへ
≪前の記事
HTML5対応を促進するのはモバイルデバイスの多様化ではないか

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


新サイト「Publickey Topics」始めました!


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
RSSリーダーで : Feed





アクセスランキング - 過去7日間

  1. Googleがついにアジア(のどこか)にGoogle Compute Engineのデータセンター設置を発表。管理画面も日本語対応
  2. マイクロソフト、VMwareの仮想マシンをHyper-VとAzureへマイグレーションできる「Microsoft Virtual Machine Converter 2.0」無償公開
  3. Dockerのための軽量OS「Red Hat Enterprise Linux Atomic Host」、Red Hatが発表
  4. 国内PaaSはDBaaSとaPaaSの売上げが拮抗。シェア1位はセールスフォース・ドットコム、2位はAmazonクラウド。IDC Japan
  5. [PR]システムインテグレータがアーキテクチャ設計から導入支援まで提供すべき理由。グロースエクスパートナーズ
  6. フラッシュメモリを、ストレージではなくインメモリDBの「メモリ」として使う。Fusion-ioがSQL Server 2014のインメモリDBに対応発表
  7. Gitクライアントの「SourceTree for Windows」、日本語化された最新版が無償公開、アトラシアン
  8. [PR]システム納品後も、Excelで帳票画面を自由にカスタマイズし放題。新米プログラマでも鮮やかな帳票開発! VB-Report 8
  9. IT系上場企業の平均給与を業種別にみてみた 2013年版 ~ パッケージベンダ、SIer、ホスティング企業編
  10. x86サーバ初、稼働中にプロセッサやメモリを動的に増減できる「Dynamic Reconfiguration」搭載、富士通が基幹サーバ「PRIMEQUEST 2000シリーズ」発表
  11. [速報]Java 8が正式公開。ラムダ式、新しい日時API、JavaFX8など。NetBeans 8.0も登場
  12. Immutable Infrastructureはアプリケーションのアーキテクチャを変えていく、伊藤直也氏(前編)
  13. Google、新しいSDNベースのネットワーク仮想化基盤「Andromeda」をクラウドに投入。ネットワークの高速化を実現
  14. Publickey Smar
  15. IBM、新開発のPaaS「BlueMix」をベータ公開。Java、Node.js、Ruby実行環境とMySQL、MongoDB、MapReduce、モバイルBaaSにGitホスティング、Web開発環境など盛りだくさんの対応。IBM Pulse 2014

PR: システム納品後も、Excelで帳票画面を自由にカスタマイズし放題。新米プログラマでも鮮やかな帳票開発!!


Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus