問題タブ [ravendb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - RavenDBで操作を設定する
ravendbのセット操作に関するこの記事を読みましたが、C#を介してドキュメントのセットを更新する方法を正確に示していませんでした。特定の基準に一致するすべてのドキュメントのフィールドを更新したいと思います。言い換えれば、このC#を使用して、より効率的にしたいと思います。
c# - リレーショナルデータを一括アップロードしてRavenDBの集計に変換するにはどうすればよいですか?
特にリレーショナルデータから集計に変換する場合に、リレーショナルデータをRavenDBに効率的に一括挿入する方法について頭を悩ませようとしています。
2つのテーブルの2つのダンプファイルがあるとしましょう:Orders
とOrderItems
。それらは大きすぎてメモリにロードできないため、ストリームとして読み取ります。各テーブルを読み、各行に対応するドキュメントをRavenDBに作成できます。これは、バッチリクエストを使用した一括操作として実行できます。これまでのところ簡単で効率的です。
次に、これをサーバー上で変換し、を取り除き、OrderItems
それらを親Order
ドキュメントに統合します。何千もの往復なしでこれを行うにはどうすればよいですか?
答えは、セットベースの更新、ライブプロジェクション、および非正規化された更新の間のどこかにあるようですが、どこにあるのかわかりません。
c# - RavenDBPersistenceプラグインを使用したJOliverのEventStoreの配線
JOliverのEventStoreライブラリを評価しています。特に、EventStoreの永続化エンジンとしてRavenDBを使用しようとしています。EventStoreにはこのためのプラグインが付属しています。注:データベースは空で、インデックスはありません(デフォルト以外)。
店舗の配線には、以下を使用しました。
ただし、プログラムを実行すると、「RavenCommitByRevisionRange」インデックスが見つからなかったことを示す例外が発生します。
EventStoreコードを掘り下げると、RavenPersistenceEngineが初期化されていないことが問題だと思います。初期化コードは、必要なインデックスをRavenDBサーバーにインストールします。
SQLサーバー側では、サンプルプロジェクトの配線コードに、「InitializeStorageEngine」という拡張メソッドの呼び出しが示されていることに気付きました。この拡張メソッドは、クラス「PersistenceWireup」に関連付けられています。ただし、RavenDB永続性をワイヤリングするために使用している拡張メソッドは、クラス「Wireup」を返します。そこで、ワイヤーアップコードの一部を新しいPersistenceWireupインスタンスにラップし、次のように「.InitializeStorageEngine()」を呼び出すことができました。
これはうまくいきます!これで、RavenDBデータベースに必要なインデックスが含まれるようになりました。
だから...私の質問:「。UsingRavenPersistence(...)」は単に「Wireup」ではなく「PersistenceWireup」のインスタンスを返すべきではありませんか?または、EventStoreでRavenDBの永続性を接続するためのより良い方法はありますか?
c# - RavenDbで値オブジェクトの親エンティティオブジェクトを参照します
私は最近RavenDBで遊んでいますが、少し面倒なことがあります。
一連の値オブジェクトを持つエンティティオブジェクトがあります。
Bar型のオブジェクトをメソッド/クラスに渡したいが、ある時点で親エンティティを参照したい場合が何度もあります。NHibernateの世界では、1 .. *の関係で構成すると、非常に簡単です。
ただし、RavenDbはそれがあまり好きではないため、次のようなメソッドを作成する必要があります。
それよりも
RavenDbでこれを達成する方法はありますか?
RavenDb(および一般的なドキュメントデータベース)は、エンティティの処理について異なる考え方を促進していることを認識しています。これが、リレーショナル/正規化された世界で長時間過ごしている場合は、コードの構造化方法を誰かが説明できます。より多くのドキュメントデータベースの方法で?
c# - RavenDBでIDで注文する
RavenにIdフィールドによるクエリの結果を整数であるかのように順序付ける方法はありますか?したがって、このクエリを実行すると、「cars/2」は「cars/11」の前に表示されます。
ravendb - JSON オブジェクトを型 'Raven.Json.Linq.RavenJObject' に逆シリアル化できません
Raven.Client.Lightweight-3.5 バージョン 1.0.0.0 を使用して、.NET 3.5 と 4 の両方をビルドしようとしました。
次のコードを実行すると、上記のエラーが発生します。
例外トレース:
nosql - RavenDB (または他のドキュメント指向データベース) のモデリングに関する質問
経験豊富な人 (または私よりも優れたアイデアを持っている人) が、私の特定のモデリング シナリオにどのように取り組むのか疑問に思っています...
典型的な "Category -> SubCategory -> TertiarySubCategory" シナリオがあり、それを正しくマッピングしているかどうかわかりません。レイヴンはこれに適しているように見えるので、これを MVC ルートに直接マッピングしています。最後のカテゴリ (1 番目、2 番目、または 3 番目のレベルにある可能性があります) の下には、カテゴリのそのレベルのみに関連付けられたアイテムのリストがあります。したがって、次のようなものがあります。
単一レベルのカテゴリ: '/Politics/'
第 2 レベルのカテゴリ: 「政治/人々」または「政治/ウェブサイト」
3 段階のカテゴリ: 「スポーツ/プロ/バレーボール」または「スポーツ/大学/フットボール」
従来の RDBMS では、これは主キー/外部キー + いくつかの結合によって簡単に実現できます。
私が読んだことから、「sports/pro/volleyball」のURIまたはキー全体を、その下にあるアイテムのリストに保存する必要がありますか?
すなわち -
それとも、実際のカテゴリ クラスのリスト アイテム メンバーを作成する必要がありますか? 各アイテムには独自のコメントのリストがあります...つまり、すべてがRaven内の単一のドキュメントに保存されます-つまり-
.....ここで、最初の猫、つまり「/sports/pro/volleyball/」を引っ張ると、必要なものはすべてその下にあります
{ …………など …… }
ここで、Items コレクションを反復処理できます。これはコメントのコレクションです。これは熱心な読み込みを使用しますか? 1 つのカテゴリ アイテムに 100 万件のコメントがあった場合はどうなりますか? メイン カテゴリを読み込むと、100 万件のコメントもすべて読み込まれます!?!?
ご協力いただければ幸いです。この例/質問が不明確な場合は申し訳ありません...必要に応じて何かを明確にしようとします。再度、感謝します!
data-modeling - RavenDB のようなドキュメント指向のデータベース システムで階層的かつリレーショナルなデータをモデル化するにはどうすればよいでしょうか?
ドキュメント指向のデータベース (特に RavenDB) には非常に興味をそそられており、少し試してみたいと思っています。しかし、リレーショナル マッピングに慣れている私は、ドキュメント データベースでデータを正しくモデル化する方法を考えていました。
C# アプリケーションに次のエンティティを含む CRM があるとします (不要なプロパティを除外します)。
Company
連絡先とタスクには会社以外の目的がなく、ほとんどの場合、タスクまたは連絡先のクエリには関連する会社に関する情報も表示されるため、 これをすべてドキュメントに入れることを考えていました。
問題はTask
エンティティに付属しています。ビジネスでは、タスクが常に会社に関連付けられている必要がありますが、必要に応じてタスクにも関連付けられているとします。
リレーショナル モデルでは、特定のタスクのタスクのみを表示し ながら、Tasks
テーブルがありCompany.Tasks
、会社のすべてのタスクに関連付けられているため、これは簡単です。Contact.Tasks
これをドキュメント データベースでモデル化するために、次の 3 つのアイデアを考えました。
タスクを別のドキュメントとしてモデル化します。ほとんどの場合、会社や連絡先を見ると、タスクのリストを見たいと思うので、これは一種のアンチドキュメントデータベースのように思えます。
連絡先に関連付けられていないタスクをリストに保持し、連絡先に関連付けられた
Company.Tasks
タスクを個々の連絡先のリストに入れます。これは残念なことに、会社のすべてのタスクを表示したい場合 (おそらく大量になるでしょう)、会社のすべてのタスクと個々の連絡先のすべてのタスクを結合する必要があることを意味します。また、連絡先からタスクを会社に移動する必要があるため、連絡先からタスクの関連付けを解除したい場合、これは複雑だと思いますすべてのタスクを
Company.Tasks
リストに保持します。各連絡先には、関連付けられているタスクの ID 値のリストがあります。Task
これは、id 値を手動で取得する必要があり、連絡先のエンティティのサブリストを作成する必要があることを除けば、良いアプローチのようです。
ドキュメント指向データベースでこのデータをモデル化するための推奨される方法は何ですか?
asp.net-mvc-3 - リポジトリモデルを使用したMVC3およびNinjectを使用したリクエストごとのRavenDBセッション
真のsession-pr-request動作でRavenDBIDocumentSessionをリポジトリに取り込むために使用する正しいメカニズムに関するアドバイスを探しています。
これはグリーンフィールドMVC3アプリケーションであり、NuGetを使用してNinject/Ninject.MVC3を取得しました。RavenDBは外部サーバーで実行されています(つまり、埋め込まれていません)。
適切なリポジトリを返すようにNinjectモジュールを設定し、リクエストごとにセッションを設定しました。
しかし-MVC3が各アクションメソッドのコントローラーをインスタンス化するというのは本当ですか?その場合、MVC3 / Ninjectにリポジトリと必要なセッションを注入させるだけで、問題ありません。
ただし、コントローラーが複数のリクエストで再利用される場合、以前のリクエストからぶら下がっているリポジトリが古いセッションを使用して破棄される可能性があるため、これは機能しない可能性があります。
私はこれを行うためのいくつかの方法を見てきました-上記は基本的な方法です。また、各リクエストの開始時にIoCコンテナから新しいセッションを取得するActionFilterAttributeのようなことを試みましたが、その場合、どこに配置する必要がありますか?
リポジトリには、コンテナから現在のセッションを毎回実際に取得するSessionプロパティが必要ですか?これにより、リポジトリの実装とIoCコンテナの間に結合が追加されますが、それ以外の場合は機能するはずです。
これを行うための適切な方法は何ですか?かっこいい子供たちはどうやってやってるの?どんな助けでも大歓迎です!
collections - Ravendb-'親エンティティからコレクションエンティティを'選択'
特定のユーザーによって作成されたすべてのブログ投稿へのすべてのコメントを(すべての意図と目的で)投影するインデックスをレイヴンで作成しようとしています。現在、コメントのある投稿のみを返すマップステートメントを管理しています。
最後に、コメントをページングしたいので、一致するすべてのアイテムのフラットリストを取得する必要があります。
ありがとう