2

私はravendbを初めて使用しますが、2つの質問があります。

  • そこには約65k個のオブジェクトが格納されていますが、返されるのは128個だけです。なぜそうなるのでしょうか。(Robert P. OpenInitializedStore拡張機能を使用)

    let printStoreData() =
        use store = DocumentStore.OpenInitializedStore() 
        use session = store.OpenSession() 
        let qs = session.Query<DataModel.simplequote>()
        printfn "%A" (qs.ToList() |> Seq.length )
    
    printStoreData()
    
  • LinqとFsharp、f#クエリ式とLinq、クエリ式とRavendbの関係についてはかなり混乱しています。パワーパックにLinqが含まれていることもあります。誰かが私に何がどこに合うかについての高レベルの見解を私に与えることができますか、またはそうする文書を指し示すことができますか?

4

1 に答える 1

2

デフォルトでは、Raven DBページの結果により、誤って大量のデータを返したり、システムに過負荷をかけたりするのを防ぐことができます(これは、SQLベースのシステムのパフォーマンス問題の一般的な原因です)。残りの結果を取得するには、Seq.skipとSeq.takeを使用する必要があります。(これは、RavenDBではインデックスが非同期で処理されるため、結果が保存された直後に利用できないためである可能性もありますが、この場合、これが問題の原因である可能性は低いと思われます)。

質問の2番目の部分に答えるには、C#には式ツリーがあり、実際のコードを生成する代わりに、コンパイラーによってC#linq式を構文ツリーに変換できます。RavenDBはこれを利用して、linq式として表現されたクエリをRavenDBに対して実行できるクエリに変換します。F#には、引用符と呼ばれるC#の式ツリーと同様の機能があります。引用符は、引用符で囲まれたコードを表すために、さまざまなF#固有のタイプを使用します。多くの点で、引用符はC#の同等のものよりも強力ですが、RavenDBはほとんどのツールと同様に、F#の引用符ではなくC#式ツリーを使用します。これを回避するために、F#の引用をC#式ツリーに変換できるF#パワーパックの一部であるライブラリがあります。

パワーパックを使用して引用符をC#式ツリーに変換することは、限られた成功しか収めていません。引用符や式ツリーに依存しないravendbの「luceneapi」を使用していることがわかりました。

于 2012-04-30T11:47:03.783 に答える