BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Raven, .NET用ドキュメント データベース

Raven, .NET用ドキュメント データベース

原文(投稿日:2010/05/19)へのリンク

Raven は、.NET/Windows向けのスキーマの無い、LINQが使えるドキュメント データストアである。 Ravenは、大規模なwebアプリケーションに必要なパフォーマンスとスケーラビリティのニーズを解決する非SQL、非リレーショナルなソリューションである。

Ravenは、あらゆる種類のデータを JSON ドキュメントとして保存でき、その内容に固有のスキーマは、不要である。すなわち、データは、以下の シナリオにあった任意のフォーマットを持つことができる:

  • Web関連データ、ユーザ セッション、ショッピングカートなど- Ravenのドキュメントベースの性質から、単一のリモートコールでリクエストの処理に必要なすべてのデータを読出したり、保存したりできる。
  • 動的なエンティティ、ユーザがカスタマイズ可能なエンティティ、非常に多数のフィールドを持ったエンティティなど-Ravenのスキーマ無しの性質から、リレーショナルモデルを実装するのに苦労する必要がない。
  • 永続性ビューモデル、すべてのリクエストに対してゼロからビューモデルをその都度、作成するのではなく、ビューモデルの最終型をRavenに保存できる。このお陰で、計算が減り、リモート呼び出しが減り、その結果全体のパフォーマンスが改善される。
  • 大きなデータセット、Ravenの基盤をなす保存メカニズムは、(単一マシン上で)1テラバイトを超える規模に拡大できることが知られており、データベースの非リレーショナルな性質により、複数のマシンを跨いだデータベースの共有は、容易であり、Raven がネイティブにできることである。

次のコード片は、Ravenに保存されるドキュメントの例である:

{
     "PostTypeId":1,
     "Id":2321816,
     "Title":"Storing commercial files on the server",
     "AcceptedAnswerId":2321854,
     "LastActivityDate":"\/Date(1266953391687+0200)\/",
     "AnswerCount":3,
     "Comments":[
                 {
                 "Score":null,
                 "CreationDate":"\/Date(1266952919510+0200)\/",
                 "Text":"are they \"sensitive\" information?",
                 "UserId":"users/203907"              
      },
                 {
                 "Score":null,
                 "CreationDate":"\/Date(1266953092057+0200)\/",
                 "Text":"I wouldn't say they are sensitive information...",
                 "UserId":"users/200145"              
      }       
   ]
}

各ドキュメントは、それに関連したキーすなわちドキュメントIDを持っており、上の例では、そのキーは、“2321816”である。ドキュメント以外に、 Ravenは、メタデータやドキュメントに添付されたテキスト/バイナリファイルを保存できる。データストアからドキュメントを探し、呼び出すのに、Ravenは、インデックスを使う:

インデックスは、Linqクエリで、ドキュメント セットを操作し、効率的にクエリできるように、各ドキュメントからプロジェクションを生成する。インデックスは本質的に、Raven がバックグラウンドで実行するLinqクエリで、その結果は、永続的なストレージに保存される。その結果は、後で、効率的にクエリできる。

Titleによってpost(投稿)を整理するインデックスの例は:

from post in docs.Posts

where post.AcceptedAnswerId != null

select new { post.Title };

インデックスが生成された後、ユーザは、探しているドキュメントを入手するために、単にそれにクエリするだけである。

Raven は、HTTP APIClient API (C#)を持っている。 HTTP API は、JavaScript と HTMLだけを使うことを許し、Client APIとほぼ同じ機能を提供する。コマンドのいくつかは:

HTTP APIもまた1回のコールや リクエストの一括処理複数のドキュメントの取得 をサポートする。

Raven には3つのライセンシング オプションがある:

  • Raven DB Community –オープンソースプロジェクトのみに使え、サポートの無い無料エディション。
  • Raven DB Commercial – 商用ソフトウェア用の有料エディションで、1年間限定数のインシデントについてのサポートがある。
  • Raven DB Enterprise – 上記のエディションに似ているが、追加のフィーチャとして、無制限のマスタ/スレーブのレプリカ、フェイルオーバ、 RDBMSへの複製、そしてより良いサポートが受けられる。

両方の有料エディションには、月単位の購買か永久ライセンスがある。 Ravenは、Hibernating Rhinosによって作成された。Ayende Rahien氏によって創立されたコンサルタント会社である。

他のリソース: Raven DB webサイト, ソースコード リポジトリ, Ayende Rahien氏によるRaven DB –入門 ディスカッション グループ

この記事に星をつける

おすすめ度
スタイル

BT