Audit.net EF Поле JSON по умолчанию для одной таблицы занимает много места - PullRequest
1 голос
/ 01 мая 2019

Прежде всего я хочу поблагодарить вас за это замечательное расширение Audit.Net EF

Однако, когда я впервые развернул, я выполнил настройку по умолчанию, поместив все действия аудита в одну таблицу, включая поле JSON.,Теперь я понимаю, что сохранение всех действий в файле JSON - не лучшая практика :), поскольку при этом было сгенерировано 115 ГБ базы данных: D.Data Space Usage per Table Поэтому я ищу идеи, как этого избежать и как сделать запросы быстрее.Помещает ли действия аудита в разных полях одной и той же таблицы вместо полей 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));
        }
    }

AuditLog Table

Одна запись 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": []

}

Мне нужнокакая-то стратегия, заключающаяся в том, чтобы в первую очередь обрабатывать процессы аудита, чтобы получать обычные объемы данных в базе данных; запросы являются вторичными, поскольку мы часто не запрашиваем базу данных.

Заранее спасибо!

...