RavenDBでキーとしてURLを使用する最良の方法は何ですか?
残念ながら、アイテムを更新するセマンティクスはドキュメントでは明確ではありません。キーがバックスラッシュで終わる場合、それは常に挿入です。そうでない場合、キーがすでに存在する場合は更新である可能性があります。
ただし、URLはスラッシュで終わる可能性がありますが、RavenDBはキー生成に終了スラッシュを使用します
RavenDBは、IDの概念もサポートしています。たとえば、IDを連続させる必要がある場合などです。エンティティに文字列Idプロパティを作成し、スラッシュ(/)で終わる値に設定することで、エンティティのキープレフィックスとして使用するようにRavenDBに指示できます。そのプレフィックスの後に次に使用可能な整数IDが続くと、SaveChanges()を呼び出した後のエンティティのIDになります。そして、そのスラッシュは再構成できません。したがって、実際にはそれを「サポート」しませんが、強制します。
編集:同じRavenDBドキュメントページに次のように記載されていますが、これは観察された動作に対応していません。
想像できるように、ドキュメントに任意のIDを割り当てることができます。すべてが正常に機能しますが、カスタム生成されたIDを持つドキュメントの数が非常に多い場合(数百万のドキュメント)、ある種のIDがパフォーマンスの問題を引き起こす可能性があることに注意する必要があります。
オプションは次のとおりです。1。URLを変更して終了スラッシュを削除します2.URLをURLエンコードします(RavenDBメンテナーによって提案されます)3。スキーマを変更し、データベースで生成されたIDを使用します
ほとんどの場合、オプション1は安全です。オプション2を使用すると、キーが読み取れなくなります。さらに、キーを機能させることができませんでした(RavenDBまたは私のコードのバグである可能性があります)。オプション3は、スキーマを不必要に複雑にしているようです。
一般的に、最善の行動方針は何でしょうか?