我们正处于在现有Web应用程序中构建审计跟踪的设计阶段.该应用程序在
Windows Azure上运行并使用SQL Azure数据库.
审核日志必须由用户或对象类型过滤(例如,显示用户的所有操作,或显示对对象执行的所有操作).
我们必须选择如何存储数据,我们应该使用SQL Azure,还是应该使用表存储?我们更喜欢桌面存储(更便宜)..
但是表存储的“问题”是如何定义分区键.我们的SQL数据库中有几千个客户(应用程序用户),每个客户都在自己的租户中.使用租户ID作为分区键不够具体,因此我们必须向分区键添加内容.所以存在这样的问题:考虑到过滤的要求,我们可以为分区键添加用户ID,以便用户轻松进行过滤,或者我们可以添加对象ID以便按对象轻松过滤.
我们看到两种可能的解决方案:
– 使用SQL Azure而不是表存储
– 使用表存储并使用具有不同分区键的两个表,这意味着我们复制所有条目
任何想法对我们的情况最好的方法是什么?还有其他更好的解决方案吗?
最佳答案 Azure上的DocumentDB可能值得考虑.
https://azure.microsoft.com/en-us/documentation/articles/documentdb-use-cases/
您可以将DocDB中存储的审计跟踪作为JSON文档(用户,活动,对象字段并可以在所有字段上建立索引)