Мы находимся на этапе проектирования для создания контрольного журнала в существующем веб-приложении. Приложение работает на Windows Azure и использует базу данных SQL Azure.Как хранить данные аудита в Azure
Журналы аудита должны быть отфильтрованы пользователем или по типу объекта (например, показать все действия пользователя или показать все действия, выполняемые над объектом).
Нам нужно выбрать способ хранения данных, следует ли использовать SQL Azure или использовать табличное хранилище? Мы предпочитаем хранение таблиц (дешевле).
Однако проблема с хранилищем таблиц заключается в том, как определить ключ раздела. У нас несколько тысяч клиентов (пользователей приложений) в нашей базе данных SQL, каждая из которых находится в собственном арендаторе. Использование идентификатора арендатора в качестве ключа раздела недостаточно специфично, поэтому нам нужно добавить что-то к ключу раздела. Таким образом, возникает проблема: учитывая требования к фильтрации, мы можем добавить идентификатор пользователя к ключу раздела, чтобы сделать фильтрацию пользователем простой, или мы можем добавить идентификатор объекта, чтобы упростить фильтрацию по объекту.
Итак, мы видим два возможных решения:
- использовать SQL Azure вместо хранения таблицы
- использование для хранения таблицы и использовать две таблицы с разными ключами разделов, что означает, что мы дублируем всех записей
Любые идеи, что это лучший подход к нашей ситуации? Есть ли другие, лучшие решения?
Вы пытаетесь провести аудит только операций с базами данных SQL, таких как DDL, DML..или все пользовательские взаимодействия. – TheGameiswar
Мы хотим сохранить определенные события (операции CRUD), эти события могут возникать на данных SQL, но также и на данных blob (у нас есть много сериализованных данных в блоках) – Hanno
Если все ваши аудиторские «записи» будут соответствовать критериям размера в хранилище таблиц (1 МБ), я бы предположил, что это почти предпочтение и как вы хотите иметь к ним доступ. Я бы лично пошел на SQL Azure, если команда знакома с SQL/SQL Server и имеет в виду обработку [параллелизм с хранилищем таблиц] (https://azure.microsoft.com/en-us/documentation/articles/storage-concurrency/# management-concurrency-in-the-table-service) –