時代はO-Rマッピングからkey-valueストアへ
Apache CouchDBに関するメモ書き。
#理解が不完全なので、後で正しく書く。
【元ネタ】
Apache CouchDB: The CouchDB Project
Web 時代の非リレーショナルデータベース: 第 1 回 Apache CouchDB の概要とインストール
Web 時代の非リレーショナルデータベース: 第 2 回 Apache CouchDB と Ruby on Rails を使って wiki アプリケーションを作成する
Web 時代の非リレーショナルデータベース: 第 3 回 Apache CouchDB で MapReduce フレームワークに基づく問いあわせを行う
MOONGIFT: ? Web2.0時代のニュータイプDB「CouchDb」:オープンソースを毎日紹介
CouchDBはこのように説明されている。
CouchDB はオープンソースのドキュメント指向データベース管理システムであり、アクセスには RESTful JSON (JavaScript Object Notation) API が使われます。
「Couch」という言葉は「Cluster Of Unreliable Commodity Hardware」の頭字語であり、CouchDB の目標を反映しています。
CouchDB の目標とは、極めてスケーラブルであると同時に、故障を起こしがちなハードウェア上で実行された場合でも高可用性と高信頼性を実現することです。
CouchDB は元々 C++ で作成されましたが、2008年4月、フォルト・トレランスを強化するために、このプロジェクトは Erlang OTP プラットフォームに移行されました。
CouchDBは関数型言語Erlangで作られた非RDBなDB。
RESTなWebAPIで問い合わせると、JSONが戻り値で返ってくる。
問い合わせ処理は MapReduce フレームワークに基づいて記述されているらしい。
使い道は、クライアントPCのユーザビリティ向上。
インターネットにつながっていないBTS、掲示板、Wikiでデータを更新して保存したい時に、クライアントのCouchDB に一旦保存して、そのデータは非同期にサーバーのRDBへ格納される。
この機能があれば、Webアプリは、画面ステータスをCouchDB に保存できるから、デスクトップアプリのように扱える。
多分、そういうイメージだと思う。
最近のWebアプリは、MVCモデルのうち、Viewの部分に技術革新が起きている。
最新バージョンのRailsが持つCookie Session Storeのように、非同期処理の機構をWebアプリに導入することで、Webアプリをデスクトップアプリのように、ネットワーク接続に無関係のまま扱えるようにしたい。
以前、友人から、最近の傾向としては、MVCモデルのうち、ViewでもAjaxやJasonのように、Viewの中にMVCモデルを作ろうとしているんですよね、と指摘してくれたことがあった。
多分、key-valueストアはその部分で使われるのだろう。
key-valueストアの良さは、関数型言語やMapReduceと相性がよいことだ。
CouchDB がErlangという風変わりな関数型言語で実装されているのは注目に値すると思う。
並列処理による処理の高速化(MapReduce)、分散システムによるフォールトレランス(耐障害性)などの特徴があるのだろう。
昨今のWebアプリの技術を鳥瞰してみると、RailsやSeasarでO-Rマッピングのインピーダンスマッチの問題は事実上解決されたと言える。
そして、技術革新の場所は、GoogleのMapReduce、Amazonのレコメンドエンジンなどの機能へ移っている。
これらはいわゆるデータマイニング。
膨大なトランザクションデータを大量のマシンパワーと関数型言語による並列処理で解析して、マーケティングや経営上の意思決定に生かす。
時代は、オブジェクト指向言語から関数型言語へ静かに移りつつあると思う。
| 固定リンク
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
「ソフトウェア」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- 実践した後に勉強するのがエンジニアの本来の道(2022.01.09)
コメント