もう一つNET上のドキュメントデータベースRaven

5554 ワード

Ravenは、1つの用途である.NET/WindowsのLINQベースの弱いフォーマット(shcema-less)ドキュメントデータストレージサービス.Ravenは別のNoSQLではなく、リレーショナルソリューションではなく、大規模なWebアプリケーションのパフォーマンスと拡張性の要件を解決したいと考えています.
Ravenは、特定のフォーマットをこれらのコンテンツに押し付けることなく、すべてのタイプのデータをJSONドキュメントに保存することができます.これは、データが任意のフォーマットで保存できることを意味し、特に以下のシーンに適している.
  • とWeb関連のデータ、例えばユーザーSession、ショッピングカートなど--Ravenはドキュメントの特性に基づいて、個別のリモートコールで処理する必要があるすべてのデータを取得し、保存することができることを意味します.
  • 動的エンティティ(ユーザー定義エンティティ、オプションフィールドが多数含まれるエンティティなど)は、Ravenフリーフォームの機能によって、リレーショナル・モデルの実装に苦労する必要がないことを意味します.
  • 永続ビューモデル-リクエストのたびにゼロからビューモデルを再作成する必要がなく、Ravenに最終形式を直接保存できます.これにより、計算時間が短縮され、リモートコールの回数が短縮され、全体的なパフォーマンスが向上します.
  • ビッグデータセット--Ravenの下位ストレージメカニズムは1 Tを超える容量(単一マシン上)をサポートし、非関係型の特性により複数のマシンでデータベースを共有しやすくなり、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をインデックスとして投稿を整理します.
    from post in docs.Posts
    

    where post.AcceptedAnswerId != null

    select new { post.Title };


    このインデックスが作成されると、ユーザーは検索するだけで探したいドキュメントを得ることができます.
    Ravenは、HTTP APIおよびクライアントAPI(C#)を提供する.HTTP APIは、JavaScriptやHTMLしか使用できないプログラムにもアクセスできるようにクライアントAPIと一致した機能を備えています.次のコマンドがあります.
  • GET
  • PUT
  • POST
  • DELETE
  • PATCH

  • HTTP APIはまた、1つの呼び出しにおいて複数のドキュメントの取得またはバッチ要求の機能をサポートする.
    Ravenは3つのライセンス契約に基づいて発表した.
  • Raven DB Community – a free edition that can be used only for open source projects with no support
  • Raven DB Commercial – a paid-for edition for commercial software with support for a limited number of incidents/year
  • Raven DB Enterprise – similar to Commercial but has extra features like sharding, unlimited master/slave replicas, failover, replication to RDBMS, and better support.
  • Raven DB Community-無料バージョン、オープンソースプロジェクトのみ、テクニカルサポートなし
  • Raven DB Commercial-有料のビジネスソフトウェアで、イベントと年間制限のあるテクニカルサポート
  • を提供します.
  • Raven DB Enterprise-市販版と似ていますが、スライス、無限のプライマリ/レプリケーション、フェイルオーバ、RDBMSへのレプリケーションなどの追加の特性を備え、より良い技術サポートを提供しています.

  • 両方のビジネス版には、月次購読または長期ライセンスの選択があります.RavenはHibernating Rhinosによって開発され、Ayende Rahienによって設立されたコンサルティング会社です.
    その他のリソース:Raven DBサイトソースウェアハウス、Ayende Rahienによって作成されたRaven DB紹介ディスカッショングループAyendeブログ.
     
    原文住所:http://www.infoq.com/news/2010/05/Raven