我们是 ASP.NET MVC 框架和 SQL Server 的快乐用户,目前使用的是 LINQ-to-SQL。它通过面向消费者的应用程序很好地满足了我们的需求,该应用程序每月约有 140 万用户和 2+ 百万活跃唯一用户。
我们早就应该开始记录所有用户操作(文章查看、我们网站上的搜索等),并且我们正在尝试确定正确的架构来做到这一点。
我们希望归档系统是它自己的实体,而不是存储生产文章和搜索引擎的主 SQL 集群的一部分。我们希望它成为自己的 SQL 集群,一开始只有一个盒子。
为了简化问题,假设我们只想记录这数百万用户在当月进入我们网站的搜索词,并且我们希望以尽可能少的周期密集型方式进行。
我的问题:(1)是否有异步方式将搜索词转储到远程框?LINQ 是否支持异步?
(2) 您是否建议在 RAM 缓存中构建一个包含 1,000 个(userId、searchTerm、日期)日志项的缓存,然后每隔一段时间将这些日志项刷新到数据库中?我认为这种方法会减少打开/关闭连接。
还是我认为这完全错误?我们希望在易于实施和稳健性之间取得平衡。