データベースサーバのボトルネック改善のアーキテクチャ
Hadoopを理解したくて、ITアーキテクトvol.22を読んでいる。
Hadoopの前に、「アーキテクチャと性能」という記事があったので、その部分を先に読んでいる。
この記事が非常によくて勉強になっている。
その中に「スケーラブルなO/Rマッピング・アーキテクチャを求めて」という記事がある。
この記事を読んだ感想としては、
(1)データベースサーバで、複雑なデータ処理・加工を行うとデータベースサーバの負荷が高くなり、リソース占有などの問題から、スケーラビリティを確保できなくなる。
(2)(1)の対策としては、アプリケーションサーバで複雑なデータ処理・加工を行うようにする。
(3)(2)の実現方法として、アプリケーションサーバは、データベースから素のデータをもらい、それを加工する。これだけで、データベースサーバの負荷は減る。(O/Rマッピングであれば、コードがシンプルになるかな?)
(4)(2)の実現方法として、アプリケーションサーバ側でデータベースサーバから1次インデックスを、もらってさらに、2次インデックスを作成する。
(5)(2)の実現方法として、アプリケーションサーバ上の処理を並列化する。(Data Model Managementという技術を使用)
(6)(3)~(5)でアプリケーションサーバはそもそもスケールアウトが可能だからスケーラビリティは維持しやすいし、マルチコアなので、(5)の手法によりコアに対してもスケーラビリティを維持しやすいとのこと。
アプリケーションサーバ側にこれだけ処理をさせるとは知らなかったので、非常に勉強になった。
この記事を書かれた方の連載があるので、こちらもよく読んで勉強していこうと思う。
自分が担当していたシステムのSEさんとユーザ増加の見積もりの際に、「DBサーバよりAPサーバのほうが負荷が高い」という話になったが、こうした技術が用いられていたのかなあ・・・。
Hadoopの前に、「アーキテクチャと性能」という記事があったので、その部分を先に読んでいる。
この記事が非常によくて勉強になっている。
その中に「スケーラブルなO/Rマッピング・アーキテクチャを求めて」という記事がある。
この記事を読んだ感想としては、
(1)データベースサーバで、複雑なデータ処理・加工を行うとデータベースサーバの負荷が高くなり、リソース占有などの問題から、スケーラビリティを確保できなくなる。
(2)(1)の対策としては、アプリケーションサーバで複雑なデータ処理・加工を行うようにする。
(3)(2)の実現方法として、アプリケーションサーバは、データベースから素のデータをもらい、それを加工する。これだけで、データベースサーバの負荷は減る。(O/Rマッピングであれば、コードがシンプルになるかな?)
(4)(2)の実現方法として、アプリケーションサーバ側でデータベースサーバから1次インデックスを、もらってさらに、2次インデックスを作成する。
(5)(2)の実現方法として、アプリケーションサーバ上の処理を並列化する。(Data Model Managementという技術を使用)
(6)(3)~(5)でアプリケーションサーバはそもそもスケールアウトが可能だからスケーラビリティは維持しやすいし、マルチコアなので、(5)の手法によりコアに対してもスケーラビリティを維持しやすいとのこと。
アプリケーションサーバ側にこれだけ処理をさせるとは知らなかったので、非常に勉強になった。
この記事を書かれた方の連載があるので、こちらもよく読んで勉強していこうと思う。
自分が担当していたシステムのSEさんとユーザ増加の見積もりの際に、「DBサーバよりAPサーバのほうが負荷が高い」という話になったが、こうした技術が用いられていたのかなあ・・・。
"データベースサーバのボトルネック改善のアーキテクチャ" へのコメントを書く