使用 table 存储来跟踪用户在网站上的操作

Using table storage to track user actions on website

我正在寻找记录用户在我的 MVC 网站上所做的事情。对于每个控制器操作,我想识别用户,捕获控制器和操作的名称,以及一些文本,用于捕获传入的任何参数的值。

我想在所有这些数据之上放置一个 UI,我可以在其中显示这些记录,按用户过滤,如果可能的话还可以过滤控制器和操作。

A​​zure table 存储是捕获此数据的候选对象吗?如果是这样,理想的结构会是什么样子?在不太了解 table 存储的情况下,我想知道我是否可以使用用户 ID 作为分区键,并连接 rowkey 的控制器和操作:

|PartitionKey|RowKey      |Timestamp       |Parameters  |
|1           |Order/Edit  |2015-08-06T12:00|{orderId: 3}|
|1           |Order/Edit  |2015-08-06T14:55|{orderId: 3}|
|2           |Order/Delete|2015-08-06T13:35|{orderId: 4}|    

例如,如果我想查询单个用户的所有操作,这是否高效?我还应该提一下,我预计会有大约 30,000 名用户,这会对所有唯一分区键造成问题吗?

Azure Table 存储对于按多个不同方面(即:按时间、按用户、按控制器)进行搜索或查询非常糟糕……尤其是涉及大量数据时。对于可以通过特定查找定位的 analytical/math/runtime 数据要好得多。

我会使用 SQL Azure 或者为此尝试使用 DocumentDb。

我会考虑将 Application Insights 添加到您的应用程序,而不是编写代码来捕获此遥测数据。至于此数据之上的 UI,您将能够使用 Azure 门户(预览门户)查看和深入了解应用程序的遥测数据。

可获取有关此服务的更多信息here