2013/01/05

NoSQL CouchDBをSaaSにしたサービス: Cloudant

Cloudantという製品について調べてみた。

要約

CouchDBをサービスとして色んなクラウド上で展開出来るSaaS
自分でCouchDBをインストール&設定、冗長化をしたく無い人にはぴったりのサービス。
 
CouchDBのコミッターも多いらしいので、ほぼCouchDBと同じ機能だと考えてOK 

概要


  • Cloudantは Apache CouchDBで構築されている
    CouchDB: JSON形式のドキュメントでデータ保存、返却をするNoSQL
  • Data Layer as a Service(DLAAS?)

機能について

  • より深い解析: MapReduce機能
  • 全文検索: Lucene互換のインデックス機能
  • データ・レプリケーション: 非同期な処理や接続が断たれた場合も対応可能
  • 各CloudantドキュメントにはユニークなID("_id")が付いてい
  • ドキュメントの値は、数字、文字列、Boolans、オブジェクト、配列、添付(ビデオ、イメージ、それ以外も)
  • ドキュメントのサイズに制限はない
  • HTTP経由でRESTfulなAPIでアクセスが可能
  • データベースのインデックスはMapReduce機能を使って構築されているので、クエリー処理や解析が素早く行なえる

冗長性・インフラについて


  • Cloudantではメインのクラウドをどの物理プラットフォームを使うか、どのリージョンで使うかを選択する
  • 選べるクラウド(リージョン):SoftLayer/Windows Azure/AWS/Rackspace/Joyent
  • Cloudantは自動で全世界でレプリケーションを行なう(エンドユーザーから見るとレイテンシーが低い)
  • Cloudantはクラスターサーバ(ノード)間で分割して保存する。データ分散がされている

サービス特有の内容

  • マルチテナントが嫌な場合は専有テナントもあり
  • 平行クラスター・フレームワークをErlangで開発
  • ノードサーバにデータを増やす機能、なので作った(CouchDBに無いらしい??)




Cloudantスケール機能の勘所

  • 読み込みのロード時間 vs 書き込みのロード時間
  • 単純なドキュメントがどのぐらいクエリーが発生するのか vs複雑なMapReduceなクエリーが全ノード間で発生するのか
  • ディスク浸達性
  • キャッシュ利用
  • CPUコア利用

ここまで調べておいて、CouchDBを調べた方がよく分かると思ったのは内緒だ。