私はウェブサイトの記事をたくさん保存し、ユーザがシステムを通してこれらの記事を変更できるようにするウェブサイトのコンテンツ管理システムを作成しています。私は典型的なSQL Serverの開発者ですが、おそらくこのシステムをDocumentDBで実行できると思っています。
私たちはC#とWebAPIを使って読み書きを行います。私は、異なるデータアクセス技術をテストして、どちらが優れているかを確認しています。私はLing、Linq Lambda、SQL、Stored Procedureを試しています。私がPostman経由でテストすると、これらのクエリメソッドはすべて600ms〜700msの間に実行されているようです。たとえば、私のテストの1つは、簡単なGet http://localhost:xxxxxx/multilanguage/resources/1です。これには600ms以上かかるでしょう。これはわずか1kbの文書で、これまでのところ私のコレクションには5つの文書しか保存されていません。
私は尋ねたいことは、これよりもDocumentDBをより迅速に照会する方法があるかどうかということです。私が尋ねる理由は、前にSQL Serverで何か似たようなことをしているからです(リレーショナルテーブル用のクエリドキュメントではありません)。複数の結合されたテーブルのストアドプロシージャではるかに複雑なクエリは約300msかかるだけです。だから私はこれを行うためのより速い方法があるはずだと思います。
ご意見ありがとうございます!DocumentDBにはどのデータアクセス技術が優れているのですか
答えて
実装をスタブに変更すると、実際にはサーバーとクライアント(郵便配達員)間の接続時間をテストしているため、同じパフォーマンスが得られます。
できることはいくつかありますが、DocumentDBや他のNoSQLソリューションは標準のSQL Serverとは大きく異なる動作をすることに注意してください。たとえば、DocumentDBに使用可能なノードとRAMが多いほど、全体的にパフォーマンスが向上します。 Azure上のDocumentDBの開発インスタンスは、当然、本番インスタンスより少ないリソースを使用する予定です。 Azureはスケーリングを処理するので、それについて考える方法の1つは、実行するデータの量が増えれば増えるほどです。
つまり、あなたのアプリケーション全体で接続オブジェクトを共有しているとは思わないでしょう。これにより、データを取得するたびにスタートアップのペナルティを回避できます。 Performance Tipsを要約:
- 使用TCPコネクションの代わりに、HTTPSあなたは
- 使用
await client.OpenAsync()
同じ地域内DocumentDBに最初の要求 - 接続のレイテンシを起動時に一時停止を回避するために(場合心に留めておくことができますあなたはSelfLinksはチューンに
- 迅速なアクセスのためにキャッシュ
- あなたのページサイズをthaのように、地域全体でホスト)
- DocumentDB(それのスレッドセーフにアクセスするためにシングルトンを使用) 使用するデータのみを取得する
などの表索引ポリシーなど、より高度な文書データベースとNoSQLデータベースは、SQLデータベースとは動作が異なります。つまり、APIの仕組みについてのあなたの前提が間違っている可能性もあります。同様の概念をテストしていることを確認してください。 SQL Serverデータベース接続オブジェクトでは、トランザクションごとにオブジェクトを作成または破棄して、それらの接続を接続プールに戻すことができます。同じ方法でDocumentDBを処理すると、接続プールを使用しなかった場合と同じようなパフォーマンス上の問題が発生します。
DocumentDBが初めて出たとき、私たちはセルフリンクをキャッシュしていましたが、IDベースのルーティングを導入して以来、私たちはクライアントサイドを生成したりローカルに保持するIDからそれらを構築します。私たちは、IDベースのルーティングの使用によるパフォーマンスの低下は見ていません。 –
@LarryMaccherone、私はElasticSearchでより多くの時間を過ごしたので、私は自己リンクであなたの言葉を取っていきます。基本的なポイントは、NoSQLをテストして対話する方法がSQLデータベースを使用する方法と大きく異なることです。私は地域内のバックボーンが非常に高い帯域幅を持っていると確信しています。そのため、接続速度の問題はそれほど問題になりません。 –
- 1. Monotouchに使用するデータアクセス技術
- 2. Spring webflowは優れたポートレット技術の選択ですか?
- 3. これらのメモリ管理技術は、どのような状況で優れていますか?
- 4. これにはどの技術が選択されていますか?
- 5. ビデオストリーミング技術の技術
- 6. Visual Studio SDKウィンドウにはどの技術が使用されていますか?
- 7. オンラインのリアルタイムチャットアプリケーションにはどの技術が最適ですか?
- 8. Webチャットクライアントを作成する技術はどれですか?
- 9. レンダリングソフトウェアまたはハードウェアレンダリング技術がタイルされていますか?
- 10. はWinFormのフロントエンド技術ですか?
- 11. JavaScriptの演算子の優先順位の技術
- 12. Androidでどのウェブサービス技術を使用するのですか?
- 13. MicrosoftのCOMは優れた/有用な技術と考えられていましたか?
- 14. ブロガータイプのテキストエディタで使用される技術は何ですか?
- 15. C#:そのコードはどのような技術ですか?
- 16. 画像検索におけるスライディングウインドウ技術とスキャンウインドウ技術との違い
- 17. 技術的にs3n、s3aとs3の違いは何ですか?
- 18. Erlangトレース技術はどのように機能しますか?
- 19. ブラウザアプリケーションにはどの3D技術を使用しますか?
- 20. 「iframe sandbox」技術は安全ですか?
- 21. Javaミドルウェア技術とは何ですか?
- 22. ウェブ技術を使用して人の顔を生成するにはどうすればよいですか?
- 23. アプリケーションレベルのロードバランシング技術
- 24. サーバーのJavaEE技術
- 25. Nativescript PUSHの技術
- 26. エアプレイの技術ライセンス
- 27. A.nnotate.comの後ろにはどのような技術が使われていますか?
- 28. instagram、twitterのようなアプリを作るのにどのツールと技術が使われていますか?
- 29. どのような技術をリアルタイムアプリケーションを作成するには?
- 30. drupal 8バックエンドで使用するフロントエンド技術はどれですか?
ようこそ。それが立っているように、質問には本当に多くの情報がありませんし、意味のある答えを提供できるほど具体的でもありません。 "より速い/より良い"のような質問は、[良い質問とはみなされません](http://stackoverflow.com/help/dont-ask)です。 [*私はどのように良い質問をしますか](http://stackoverflow.com/help/how-to-ask)を見て、それに応じてあなたの質問を再構成してください。 – ardila
私は、DocumentDBに対するHTTP呼び出しの待ち時間を長くするネットワーク境界に関連する問題があると考えていました。私はnode.jsをHTTP上でしか話しません。私は私の家から走るとき、最低250msの往復を見ます。しかし、AzureはDocumentDBと同じデータセンターでnode.jsをホストしており、これらの呼び出しからの待ち時間は10ms未満です。私の生産node.js環境がAzureデータセンターにあるので、あまり心配していません。私たちのライブテストとアドホックな探索的な作業にのみ影響します。 –
しかし、.NET側では、直接TCP接続のレイテンシがはるかに短いことを理解しています。 –