現在LINQ-to-SQLを使用しているASP.NETMVCフレームワークとSQLServerのユーザーに満足しています。これは、月に約140万人のユーザーと200万人以上のアクティブなユニーク数を持つ消費者向けアプリケーションで私たちのニーズを十分に満たします。
すべてのユーザーアクション(記事の表示、サイトでの検索など)のログ記録を開始するのはかなり遅れており、そのための適切なアーキテクチャを調査しようとしています。
アーカイブシステムは、本番記事と検索エンジンを格納するメインのSQLクラスターの一部ではなく、独自のエンティティである必要があります。最初は1つのボックスから始めて、独自のSQLクラスターにする必要があります。
問題を単純化するために、これらの数百万人のユーザーがその月にサイトに入力した検索用語をログに記録したいとします。これは、サイクルを最小限に抑えた方法で行います。
私の質問:(1)検索語をリモートボックスにダンプする非同期の方法はありますか?LINQはこれに対して非同期をサポートしていますか?
(2)たとえば1,000(userId、searchTerm、date)のログ項目のキャッシュをRAMキャッシュに構築し、それらを定期的にデータベースにフラッシュすることをお勧めしますか?この方法では、オープン/クローズ接続が削減されると思います。
それとも私はこれを完全に間違っていると考えていますか?実装のしやすさと堅牢性のバランスを取りたいと考えています。