Прежде всего я хочу поблагодарить вас за это замечательное расширение Audit.Net EF
Однако, когда я впервые развернул, я выполнил настройку по умолчанию, поместив все действия аудита в одну таблицу, включая поле JSON.,Теперь я понимаю, что сохранение всех действий в файле JSON - не лучшая практика :), поскольку при этом было сгенерировано 115 ГБ базы данных: D. Поэтому я ищу идеи, как этого избежать и как сделать запросы быстрее.Помещает ли действия аудита в разных полях одной и той же таблицы вместо полей JSON, а удаление поля JSON снизит потребление пространства?Или я должен использовать какой-нибудь гибридный файл Table-> cdn, чтобы лучше сохранить данные аудита на сервере.Или просто игнорировать некоторые объекты или свойства?Это из живой базы данных.После того, как я сделал локальный backp и подключился к моему локальному серверу sql express, это уже не так много места.Где проблема лежит?Это Конфигурация
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
Audit.Core.Configuration.Setup().UseEntityFramework(_ => _.AuditTypeMapper(t => typeof(AuditLog)).AuditEntityAction<AuditLog>((ev, entry, entity) =>
{
entity.AuditData = entry.ToJson();
entity.AuditDate = DateTime.Now;
entity.AuditUser = Environment.UserName;
// entity.AuditUsername = Environment.MachineName;
entity.AuditUsername = HttpContext.Current.User.Identity.Name;
})
.IgnoreMatchedProperties(true));
}
}
Одна запись JSON:
{
"Schema": "dbo",
"Table": "Fan",
"Action": "Insert",
"PrimaryKey": {
"Id": 3357
},
"ColumnValues": {
"Id": 3357,
"Created": "2019-03-19T12:13:58.8376619+01:00",
"LinkedInProfile": "https://www.linkedin.com/in/--------/",
"LinkedInId": "--------",
"SNUrl": "",
"Firstname": "-------",
"Lastname": "--------",
"JobTitle": "Founder",
"ExperienceDescr": "",
"ProfileLocation": "",
"Twitter": "",
"Email": "Miranda@2408.co.uk",
"Phone": "",
"StatusType": 0,
"VerificationType": 0,
"Fullname": "Miranda Acres",
"Profileurl": null,
"Title": null,
"Avatar": null,
"Location": null,
"Address": null,
"Birthday": null,
"Summary": null,
"Phone1": null,
"Phone1type": null,
"Phone2": null,
"Phone2type": null,
"Phone3": null,
"Phone3type": null,
"Messenger1": null,
"Messenger1type": null,
"Messenger2": null,
"Messenger2type": null,
"Messenger3": null,
"Messenger3type": null,
"Website1": null,
"Website2": null,
"Website3": null,
"Organization1": "",
"Organization1Industry": "",
"Organization1Size": "",
"OrganizationTitle1": null,
"OrganizationStart1": null,
"OrganizationEnd1": null,
"OrganizationDescription1": "",
"OrganizationSpecialities1": "",
"OrganizationCountry1": "",
"OrganizationCity1": "",
"OrganizationLIURL1": null,
"OrganizationLIID1": null,
"OrganizationSNProfile1": "",
"OrganizationDomain1": "2408.co.uk",
"Organization2": null,
"Organization2Industry": null,
"Organization2Size": null,
"OrganizationTitle2": null,
"OrganizationStart2": null,
"OrganizationEnd2": null,
"OrganizationDescription2": null,
"OrganizationSpecialities2": null,
"OrganizationLocation2": null,
"OrganizationLIURL2": null,
"OrganizationLIID2": null,
"OrganizationSNProfile2": null,
"OrganizationDomain2": null,
"Organization3": null,
"Organization3Industry": null,
"Organization3Size": null,
"OrganizationTitle3": null,
"OrganizationStart3": null,
"OrganizationEnd3": null,
"OrganizationDescription3": null,
"OrganizationSpecialities3": null,
"OrganizationLocation3": null,
"OrganizationLIURL3": null,
"OrganizationLIID3": null,
"OrganizationSNProfile3": null,
"OrganizationDomain3": null,
"Organization4": null,
"Organization4Industry": null,
"Organization4Size": null,
"OrganizationTitle4": null,
"OrganizationStart4": null,
"OrganizationEnd4": null,
"OrganizationDescription4": null,
"OrganizationSpecialities4": null,
"OrganizationLocation4": null,
"OrganizationLIURL4": null,
"OrganizationLIID4": null,
"OrganizationSNProfile4": null,
"OrganizationDomain4": null,
"Organization5": null,
"Organization5Industry": null,
"Organization5Size": null,
"OrganizationTitle5": null,
"OrganizationStart5": null,
"OrganizationEnd5": null,
"OrganizationDescription5": null,
"OrganizationSpecialities5": null,
"OrganizationLocation5": null,
"OrganizationLIURL5": null,
"OrganizationLIID5": null,
"OrganizationSNProfile5": null,
"OrganizationDomain5": null,
"Organization6": null,
"Organization6Industry": null,
"Organization6Size": null,
"OrganizationTitle6": null,
"OrganizationStart6": null,
"OrganizationEnd6": null,
"OrganizationDescription6": null,
"OrganizationSpecialities6": null,
"OrganizationLocation6": null,
"OrganizationLIURL6": null,
"OrganizationLIID6": null,
"OrganizationSNProfile6": null,
"OrganizationDomain6": null,
"Organization7Industry": null,
"Organization7Size": null,
"OrganizationTitle7": null,
"OrganizationStart7": null,
"OrganizationEnd7": null,
"OrganizationDescription7": null,
"OrganizationSpecialities7": null,
"OrganizationLocation7": null,
"OrganizationLIURL7": null,
"OrganizationLIID7": null,
"OrganizationSNProfile7": null,
"OrganizationDomain7": null,
"Education1": null,
"EducationDegree1": null,
"EducationFOS1": null,
"EducationGrade1": null,
"EducationStart1": null,
"EducationEnd1": null,
"EducationDescription1": null,
"Education2": null,
"EducationDegree2": null,
"EducationFOS2": null,
"EducationGrade2": null,
"EducationStart2": null,
"EducationEnd2": null,
"EducationDescription2": null,
"Education3": null,
"EducationDegree3": null,
"EducationFOS3": null,
"EducationGrade3": null,
"EducationStart3": null,
"EducationEnd3": null,
"EducationDescription3": null,
"Skills": null,
"Followers": null,
"Relationship": null,
"Connectedat": null,
"Industry": null,
"Conversation": false,
"SuperFan": false,
"Notes": null
},
"Valid": true,
"ValidationResults": []
}
Мне нужнокакая-то стратегия, заключающаяся в том, чтобы в первую очередь обрабатывать процессы аудита, чтобы получать обычные объемы данных в базе данных; запросы являются вторичными, поскольку мы часто не запрашиваем базу данных.
Заранее спасибо!